ywh-jfellus/CVE-2026-9082

GitHub: ywh-jfellus/CVE-2026-9082

Stars: 1 | Forks: 1

# CVE-2026-9082 / Drupal SA-CORE-2026-004 Proof of Concept ## Overview A Proof-of-Concept (`poc.py`) of [CVE-2026-9082](https://nvd.nist.gov/vuln/detail/CVE-2026-9082) (Drupal [SA-CORE-2026-004](https://www.drupal.org/sa-core-2026-004)), a critical SQL injection vulnerability in Drupal core that may allow an attacker to submit arbitrary SQL queries when Drupal is configured to use a PostgreSQL database backend. It stems from Drupal core's PostgreSQL entity-query condition translator, where array keys in an entity query `IN` filter can be manipulated by an attacker to inject arbitrary SQL fragments. This PoC interacts with Drupal’s JSON:API layer, injecting a malformed SQL condition that results in an HTTP 500 Internal Server Error in vulnerable versions, while patched versions correctly sanitize query keys and prevent the exception. ## Vulnerability Information - **CVE ID:** CVE-2026-9082 - **SA-CORE ID:** SA-CORE-2026-004 - **CVSS Score:** 6.5 (MEDIUM) - **CVSS Vector:** CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - **Category:** SQL injection - **Impact:** Authentication bypass, information disclosure, privilege escalation, remote code execution (depending on configuration) - **Affected Versions (Drupal core):** - `>= 8.9.0, < 10.4.10` - `>= 10.5.0, < 10.5.10` - `>= 10.6.0, < 10.6.9` - `>= 11.0.0, < 11.1.10` - `>= 11.2.0, < 11.2.12` - `>= 11.3.0, < 11.3.10` ## Reproduction lab Simply run make We provide a docker-compose reproduction lab using : * Vulnerable version: Drupal 10.4.9 + PostgreSQL 16 * Patched version: Drupal 11.2.12 + PostgreSQL 16 Both setups come with: * JSON:API enabled and publicly accessible at `/jsonapi/node/article` without authentication (common configuration in many Drupal sites) * A single `article` node to ensure that `/jsonapi/node/article` filtering realistically works The site files and DB content is already prepared in `sites.tar.gz` and `init.sql.gz` At the time of writing, Drupal 11.2.12 isn't available yet on Docker Hub, so we build a custom image installed with composer