Skip to main content

PostgreSQL Anonymizer EUVDEUVD-2026-72142

| CVE-2026-19634 MEDIUM
SQL Injection (CWE-89)
2026-09-06 PostgreSQL GHSA-65m7-qhmp-8j4v
6.4
CVSS 3.1 · Vendor: PostgreSQL
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain regular database user access
  2. Delivery
    Craft JSON rules document with SQL-injected object name
  3. Exploit
    Store malicious document where superuser will import it
  4. Execution
    Induce superuser to call anon.import_database_rules() or anon.import_roles_rules()
  5. Persist
    Injected SQL executes with superuser privileges
  6. Impact
    Full PostgreSQL instance compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the attacker to hold at minimum a regular PostgreSQL user account with the ability to create or modify a JSON document that a superuser will subsequently import using anon.import_database_rules() or anon.import_roles_rules(). The PostgreSQL Anonymizer extension must be installed and the import workflow must be actively used. Exploitation is limited by three concrete factors: (1) the attacker must have write access to contribute the malicious JSON rules document; (2) a superuser must actively invoke one of the two import functions after the malicious document is planted - this is a required user-interaction step and cannot be forced remotely; and (3) the extension must be deployed and the import functions must be part of the operational workflow. Default PostgreSQL installations without the extension installed are not affected.

Impact

The vendor-supplied CVSS score of 6.4 (AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:H) reflects the multi-step nature of the attack and the dependency on superuser interaction. However, the PR:H metric appears inconsistent with the description, which states that 'a user' - not a superuser - creates the malicious JSON; this suggests PR:L is more accurate for the attacker's initial step, which would push the base score toward 7.5. This discrepancy should be verified with Dalibo. The AC:H and UI:R metrics are well-grounded: exploitation requires the attacker to successfully plant a document that a superuser will later import, creating an indirect, social-engineering-dependent exploitation path. There is no EPSS data or CISA KEV listing available, and no public exploit has been identified, indicating no confirmed active exploitation at time of analysis. Practical risk is elevated in deployments where database roles are loosely separated and untrusted users can contribute or modify anonymization rule files.

Exploit ScenarioDerived

An attacker with a regular database account creates a JSON anonymization rules document in which one object name (e.g., a column identifier) contains embedded SQL such as a COPY command or a superuser password-change statement. During a routine anonymization configuration refresh, a database superuser calls anon.import_database_rules() to load the new rules; the injected SQL executes with superuser privileges, granting the attacker the ability to read all data, modify any table, or create backdoor superuser accounts.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 06, 2026

SQL injection in PostgreSQL Anonymizer's anon.import_database_rules() and anon.import_roles_rules() functions enables privilege escalation to superuser-level code execution within PostgreSQL. A low-privileged database user plants a malicious JSON rules document containing crafted object names (such as schema, table, or column identifiers); when a superuser subsequently invokes either import function, the injected SQL executes with superuser privileges, yielding full database compromise. The vendor has released a fix in version 3.1.4; no public exploit has been identified at time of analysis.

RemediationAI

Upgrade PostgreSQL Anonymizer to version 3.1.4 or later, which contains the vendor-released patch; the fix is tracked in the GitLab issue at https://gitlab.com/dalibo/postgresql_anonymizer/-/issues/665. If immediate upgrade is not possible, restrict write access to any JSON rules documents that a superuser would import via these functions - specifically, ensure untrusted or semi-trusted database users cannot create or modify anonymization rule sets destined for import. As a compensating control, audit all JSON rule documents for suspicious object names before any superuser invokes the import functions, and confine use of anon.import_database_rules() and anon.import_roles_rules() to controlled, administrator-only maintenance windows with reviewed inputs only. Disabling or removing the PostgreSQL Anonymizer extension entirely removes exposure if anonymization workflows can be paused.

Affected VersionsENISA

PostgreSQL Anonymizer 1 <3.1.4

Affected Packages

euvd postgresql_anonymizer fix: 3.1.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

PostgreSQL Anonymizer (CPE: cpe:2.3:a:dalibo:postgresql_anonymizer) is a PostgreSQL extension maintained by Dalibo that implements data masking and anonymization rules for GDPR and similar compliance scenarios. The import functions anon.import_database_rules() and anon.import_roles_rules() accept JSON documents describing anonymization rule sets and dynamically construct SQL from the parsed JSON object names. The root cause (CWE-89, SQL Injection) is the failure to properly sanitize or parameterize JSON-supplied identifiers - schema names, table names, column names - before embedding them into SQL statements. Because PostgreSQL cannot bind identifiers as parameters the way it binds values, safe identifier quoting (e.g., using quote_ident()) must be applied explicitly. Omitting this allows an attacker-controlled string to break out of the identifier context and inject arbitrary SQL. The injected SQL inherits the privilege level of the calling session, which in this workflow is a superuser.

Know when PostgreSQL gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (PostgreSQL) PRIMARY 6.4 MEDIUM
AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 7.1 HIGH

Attacker is described as 'a user' (PR:L, not superuser); superuser must actively call import function (UI:R, AC:H); full CIA impact once injected SQL runs as superuser.

3.1 AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (PostgreSQL).

CVSS VectorVendor: PostgreSQL

Attack Vector
Network
Attack Complexity
High
Privileges Required
High
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

1
Patch available
Sep 06, 2026 - 17:01 EUVD

DescriptionCVE.org

PostgreSQL Anonymizer contains a SQL injection vulnerability in two import functions. A user can create a malicious JSON document containing specially crafted object names. If a superuser subsequently calls anon.import_database_rules() or anon.import_roles_rules(), the malicious code is executed with superuser privileges. The issue is fixed in PostgreSQL Anonymizer 3.1.4 and later

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche PostgreSQL extension targeting GDPR/data-anonymization compliance deployments
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Total

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

CVE-2025-1094 HIGH POC
8.1 Feb 13

PostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() improperl

CVE-2024-55964 CRITICAL POC
9.8 Mar 26

An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl

CVE-2013-1899 MEDIUM POC
6.5 Apr 04

Argument injection vulnerability in PostgreSQL 9.2.x before 9.2.4, 9.1.x before 9.1.9, and 9.0.x before 9.0.13 allows re

CVE-2026-20253 CRITICAL POC
9.8 Jun 10

Unauthenticated arbitrary file write in Splunk Enterprise (below 10.2.4 and 10.0.7) and Splunk Cloud Platform (below 10.

CVE-2026-9586 CRITICAL POC
9.3 Jul 17

Unauthenticated SQL injection in Sangoma Switchvox SMB Edition 8.3 (build 104997) lets remote attackers execute arbitrar

CVE-2017-7546 CRITICAL
9.8 Aug 16

PostgreSQL versions before 9.2.22, 9.3.18, 9.4.13, 9.5.8 and 9.6.4 are vulnerable to incorrect authentication flaw allow

CVE-2015-1352 MEDIUM POC
5.0 Mar 30

The build_tablename function in pgsql.c in the PostgreSQL (aka pgsql) extension in PHP through 5.6.7 does not validate t

CVE-2024-10553 CRITICAL POC
9.8 Mar 20

A vulnerability in the h2oai/h2o-3 REST API versions 3.46.0.4 allows unauthenticated remote attackers to execute arbitra

CVE-2019-9193 HIGH POC
7.2 Apr 01

In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_serve

CVE-2026-40887 CRITICAL POC
9.1 Apr 14

Unauthenticated SQL injection in Vendure Shop API allows remote attackers to execute arbitrary SQL commands against the

CVE-2022-24760 CRITICAL POC
10.0 Mar 12

Parse Server is an open source http web server backend. Rated critical severity (CVSS 10.0), this vulnerability is remot

CVE-2025-56157 CRITICAL POC
9.8 Dec 18

Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy