Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as DB role with TEMPORARY privilege
-
ExploitDefine anonymization function with SQL-standard body
-
ExecutionFunction bound at declaration, evading Anonymizer checks
-
ImpactRetrieve unmasked sensitive data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Protection mechanism completeness
|
| Exploitation Conditions | Exploitation requires an authenticated PostgreSQL role that holds the TEMPORARY privilege on a deployment using the PostgreSQL Anonymizer extension for dynamic masking. The specific trigger is defining an anonymization function with a SQL-standard function body: PostgreSQL analyses (binds) such bodies at declaration time whereas Anonymizer only attempts its safety check at execution time, so the function bypasses Anonymizer's validation. Limiting factors: the attacker must already possess a database account with TEMPORARY privilege (not anonymous access), and only environments running Anonymizer versions prior to 3.3.0 are affected; the vendor fix in 3.3.0 and later resolves the mismatch. |
| Impact | This is a moderate-priority confidentiality flaw, not an emergency. The CVSS 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) reflects a network-reachable but authenticated issue: the attacker must already hold a PostgreSQL role with the TEMPORARY privilege, which bounds the population of potential exploiters to existing low-privileged database users rather than anonymous internet attackers. The single H is on confidentiality (bypass of the anonymization/masking protection, consistent with CWE-693 Protection Mechanism Failure), with no integrity or availability impact. Signals are consistent rather than conflicting: the vuln.today decision label is 'this_month' (routine patch-cycle urgency, not act_now/emergency), there is no CISA KEV listing, no EPSS score was supplied, and no public exploit is identified - so there is no evidence of active or widespread exploitation. The gap between a network attack vector and a prerequisite of an existing privileged account is the key nuance: realistic risk is driven by how many semi-trusted users have TEMPORARY privilege on databases that rely on Anonymizer for masking, not by raw CVSS alone. |
| Exploit ScenarioDerived | A low-privileged but authenticated database user who holds the TEMPORARY privilege defines an anonymization function using a SQL-standard function body. Because PostgreSQL binds such bodies at declaration time while Anonymizer only validates them at execution time, the user's function escapes Anonymizer's safety checks and can be used to read data that should have remained masked. No public exploit is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Confidentiality exposure in PostgreSQL Anonymizer (Dalibo) before 3.3.0 lets an authenticated database role that holds the TEMPORARY privilege defeat the extension's dynamic-masking validation by defining an anonymization function with a SQL-standard function body, so masked data can be read rather than anonymized. Only deployments running the extension in versions prior to 3.3.0 are affected; the mismatch is resolved in 3.3.0 and later. Severity is rated 6.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) with high confidentiality impact but no integrity or availability effect, and no public exploit code or confirmed active exploitation was identified at time of analysis.
RemediationAI
Upgrade PostgreSQL Anonymizer to 3.3.0 or later, which is the vendor-released fix that resolves the declaration-time versus execution-time validation mismatch; the reference at https://gitlab.com/dalibo/postgresql_anonymizer/-/issues/718 should be reviewed for the exact release guidance, and the extension should be updated and the ALTER EXTENSION path applied on each database where it is installed. Because exploitation requires an authenticated role holding the TEMPORARY privilege, tightening who is granted TEMPORARY is a compensating control that reduces exposure on systems that cannot be upgraded immediately, at the cost of breaking legitimate workflows that rely on temporary tables for those roles; note that this limits reachability of the flaw but does not correct the underlying validation bypass. No other workaround is documented in the available sources, so upgrading remains the complete fix.
Affected VersionsENISA
Affected Packages
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 is a Dalibo extension that provides dynamic masking and anonymization for PostgreSQL, and it relies on its own checks to confirm that user-defined anonymization functions are safe before they are used to mask data. The flaw is classified as CWE-693 (Protection Mechanism Failure) and stems from a timing mismatch between PostgreSQL's own function handling and the extension's validation: for functions declared with a SQL-standard function body, PostgreSQL analyses (binds) the body at declaration time, whereas Anonymizer only attempts its safety check at execution time. Because the two stages do not align, the validation can be bypassed and the protection mechanism the extension is supposed to enforce is not applied. The affected component is tracked by CPE cpe:2.3:a:dalibo:postgresql_anonymizer, covering all versions prior to the 3.3.0 fix. Exploitation requires an authenticated PostgreSQL role holding the TEMPORARY privilege, which bounds the threat to users who already have a database account with that grant.
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Reachable over the database connection (AV:N, AC:L) but requires an authenticated role with TEMPORARY privilege (PR:L); impact is disclosure of masked data only, so C:H and I:N/A:N.
Primary rating from Vendor (PostgreSQL).
CVSS VectorVendor: PostgreSQL
Lifecycle Timeline
1DescriptionCVE.org
PostgreSQL Anonymizer contains a vulnerability related to anonymization functions defined using SQL-standard function bodies. PostgreSQL analyses such functions at declaration time, while Anonymizer only attempts to check them at execution time. This problem can be exploited by any user with the TEMPORARY privilege. The issue is fixed in PostgreSQL Anonymizer 3.3.0 and later versions.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in PostgreSQL
View allPostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() improperl
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
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
Unauthenticated arbitrary file write in Splunk Enterprise (below 10.2.4 and 10.0.7) and Splunk Cloud Platform (below 10.
Unauthenticated SQL injection in Sangoma Switchvox SMB Edition 8.3 (build 104997) lets remote attackers execute arbitrar
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
The build_tablename function in pgsql.c in the PostgreSQL (aka pgsql) extension in PHP through 5.6.7 does not validate t
A vulnerability in the h2oai/h2o-3 REST API versions 3.46.0.4 allows unauthenticated remote attackers to execute arbitra
In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_serve
Unauthenticated SQL injection in Vendure Shop API allows remote attackers to execute arbitrary SQL commands against the
Parse Server is an open source http web server backend. Rated critical severity (CVSS 10.0), this vulnerability is remot
Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al
EUVD-2026-112294
GHSA-w66q-cxj5-99hv
NVD
CVE.org
Exploit-DB