- شناسه CVE-2026-9082 :CVE
- CWE-89 :CWE
- yes :Advisory
- منتشر شده: می 20, 2026
- به روز شده: می 22, 2026
- امتیاز: 9.8
- نوع حمله: SQL Injection
- اثر گذاری: Information Disclosure
- حوزه: سیستم مدیریت محتوا
- برند: Drupal
- محصول: Drupal
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
این آسیبپذیری بحرانی در Drupal core از نوع SQL Injection است که در اثر خنثیسازی نامناسب المنتهای ویژه در دستورات SQL رخ میدهد. این ضعف امنیتی میتواند به مهاجم از راه دور اجازه دهد با ارسال درخواستهای دستکاریشده، در فرآیند اجرای کوئریهای پایگاه داده مداخله کرده و دستورات دلخواه SQL را اجرا کند. اکسپلویت موفق از این آسیبپذیری میتواند منجر به افشای اطلاعات حساس، افزایش سطح دسترسی (Privilege Escalation) و در برخی پیکربندیها اجرای کد از راه دور (RCE) شود.
توضیحات
آسیبپذیری CVE-2026-9082 یک ضعف امنیتی بحرانی از نوع SQL Injection مطابق با CWE-89 است. این نوع آسیبپذیری زمانی رخ میدهد که دادههای ورودی کاربر بدون اعتبارسنجی و خنثیسازی مناسب وارد دستورات SQL شوند و مهاجم بتواند ساختار کوئریهای پایگاه داده را تغییر دهد. در چنین شرایطی، دادههای ارسالشده توسط کاربر بهعنوان بخشی از منطق اصلی کوئری تفسیر شده و امکان اجرای دستورات دلخواه در پایگاه داده فراهم میشود.
نمونه کد اثبات مفهومی (PoC) منتشرشده نشان میدهد که این ضعف از طریق لایه JSON:API قابل آزمایش است. JSON: API یک رابط برنامهنویسی کاربردی (API) استاندارد در Drupal است که امکان دسترسی به دادههای سایت از طریق درخواستهای HTTP را فراهم میکند. پژوهشگران امنیتی نشان دادهاند که با ارسال فیلترهای دستکاریشده به Endpointهای مبتنی بر JSON:API، نسخههای آسیبپذیر در پردازش درخواست دچار خطای داخلی سرور با کد HTTP 500 میشوند. در حالی که نسخههای پچشده ورودیهای مخرب را بهدرستی اعتبارسنجی و پاکسازی کرده و از اجرای دستورات SQL تزریقشده جلوگیری میکنند.
بررسیهای فنی منتشرشده همراه با PoC نشان میدهد منشأ این آسیبپذیری در PostgreSQL Entity Query Condition Translator قرار دارد. این بخش از رابط دسترسی به پایگاه داده (Database Abstraction API) در Drupal وظیفه تبدیل درخواستهای Entity Query به کوئریهای قابل اجرا در PostgreSQL را بر عهده دارد. Entity Query یکی از مکانیزمهای اصلی Drupal برای جستجو و بازیابی دادهها از موجودیتها (Entities) مانند محتوا، کاربران و دستهبندیها است. طبق تحلیل پژوهشگران امنیتی، مشکل زمانی ایجاد میشود که این بخش در هنگام پردازش فیلترهای IN، کلیدهای آرایه (Array Keys) را بهدرستی اعتبارسنجی و پاکسازی نمیکند. در نتیجه، مهاجم میتواند با دستکاری این مقادیر، بخشهایی از دستورات SQL کنترلشده توسط خود را وارد ساختار کوئریهای پایگاه داده کند. این موضوع باعث میشود ورودی مهاجم بهعنوان بخشی از منطق معتبر SQL پردازش شده و امکان اجرای کوئریهای دلخواه در پایگاه داده فراهم شود.
این ضعف بهسادگی قابل خودکارسازی است؛ مهاجم میتواند با استفاده از اسکریپتها یا ابزارهای خودکار، درخواستهای مخرب را از راه دور و بدون نیاز به تعامل کاربر ارسال کند. همچنین بر اساس بردار CVSS منتشرشده، سوءاستفاده از این آسیبپذیری از طریق شبکه، بدون نیاز به احراز هویت امکانپذیر است. این ویژگیها موجب شدهاند سوءاستفاده از این ضعف در مقیاس گسترده امکانپذیر باشد. علاوه بر این، سازمان امنیت سایبری و امنیت زیرساخت آمریکا (CISA) این آسیبپذیری را در فهرست KEV قرار داده و در ارزیابی SSVC نیز وضعیت اکسپلویت فعال و قابلیت خودکارسازی برای آن ثبت شده است.
این آسیبپذیری در صورت موفقیت حمله، تأثیرات امنیتی گستردهای بر سه اصل اصلی امنیت اطلاعات شامل محرمانگی (Confidentiality)، یکپارچگی (Integrity) و دسترسپذیری (Availability) دارد. مهاجم میتواند به اطلاعات حساس ذخیرهشده در پایگاه داده دسترسی پیدا کند، دادهها را تغییر داده یا حذف کند و محدودیتهای امنیتی موجود را دور بزند. همچنین بر اساس اطلاعات منتشرشده در PoC و هشدار CISA، این ضعف در برخی پیکربندیها میتواند زمینهساز اجرای کد از راه دور (RCE) شود.
Drupal برای رفع این آسیبپذیری نسخههای 10.4.10، 10.5.10، 10.6.9، 11.1.10، 11.2.12 و 11.3.10 را منتشر کرده است. با این حال، برخی از شاخههای قدیمیتر از جمله Drupal 8، Drupal 9 و تعدادی از شاخههای Drupal 10 و Drupal 11 به وضعیت پایان عمر (End-of-Life) رسیدهاند و دیگر بهروزرسانیهای امنیتی عادی دریافت نمیکنند. بنابراین، علاوه بر نصب پچ امنیتی، مهاجرت به نسخههای پشتیبانیشده برای حفظ امنیت بلندمدت سامانه ضروری است.
CVSS
| Score | Severity | Version | Vector String |
| 9.8 | CRITICAL | 3.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |

شکل 1: تفسیر جدول CVSS
لیست محصولات آسیب پذیر
| Versions | Product |
| from 8.9.0 before 10.4.10
from 10.5.0 before 10.5.10 from 10.6.0 before 10.6.9 from 11.0.0 before 11.1.10 from 11.2.0 before 11.2.12 from 11.3.0 before 11.3.10 |
Drupal core |
لیست محصولات بروز شده
| Versions | Product |
| 10.4.10
10.5.10 10.6.9 11.1.10 11.2.12 11.3.10 |
Drupal core |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که Drupal core را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google (Total Pages) | Search Query (Dork) | Product |
| 124,000 | site:.ir “Drupal “ | Drupal |
| 1,760 | site:.ir “Drupal core” | Drupal core |
نتیجه گیری
این آسیبپذیری یکی از بحرانیترین ضعفهای منتشرشده در Drupal core است، زیرا تزریق SQL از راه دور و بدون احراز هویت را در مسیرهای پردازش داده فراهم میکند و میتواند بسته به معماری استقرار، منجر به افشای اطلاعات، تغییر دادهها، دور زدن کنترلهای امنیتی، افزایش سطح دسترسی و حتی اجرای کد از راه دور شود. با توجه به ثبت این CVE در CISA KEV و وجود PoC عمومی، ریسک سوءاستفاده عملی از آن بسیار بالاست و هر سازمانی که از Drupal استفاده میکند باید آن را در اولویت فوری قرار دهد. برای کاهش ریسک، اقدامات زیر توصیه میشود:
- بهروزرسانی فوری Drupal Core: تمامی سامانههای آسیبپذیر باید در اسرع وقت به نسخههای 4.10، 10.5.10، 10.6.9، 11.1.10، 11.2.12 یا 11.3.10 بهروزرسانی شوند. این اقدام مؤثرترین و مهمترین راهکار برای رفع آسیبپذیری است. سایر راهکارهای امنیتی نقش مکمل داشته و میتوانند ریسک سوءاستفاده از این آسیبپذیری و تهدیدات مشابه را کاهش دهند.
- مهاجرت از نسخههای در وضعیت پایان عمر: سازمانهایی که همچنان از Drupal 8، Drupal 9 یا سایر نسخههای در وضعیت پایان عمر استفاده میکنند باید در کوتاهترین زمان ممکن به نسخههای پشتیبانیشده مهاجرت کنند، زیرا این نسخهها علاوه بر این آسیبپذیری ممکن است دارای ضعفهای امنیتی پچنشده دیگری نیز باشند.
- محدودسازی دسترسی به JSON:API: در صورتی که استفاده از JSON ضروری نیست، دسترسی به آن محدود یا غیرفعال شود. همچنین دسترسی به Endpointهای عمومی باید بر اساس نیاز واقعی کنترل شود.
- استفاده از فایروال اپلیکیشن وب (WAF): پیادهسازی WAF میتواند بسیاری از الگوهای شناختهشده حملات تزریق SQL را شناسایی و مسدود کند و بهعنوان یک لایه دفاعی تکمیلی عمل نماید.
- مانیتورینگ و تحلیل رخدادهای امنیتی: لاگهای مربوط به درخواستهای غیرعادی، خطاهای پایگاه داده و فعالیتهای مشکوک باید در سامانه مدیریت رخداد و اطلاعات امنیتی (SIEM) بهصورت مستمر مانیتور شوند.
- استفاده از سامانه تشخیص نفوذ (IDS) و سامانه جلوگیری از نفوذ (IPS): این سامانهها میتوانند الگوهای شناختهشده حملات SQL Injection را شناسایی کرده و در برخی موارد از ادامه حمله جلوگیری کنند.
- جداسازی سرویسهای حساس: پایگاه داده، سرورهای کاربردی و سایر سرویسهای حیاتی باید تا حد امکان از طریق جداسازی شبکه (Network Segmentation) از یکدیگر تفکیک شوند تا حرکت جانبی مهاجم محدود گردد.
اجرای این اقدامات، بهویژه نصب نسخههای پچ شده Drupal، میتواند احتمال سوءاستفاده موفق از این آسیبپذیری را به میزان قابل توجهی کاهش دهد.
امکان استفاده در تاکتیکهای Mitre Attack (در زمان اجرای حمله)
Initial Access (TA0001)
مهاجم بدون نیاز به احراز هویت و تنها با ارسال یک درخواست HTTP ساده (معمولاً از طریق نقاط پایانی JSON:API به آدرسهایی مانند /user/login?_format=json یا فیلترهای /jsonapi) میتواند به پایگاه داده سرور دسترسی پیدا کند. این آسیبپذیری به طور خاص سایتهای دروپالی را هدف قرار میدهد که از پایگاه داده PostgreSQL استفاده میکنند
- Execution (TA0002)
پس از ارسال درخواست حاوی کلیدهای آرایه دستکاری شده، آسیبپذیری تزریق SQL فعال میشود. مهاجم میتواند با دور زدن لایه انتزاعی پایگاه داده (Database Abstraction API) که وظیفه خنثیسازی ورودیها را بر عهده دارد، دستورات دلخواه SQL را بر روی سرور PostgreSQL اجرا کند. کد اثبات مفهوم (PoC) قابلیت استخراج داده، تغییر اطلاعات کاربران، و در برخی پیکربندیها (در صورت داشتن دسترسی superuser پایگاه داده توسط اپلیکیشن)، اجرای کد از راه دور (RCE) از طریق دستوراتی مانند COPY … TO PROGRAM را دارد
- Privilege Escalation (TA0004)
با تزریق SQL موفق، مهاجم میتواند دادههای جداول کاربران را دستکاری کند. این کار به او اجازه میدهد تا بدون نیاز به دانستن رمز عبور، برای حساب کاربری خود نقش مدیریتی (مدیر سایت) ایجاد کند یا رمز عبور کاربران سطح بالا (مانند Admin) را تغییر دهد. پس از تبدیل شدن به مدیر سایت، مهاجم کنترل کاملی بر کل سیستم مدیریت محتوا پیدا میکند و میتواند کد دلخواه PHP را در وبسرور اجرا کند
- Defense Evasion (TA0005)
درخواست HTTP مخرب میتواند به گونهای طراحی شود که شبیه به ترافیک عادی JSON:API (که در نسخههای جدید دروپال به طور پیشفرض فعال است) به نظر برسد و از شناسایی توسط سیستمهای تشخیص نفوذ مبتنی بر امضا (Signature-based IDS) که قادر به تشخیص حملات تزریق SQL در ساختار پیچیده JSON نیستند، جلوگیری کند. همچنین مهاجم میتواند از تکنیکهای Time-based Blind SQL Injection (مانند تابع pg_sleep) استفاده کند که در لاگها کمتر ردیابی میشود
- Impact (TA0040)
بهرهبرداری موفق از این آسیبپذیری منجر به نقض کامل محرمانگی و یکپارچگی دادهها میشود و مهاجم قادر به:
- سرقت کامل پایگاه داده: از جمله اطلاعات کاربری (Hashes)، نشستهای کاربری (Sessions)، محتوای خصوصی و اطلاعات تجاری.
- باجافزاری و تخریب دادهها: حذف یا رمزگذاری جداول حیاتی پایگاه داده.
تغییر محتوا (Defacement) و سئوی مخرب: تغییر محتوای وبسایت، هدایت ترافیک کاربران به سایتهای فیشینگ یا تزریق لینکهای مخرب.
- اجرای کامل کد (RCE): در صورتی که کاربر پایگاه داده دروپال دارای نقش SUPERUSER در PostgreSQL باشد (که یک پیکربندی ناایمن محسوب میشود)، مهاجم میتواند مستقیماً دستورات سیستم عامل را روی سرور اجرا کند و دسترسی کامل بگیرد
منابع
- https://www.cve.org/CVERecord?id=CVE-2026-9082
- https://www.cvedetails.com/cve/CVE-2026-9082/
- https://www.drupal.org/sa-core-2026-004
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-9082
- https://vuldb.com/vuln/364930
- https://github.com/ywh-jfellus/CVE-2026-9082
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-9082
- https://nvd.nist.gov/vuln/detail/CVE-2026-9082
- https://cwe.mitre.org/data/definitions/89.html
گزارش اثبات آسیبپذیری CVE-2026-9082
اطلاعات آسیبپذیری
عنوان: تزریق SQL در لایه Database Abstraction API در هسته دروپال (Drupal Core)
شناسه: CVE-2026-9082
وضعیت مشاوره: Advisory / Patch Available
امتیاز: CVSS: 9.8 (CRITICAL)
محصول: Drupal Core
محصول / نسخههای آسیبپذیر
در نسخههای زیر:
- Drupal 8.9.0 – 10.4.9
- Drupal 10.5.0 – 10.5.9
- Drupal 10.6.0 – 10.6.8
- Drupal 11.0.0 – 11.1.9
- Drupal 11.2.0 – 11.2.11
- Drupal 11.3.0 – 11.3.9
نکته: این آسیبپذیری تنها روی نصبهایی که از پایگاه داده PostgreSQL استفاده میکنند قابل بهرهبرداری است. سامانههای مبتنی بر MySQL، MariaDB و SQLite تحت تأثیر مستقیم این نقص قرار نمیگیرن
محیطهای درگیر
- وبسایتها و سامانههای مبتنی بر Drupal Core که از PostgreSQL استفاده میکنند
- محیطهایی که ماژول JSON:API فعال دارند
- سازمانهایی که سرویسهای عمومی خود را روی Drupal و PostgreSQL پیادهسازی کردهاند
کامپوننتهای آسیبپذیر
- Drupal Core Database Abstraction API
- PostgreSQL Driver
- Entity Query Subsystem – فایل core/modules/pgsql/src/EntityQuery/Condition.php
- JSON:API Request Processing Components
- JSON:API filter syntax
- Query Builder Logic
- Placeholder Generation Mechanism – تابع translateCondition
- فایل core/lib/Drupal/Core/Entity/Query/Sql/Condition.php، فایل پایه Condition که ورودی را به backend ارسال میکند
- اندپوینت /user/login?_format=json – نقطه ورود JSON که داده نام را بدون اعتبارسنجی میپذیرد
ریشه مشکل (Root Cause Analysis)
ریشه اصلی این آسیبپذیری به نحوه پردازش کلیدهای آرایه (Array Keys) کنترلشده توسط کاربر در لایه Database Abstraction API بازمیگردد.
در طراحی Drupal، مقادیر ورودی کاربران از طریق Prepared Statements ایمنسازی میشوند، اما در برخی مسیرهای پردازش PostgreSQL، کلیدهای آرایهای ارسالشده توسط کاربر بهصورت مستقیم در فرآیند تولید Placeholder های SQL مورد استفاده قرار میگیرند.
در شرایط خاص، مهاجم میتواند با ارسال درخواستهای ساختارشده حاوی کلیدهای مخرب در پارامترهای Filter، باعث شود بخشی از Query نهایی بدون خنثیسازی مناسب وارد دستور SQL شود. در نتیجه امکان تزریق دستورات SQL دلخواه فراهم میشود. کلیدهای مهاجم میتوانند وارد فرآیند ساخت Query شوند و منجر به تولید ساختار SQL ناامن گردند.
بخش آسیبپذیر
رفتار ناامن سیستم:
سیستم در هنگام پردازش درخواستهای خاص JSON:API و برخی Query های مبتنی بر PostgreSQL، بخشی از ساختار SQL را با استفاده از دادههایی میسازد که بهطور کامل اعتبارسنجی نشدهاند این رفتار باعث میشود مهاجم بتواند Query های دلخواه را به پایگاه داده تزریق کند و به دادههای حساس دسترسی پیدا کند یا دستورات SQL را اجرا نماید.
نحوه سوءاستفاده مهاجم:
- مهاجم هیچگونه حساب کاربری نیاز ندارد
- مهاجم یک درخواست HTTP به صورت JSON با استفاده از متد POST به آدرس /user/login?_format=json ارسال می کند که حاوی شی name با مقدار دو کلید “0” به همراه id نام کاربری معتبر و یک رشته مخرب حاوی کد SQL به همراه یک subquery است
- Drupal Query این درخواست را پردازش کرده و حلقه آسیبپذیر یک placeholder به نام :users_field_data_name0||1/(SELECT … ) میسازد
- PostgreSQL Query، placeholder ساخته شده را فقط تا users_field_data_name0 میخواند و بقیه را به عنوان دستور SQL خام اجرا میکند
- مهاجم با تغییر subquery، میتواند هر دادهای را از پایگاه داده استخراج کند (مانند هش رمز عبور مدیر، کلیدهای API، محتوای خصوصی)
نقش این آسیبپذیری در زنجیره حمله
این آسیبپذیری یک نقطه ورود اولیه (Initial Access) بسیار خطرناک و یک ابزار استخراج داده (Data Exfiltration) کامل در زنجیره حمله محسوب میشود. با توجه به درجهبندی دروپال (20 از 25 – Highly Critical)، ماهیت بدون نیاز به احراز هویت، و امکان دسترسی از طریق اینترنت، مهاجم میتواند بدون تعامل کاربری، کل پایگاه داده دروپال را تخلیه کند. در برخی محیطها، در صورت وجود تنظیمات ناامن یا ماژولهای جانبی خاص، امکان تبدیل این نقص به افزایش سطح دسترسی، اجرای کد از راه دور (RCE) یا در اختیار گرفتن کامل سامانه نیز وجود دارد.
پیشنیازهای بهرهبرداری (Prerequisites)
- نصب نسخه آسیبپذیر Drupal Core
- استفاده از PostgreSQL به عنوان Backend Database
- دسترسی مهاجم به وبسایت هدف از طریق شبکه
- وجود Endpoint های قابل دسترس مانند JSON:API
- عدم نصب وصله امنیتی
رفتار مورد انتظار در حالت امن (Expected Secure Behavior)
- آرایه $condition[‘value’] باید قبل از ورود به حلقه با array_values به اندیسهای عددی متوالی تبدیل شود تا کلیدهای مهاجم حذف گردند
- دادههای کنترلشده توسط کاربر نباید در ساختار Query SQL استفاده شوند
- کلیدهای آرایهای باید قبل از استفاده اعتبارسنجی شوند
- Query Builder باید فقط دادههای Whitelist شده را بپذیرد
- هیچ بخشی از Query نباید از ورودی خام کاربر ساخته شود
- استفاده از Prepared Statements باید شامل تمامی اجزای Query باشد، نه فقط مقادیر آن
راهکارها و کاهش ریسک (Mitigation / Patch Guidance)
اقدامات فوری برای کاهش ریسک:
- بهروزرسانی Drupal به نسخههای اصلاحشده منتشرشده توسط Drupal Security Team
- اعمال Advisory شماره SA-CORE-2026-004
- اگر امکان بهروزرسانی فوری وجود ندارد، سایت را به طور موقت از دسترس خارج کنید یا دسترسی به مسیرهای آسیبپذیر را محدود نمایید
اقدامات کوتاهمدت / میانمدت برای کاهش ریسک:
- محدودسازی دسترسی به Endpointهای JSON:API
- استفاده از WAF برای شناسایی الگوهای SQL Injection
- محدود کردن دسترسی به /user/login?_format=json در سطح وب سرور (مثلاً با IP whitelist)
- مانیتورینگ درخواستهای مشکوک
اقدامات بلندمدت برای کاهش ریسک:
- استقرار راهکارهای خودکار بهروزرسانی امنیتی (Patch Management) برای اعمال سریع وصلهها
- پیادهسازی فرآیندهای منظم تست نفوذ
- آموزش تیمهای عملیاتی و امنیتی در خصوص خطرات نقض امنیتی هسته
- پیادهسازی Web Application Firewall (WAF)
تشخیص و مانیتورینگ (Detection & Monitoring)
نشانههای تلاش برای سوءاستفاده:
- درخواستهای غیرعادی به JSON:API
- پارامترهای Filter با ساختارهای پیچیده و غیرمعمول
- افزایش خطاهای PostgreSQL
- مشاهده Query های غیرمنتظره در لاگ پایگاه داده
- افزایش ناگهانی حجم استخراج داده
- افزایش ناگهانی ترافیک خروجی
منابع پیشنهادی برای مانیتورینگ و پایش:
- PostgreSQL Logs
- Web Server Access Logs
- WAF Logs – با قابلیت تشخیص JSON payload های مخرب
- راهکارهای SIEM، برای جمعآوری و تحلیل مرکزی لاگها
واکنش به حادثه (Incident Response)
- ایزولهسازی فوری سامانه آسیبدیده
- جمعآوری لاگهای وب و پایگاه داده
- بررسی دسترسیهای غیرمجاز
- بررسی ایجاد حسابهای کاربری مشکوک
- تغییر رمزهای عبور کاربران
- نصب فوری وصله امنیتی
- بررسی احتمال استخراج اطلاعات
- مستندسازی کامل حادثه (زمان وقوع، نشانهها، اقدامات انجامشده، درسآموختهها) و گزارش به مدیریت ارشد و تیم واکنش سریع (CSIRT)
جریان حمله (Attack Flow)
در نمودار زیر (شکل ۱)، مهاجم از طریق ارسال یک درخواست HTTP ویژه به Endpoint آسیبپذیر Drupal، دادههای مخرب را در پارامترهای Filter قرار میدهد. این دادهها وارد Database Abstraction API شده و در فرآیند تولید Query مربوط به PostgreSQL مورد استفاده قرار میگیرند. به دلیل اعتبارسنجی ناکافی کلیدهای آرایه، ساختار SQL دچار دستکاری شده و دستورات تزریقشده توسط مهاجم اجرا میشوند. در نتیجه مهاجم میتواند دادههای حساس را استخراج کرده و در برخی شرایط میتواند کل سامانه را در اختیار بگیرد..

شکل 1: جریان اجرای آسیب پذیری
اثبات مفهوم (PoC) — کاملاً غیرمخرب
آزمایشگاه تخصصی Vulnerbyte، این آسیبپذیری را در محیط ایزوله و کنترلشده با استفاده از نسخه آسیبپذیر بررسی و اجرا کرده است
- این آزمایشگاه شامل نسخه آسیبپذیر Drupal Core به همراه PostgreSQL است
- فایل CVE-2026-9082.py برای ارسال درخواستهای آزمایشی و بررسی رفتار آسیبپذیر سامانه مورد استفاده قرار گرفت
- اجرای PoC در محیط آزمایشگاهی منجر به تأیید امکان تزریق SQL در سامانه آسیبپذیر شد.
- این اثبات مفهوم صرفاً توصیفی و آموزشی بوده و شامل تغییرات مخرب نمیشود

شکل 2: اجرای POC
رفع مسئولیت
این گزارش صرفاً با هدف آموزش، تحلیل فنی و ارتقای امنیت سازمانی تهیه شده است. هرگونه استفاده مخرب یا خارج از چارچوبهای قانونی از محتوای آن ممنوع است.
منابع
https://www.cve.org/CVERecord?id=CVE-2026-9082
https://nvd.nist.gov/vuln/detail/CVE-2026-9082
https://cwe.mitre.org/data/definitions/89.html
https://www.drupal.org/sa-core-2026-004
https://github.com/dinosn/drupal-sa-core-2026-004-lab
https://github.com/7h30th3r0n3/CVE-2026-9082-Drupal-PoC
https://github.com/ridhinva/CVE-2026-9082
Drupal Core
CVE-2026-9082 – SQL Injection Vulnerability via Database Abstraction API Leading to Information Disclosure and Potential Remote Code Execution
Affects
- Drupal Core (Content Management System)
- Versions:
- Drupal 8.9.0 (end-of-life, exceptional patch available)
- Drupal 9.0.x (end-of-life, exceptional patch available)
- Drupal 10.4.9 and below
- Drupal 10.5.0 – 10.5.9
- Drupal 10.6.0 – 10.6.8
- Drupal 11.0.0 – 11.1.9
- Drupal 11.2.0 – 11.2.11
- Drupal 11.3.0 – 11.3.9
- Components:
- Database Abstraction API
- PostgreSQL EntityQuery condition handler
- Files:
core/lib/Drupal/Core/Database/Driver/pgsql/– PostgreSQL driver components
- Functions:
- PostgreSQL EntityQuery condition handling logic
NOT VULNERABLE:
- Drupal sites not using PostgreSQL databases (MySQL, MariaDB, SQLite are safe)
- Drupal 7.x
Description
CVE-2026-9082 is a critical SQL injection vulnerability in Drupal Core’s database abstraction API, specifically affecting the PostgreSQL EntityQuery condition handler .
Drupal’s database abstraction API is designed to sanitize and parameterize all database queries before they reach the backend database, preventing SQL injection attacks . However, a flaw exists where user-controlled PHP array keys can reach SQL placeholder construction without proper sanitization .
The vulnerable code in the PostgreSQL driver allows specially crafted array keys in API requests to bypass the intended query sanitization. When an unauthenticated attacker sends a crafted request containing specific array structures as filter parameters, these unsanitized keys flow directly into the construction of SQL placeholder names . The attacker can then inject arbitrary SQL commands into the generated query.
The issue is triggered through two primary unauthenticated attack paths:
- The JSON login endpoint (
/user/login?_format=json) - The JSON:API filter syntax (e.g.,
/jsonapi/node/articleendpoints)
Drupal fixed this vulnerability by applying the array_values() function, which strips attacker-supplied keys and replaces them with safe numeric indexes .
The vulnerability is specific to PostgreSQL-backed Drupal deployments .
Attack Vector
Primary Attack Vector:
Remote / Unauthenticated (Network Access)
Attack Scenario:
- An attacker identifies a Drupal site running on a PostgreSQL database backend (version detection or trial and error) .
- The attacker sends a specially crafted HTTP request to an unauthenticated endpoint, such as:
/user/login?_format=json(JSON login endpoint)/jsonapi/node/articlewith crafted filter parameters
- The crafted request includes malicious array keys in the JSON payload (e.g.,
0) OR 1=1--,_)) AND 1=1--, or array keys containing PostgreSQL functions likepg_sleep()for time-based detection) . - Drupal’s PostgreSQL EntityQuery condition handler processes these unsanitized array keys, allowing them to flow into the construction of SQL placeholder names .
- The injected SQL commands execute against the PostgreSQL database with the web application’s database privileges.
Key Characteristics:
- No authentication required – Anonymous users can exploit
- No user interaction required – Zero-click exploitation
- Exploitable over network via HTTP
- Database-specific vulnerability – Only affects PostgreSQL deployments
- Two identified unauthenticated trigger paths – JSON login endpoint and JSON:API filter syntax
Conditions Increasing Risk:
- Public-facing Drupal sites with PostgreSQL backend
- Default configuration unchanged
- No Web Application Firewall (WAF) in place
- Lack of network segmentation
- Legacy or end-of-life Drupal versions (8.9, 9.5) still in production
Impact
Successful exploitation allows:
- Arbitrary SQL command execution against the PostgreSQL database
- Information disclosure – Attackers can dump sensitive database contents, including user credentials, session tokens, and private content
- Data modification or deletion – Attackers can alter or destroy database content
- Privilege escalation – Depending on database privileges and configuration, attackers can elevate their access within the Drupal application
- Remote code execution – In certain configurations, successful SQL injection can lead to remote code execution on the underlying server (e.g., through PostgreSQL’s
COPYprogram functionality or user-defined functions)
The impact is complete database compromise on affected PostgreSQL-backed Drupal sites, with potential for full server takeover in certain configurations.
Observed Exploitation & Threat Activity
- Public Disclosure: May 20, 2026 (SA-CORE-2026-004)
- Patch Availability: Included with disclosure
- Public PoC: A detection PoC and reproduction lab were published on the same day as disclosure; the patch diff was shared publicly within hours
- In-the-Wild Exploitation:
- No confirmed exploitation observed as of May 21, 2026 (Drupal advisory describes exploit status as “Theoretical”)
- However, over 15,000 attack attempts were detected targeting nearly 6,000 individual sites across 65 countries within days of disclosure
- Attack activity currently appears to be probing and reconnaissance rather than active exploitation
- Primary Targets: Gaming (26%) and Financial Services (23%) sectors
- Attack Patterns: JSON:API filter probes, time-based SQL injection using
pg_sleep(), UNION-style probes - Historical Context: Drupal has a well-documented history of critical vulnerabilities (e.g., Drupalgeddon – CVE-2018-7600, CVE-2018-7602) that experienced rapid mass exploitation; similar behavior is expected for CVE-2026-9082
Severity & Metrics
- CVSS v3.1 (CISA-ADP): Medium (6.5)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
Drupal’s Internal Risk Rating: 20/25 (“Highly Critical”)
Drupal rates this vulnerability significantly higher than the NVD CVSS score, noting that the confidentiality impact includes “all non-public data accessible” and the integrity impact is “all data modifiable or deletable” . Given the unauthenticated attack vector and potential for privilege escalation/RCE, the Drupal risk rating better reflects the potential severity for affected PostgreSQL configurations .
Relevant CWE:
- CWE-89 – Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)
- CWE-20 – Improper Input Validation
Patch & Vendor Status
- Official Patches Available: Yes – included in Drupal Security Advisory SA-CORE-2026-004 (May 20, 2026)
- Fixed Versions:
| Affected Version | Fixed Version |
|---|---|
| Drupal 8.9.0 | Manual patch (EOL – exceptional release) |
| Drupal 9.0.x | Manual patch (EOL – exceptional release) |
| Drupal 10.4.0 – 10.4.9 | 10.4.10 (EOL – exceptional release) |
| Drupal 10.5.0 – 10.5.9 | 10.5.10 |
| Drupal 10.6.0 – 10.6.8 | 10.6.9 |
| Drupal 11.0.0 – 11.1.9 | 11.1.10 (EOL – exceptional release) |
| Drupal 11.2.0 – 11.2.11 | 11.2.12 |
| Drupal 11.3.0 – 11.3.9 | 11.3.10 |
- Drupal Steward customers received advanced signature protection prior to public disclosure
- Important Note: The security release also includes coordinated upstream security updates for Symfony and Twig. Even sites not using PostgreSQL should update to address these separate framework vulnerabilities
Mitigation & Remediation
Immediate Actions
- Update Drupal core immediately to the appropriate patched version for your branch
- For Drupal 8.9 or 9.5 sites (end-of-life), apply the hotfix files published by Drupal for versions 8.9.20 or 9.5.11
- If patching cannot be applied immediately:
- Disable public access to affected endpoints (JSON login and JSON:API)
- Restrict access to authenticated users only where possible
- Deploy a Web Application Firewall (WAF) with SQL injection detection rules
- Temporarily isolate affected Drupal implementations until patches can be applied
Defensive Measures
- Migrate from PostgreSQL to MySQL/MariaDB if feasible (though patching is the preferred solution)
- Deploy a WAF – Imperva reports that WAF customers are protected against exploitation attempts
- Enable Drupal Steward if available for your Drupal distribution
- Monitor database access logs for suspicious SQL patterns, especially those containing:
pg_sleep()function callsOR 1=1patterns- UNION statements
- Unusual array key structures in JSON requests
- Review and restrict JSON:API access – Disable JSON:API if not required
- Implement network segmentation for Drupal application servers
Detection & Hunting
Indicators of Attempted Exploitation:
- HTTP requests containing crafted array keys such as:
0),0)) OR 1=1--_) AND 1=1--- Array keys with embedded parentheses and SQL operators
- Requests to
/user/login?_format=jsonwith unusual JSON structures - Requests to
/jsonapi/node/*endpoints with suspicious filter parameters - POST/PATCH requests containing
nuclei_sa_core_2026_004,nuclei-probe, ornuclei-probe-missmarkers (indicating automated scanning with Nuclei templates) - Time-based SQL injection attempts using PostgreSQL functions like
pg_sleep(5) - Unexpected database errors in application logs related to SQL syntax
- Unusual outbound database connections or queries from the Drupal application
Log Analysis:
- Check web server access logs for the patterns above, focusing on POST requests to
/user/login?_format=jsonand/jsonapi/endpoints - Review Drupal watchdog logs for database error entries
- Monitor PostgreSQL query logs for suspicious queries containing user-controlled array keys
Observed Attack Attempts (Post-Disclosure):
- Over 15,000 attack attempts across 65 countries
- Primary targets: Gaming (26%) and Financial Services (23%)
- Most activity appears to be scanning/probing rather than active exploitation
Post-Incident Response
If exploitation is suspected:
- Isolate affected system from the network immediately to prevent data exfiltration or lateral movement
- Preserve forensic evidence (web server logs, Drupal logs, PostgreSQL query logs, network captures)
- Rotate all credentials and secrets stored in or accessible from the compromised database (user passwords, API keys, session tokens)
- Audit database for unauthorized changes – Review recent INSERT, UPDATE, DELETE operations
- Check for backdoors – Review Drupal modules, user accounts with administrative privileges, and recently added files in web root
- Assume full compromise – Do not simply change passwords; the attacker may have escalated privileges
- Rebuild system from a trusted backup or clean installation after applying patches
References
- https://www.drupal.org/sa-core-2026-004
- https://nvd.nist.gov/vuln/detail/CVE-2026-9082
- https://www.tenable.com/blog/cve-2026-9082-highly-critical-sql-injection-vulnerability-in-drupal-core-sa-core-2026-004
- https://www.imperva.com/blog/imperva-customers-protected-against-cve-2026-9082-in-drupal-core/
- https://socprime.com/blog/cve-2026-9082-analysis/
- https://security.berkeley.edu/news/drupal-core-sql-injection-vulnerability-cve-2026-9082
- https://cwe.mitre.org/data/definitions/89.html
بررسی آماری آسیب پذیری CVE-2026-9082 در کشور ایران
محصول آسیب پذیر: هسته دروپال (Drupal Core) – نسخههای 8.9.0 تا 11.3.9 که از پایگاه داده PostgreSQL استفاده میکنند
میزان استفاده در ایران بر اساس سایت های آمار مرتبط با محصول
دروپال به عنوان یکی از سیستمهای مدیریت محتوای قدرتمند و امن در جهان، سهم قابل توجهی از وبسایتهای سازمانی، دولتی و دانشگاهی ایران را به خود اختصاص داده است. این سیستم به ویژه در وبسایتهای با امنیت بالا و نیازمندیهای پیچیده، محبوبیت زیادی دارد.
میزان استفاده در ایران بر اساس موتورهای جستجو (بر اساس ایندکس های گوگل در بخش tools)
تعداد در زمان نگارش گزارش
| موتور جستجو | Dork | تعداد |
| site:.ir “Drupal” “PostgreSQL | 14,300 | |
| site:.ir “Drupal” | 148,000 | |
| “دروپال” + “PostgreSQL” | 39,000 |
وجود نمایندگی در ایران
دروپال به عنوان یک پروژه متنباز (open-source) توسط انجمن دروپال (Drupal Association) توسعه و پشتیبانی میشود. این انجمن دفتر رسمی یا نمایندگی در ایران ندارد. کاربران ایرانی برای دریافت بهروزرسانیها و پشتیبانی از دروپال، عمدتاً به انجمنهای آنلاین و شرکتهای ارائهدهنده خدمات میزبانی داخلی وابسته هستند. هیچ گونه پشتیبانی رسمی از طرف شرکت سازنده در کشور وجود ندارد.
میزان استفاده بر اساس گزارشات تحقیقات بازار برای این محصول در ایران
اگرچه آمار رسمی و دقیقی از تعداد سیستمهای آسیبپذیر در ایران وجود ندارد، اما شواهد زیر نشاندهنده سطح قابل توجه ریسک است.
- استفاده از دروپال در ایران: دروپال به عنوان یکی از سه سیستم مدیریت محتوای اصلی در ایران، در هزاران وبسایت سازمانی، دولتی، دانشگاهی و خبری مورد استفاده قرار میگیرد. بر اساس برآوردهای غیررسمی، بیش از ۱۰,۰۰۰ وبسایت ایرانی از دروپال استفاده میکنند. از این تعداد، بخش قابل توجهی ممکن است از PostgreSQLبه عنوان پایگاه داده استفاده کنند، به ویژه پروژههای بزرگ و سازمانی که نیاز به قابلیتهای پیشرفته PostgreSQLدارند.
- محبوبیت PostgreSQLدر بین توسعهدهندگان حرفهای: اگرچه MySQLمحبوبترین پایگاه داده در ایران است، اما PostgreSQLدر سالهای اخیر به دلیل قابلیتهای پیشرفته، انطباق با استانداردهای SQLو امنیت بالاتر، مورد توجه ویژه توسعهدهندگان حرفهای و سازمانهای بزرگ قرار گرفته است. مقالات آموزشی متعدد و مستندات فارسی درباره استفاده از PostgreSQLبا دروپال در وبسایتهای تخصصی ایرانی منتشر شده است.
- تخمین میزان استفاده: با توجه به تعداد وبسایتهای دروپال در ایران و نسبت تخمینی استفاده از PostgreSQL (حدود ۱۵-۲۰٪ از سایتهای دروپال)، میتوان تخمین زد که دست کم ۱,۵۰۰ تا ۲,۰۰۰ وبسایت ایرانی به طور بالقوه در معرض این آسیبپذیری قرار دارند. این موضوع به ویژه با توجه به اینکه این آسیبپذیری از طریق JSON:API (فعال به صورت پیشفرض) و بدون نیاز به احراز هویت قابل بهرهبرداری است و مهاجم میتواند مستقیماً از طریق HTTP به پایگاه داده حمله کند، بسیار نگرانکننده است