← Vulnerability feed

Vulnerability record · CVE-2019-14234 · published 9 August 2019

CVE-2019-14234: Django JSONField and HStoreField SQL injection via key lookups

Djangoproject · Django

Django 1.11.x before 1.11.23, 2.1.x before 2.1.11, and 2.2.x before 2.2.4 mishandle shallow key transformation, leaving key and index lookups on django.contrib.postgres.fields.JSONField and key lookups on HStoreField open to SQL injection. An attacker who can influence the dictionary passed as **kwargs to QuerySet.filter() can inject SQL such as "OR 1=1" through a crafted key or index name. This matters because it breaks the query boundary Django normally enforces on ORM lookups.

9.8 CVSS 3.0 Critical EPSS 48% · top 1.2% CWE-89 · SQL injection
9.8CVSS 3.0 base score, v2 7.5
48%EPSS exploitation probability, 30 days
NoNot in CISA KEV
3Affected product versions listed by NVD
18References
17 Jun 2026Last modified by NVD

Description

An issue was discovered in Django 1.11.x before 1.11.23, 2.1.x before 2.1.11, and 2.2.x before 2.2.4. Due to an error in shallow key transformation, key and index lookups for django.contrib.postgres.fields.JSONField, and key lookups for django.contrib.postgres.fields.HStoreField, were subject to SQL injection. This could, for example, be exploited via crafted use of "OR 1=1" in a key or index name to return all records, using a suitably crafted dictionary, with dictionary expansion, as the **kwargs passed to the QuerySet.filter() function.

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Automated analysis

Generated by VULONE's analysis model from the NVD record, CISA KEV and EPSS data on 20 September 2026. Confidence: high.

high priorityCritical CVSS of 9.8 and very high EPSS, but exploitation requires an application code path that passes untrusted keys into these lookups, and no KEV listing or public exploit is recorded.

What it is

Django 1.11.x before 1.11.23, 2.1.x before 2.1.11, and 2.2.x before 2.2.4 mishandle shallow key transformation, leaving key and index lookups on django.contrib.postgres.fields.JSONField and key lookups on HStoreField open to SQL injection. An attacker who can influence the dictionary passed as **kwargs to QuerySet.filter() can inject SQL such as "OR 1=1" through a crafted key or index name. This matters because it breaks the query boundary Django normally enforces on ORM lookups.

Impact

An attacker can read or manipulate data beyond the intended query scope, for example returning all records instead of a filtered subset. The CVSS vector indicates high confidentiality, integrity and availability impact, so full compromise of the affected database-backed application is possible.

Attack surface

The flaw is reached over the network through application code that passes attacker-influenced keys or indexes into JSONField or HStoreField lookups on QuerySet.filter(). The CVSS vector shows no privileges and no user interaction required, but exploitation depends on the application exposing such a code path to untrusted input.

Exploitation

Not listed in CISA KEV and no ransomware associations are documented. EPSS is high at roughly 0.477 probability over 30 days (98.8th percentile), and references are vendor advisories and distribution notices rather than public exploit write-ups.

What to do

  • Upgrade Django to 1.11.23, 2.1.11, 2.2.4 or later, or apply the distribution backport for your package.
  • Audit application code that builds JSONField or HStoreField lookups from user-supplied keys or indexes and validate or whitelist those values.
  • Avoid passing untrusted dictionaries directly as **kwargs to QuerySet.filter(); construct lookups from a fixed allowlist.
  • Update dependent packages on Fedora, Debian, openSUSE, Gentoo and NetApp products to the fixed versions noted in their advisories.
  • Add regression tests that feed crafted key names into JSONField and HStoreField filters to confirm the fix holds.

Detection

  • Review database query logs for JSONField or HStoreField lookups containing SQL metacharacters or boolean tautologies such as OR 1=1 in key or index positions.
  • Monitor application logs for filter() calls with unexpected or attacker-shaped dictionary keys reaching PostgreSQL-backed endpoints.
  • Check deployed Django versions against the fixed releases and flag any host still running 1.11.x below 1.11.23, 2.1.x below 2.1.11, or 2.2.x below 2.2.4.
  • Alert on anomalous full-table result sets returned from endpoints that normally filter by JSON or HStore keys.

This assessment is produced automatically and is not human-reviewed. Verify against the vendor advisory before acting on it.

Affected products

3 vulnerable configurations from NVD's CPE data, grouped by vendor and product.

References

Track CVE-2019-14234 inside VULONE

Watch it alongside the ransomware crews, C2 infrastructure and forum chatter that reference it, query it through the API and pull it into your SIEM over TAXII.

Start free Open in platform

Related vulnerabilities

Same products first, then exploited flaws of the same weakness class.

10.0CVE-2025-32433Erlang/OTP SSH server missing authentication allows remote code executionErlang/OTP SSH servers before OTP-27.3.3, OTP-26.2.5.11 and OTP-25.3.2.20 mishandle SSH protocol messages, letting an unauthenticated attacker execut…KEVEPSS 99%analysed10.0CVE-2025-24201Apple WebKit out-of-bounds write allows sandbox escapeCVE-2025-24201 is an out-of-bounds write in Apple's WebKit that was addressed with improved checks. Maliciously crafted web content may break out of …KEVEPSS 3.8%analysed10.0CVE-2021-44228Apache Log4j2 JNDI lookup remote code executionApache Log4j2 versions 2.0-beta9 through 2.15.0 (excluding 2.12.2, 2.12.3, and 2.3.1) do not protect against attacker-controlled LDAP and other JNDI …KEVEPSS 100%analysed9.8CVE-2026-24061GNU Inetutils telnetd argument injection allows remote auth bypasstelnetd in GNU Inetutils through 2.7 fails to sanitize the USER environment variable, so a value such as "-f root" is passed as an argument to login …KEVEPSS 99%analysed9.8CVE-2025-39682Linux kernel TLS zero-length record handling flaw on rx_listThe Linux kernel TLS receive path mishandles zero-length records that arrive from the rx_list, breaking the assumption that a record type change cann…KEVEPSS 2.9%analysed9.8CVE-2025-24813Apache Tomcat Default Servlet path equivalence enables RCE and file disclosureApache Tomcat mishandles path equivalence for names containing an internal dot, letting a remote unauthenticated attacker write files through the Def…KEVEPSS 100%analysed9.8CVE-2024-9680Mozilla Firefox and Thunderbird use-after-free in Animation timelinesA use-after-free flaw in Animation timelines allows an attacker to execute code in the content process of Firefox and Thunderbird. Mozilla reports ex…KEVEPSS 23%analysed9.8CVE-2024-4577PHP-CGI on Windows argument injection leads to remote code executionPHP-CGI on Windows can misinterpret characters in the command line passed to Win32 API functions when certain code pages are configured, due to Windo…KEVEPSS 100%analysed

Source: NIST National Vulnerability Database (record CVE-2019-14234), CISA KEV, FIRST EPSS (scores of 2026-09-26). This page is refreshed as NVD updates the record.