Skip to main content

PostgreSQL Anonymizer EUVDEUVD-2026-112292

| CVE-2026-105620 MEDIUM
Missing Authorization (CWE-862)
2026-10-28 PostgreSQL GHSA-mvh5-mj42-8xc9
6.5
CVSS 3.1 · Vendor: PostgreSQL
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as masked database role
  2. Exploit
    Query table governed by sub-query masking rule
  3. Execution
    Masking engine skips sub-query output
  4. Impact
    Read unmasked sensitive data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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

Exploitation Conditions

Requires (1) the PostgreSQL Anonymizer extension deployed with dynamic/role-based masking in use, (2) at least one masking rule defined using a sub-query, and (3) an attacker holding an authenticated database account mapped to a masked/anonymized role (PR:L). The flaw does not apply to default installs without sub-query-based masking rules. Limiting factors: the account must already be authenticated to PostgreSQL, impact is confined to disclosure of data that masking was meant to protect (no integrity or availability effect), and deployments running version 3.3.0 or later are not affected.

Impact

This is a moderate-severity, confidentiality-only issue rather than a top-priority emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, base 6.5) indicates a network-reachable, low-complexity flaw that requires an authenticated low-privilege database account (PR:L) and yields a high confidentiality impact with no integrity or availability effect - consistent with a data-masking bypass that leaks protected values. The vuln.today decision label is 'this_month', not 'act_now' or 'emergency', so urgency is elevated-but-routine. No CISA KEV listing and no EPSS score were provided, and the single reference is the vendor's GitLab issue tracker entry (a bug report, not working exploit code), so there is no public exploit identified at time of analysis and no evidence of active exploitation. The input 'Authentication Bypass' tag is misleading: CWE-862 (Missing Authorization) and the description describe a masking/authorization bypass where masked data is disclosed, not a bypass of login/authentication. Net: a real but bounded data-exposure risk, scoped to deployments that actually use masking rules containing sub-queries and to users who already hold a (masked) database role.

Exploit ScenarioDerived

An analyst or application account that has been granted access only to masked/anonymized views of a PostgreSQL database runs a query that exercises a masking rule defined with a sub-query; because the sub-query result is not masked, the account receives the real underlying sensitive values instead of the anonymized ones. No public exploit code was identified; the only reference is the vendor's GitLab issue. Exploitation requires a valid low-privilege database session and a deployment whose masking rules use sub-queries.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Data masked by PostgreSQL Anonymizer can be disclosed in cleartext when a masking rule is implemented through a sub-query: the outer result set is anonymized, but rows returned by the nested query are not, so a database account mapped to a masked role can read values the rule was meant to hide. Only deployments that use dynamic/role-based masking with at least one sub-query-based masking rule are exposed; the attacker must already hold an authenticated PostgreSQL account mapped to a masked role (PR:L), and the impact is confidentiality-only, with no integrity or availability effect. The issue is fixed in PostgreSQL Anonymizer 3.3.0 and later; no public exploit code has been identified at time of analysis, and this is a moderate-severity issue suitable for the monthly patch cycle rather than an emergency response.

RemediationAI

Upgrade PostgreSQL Anonymizer to 3.3.0 or later, which is the version the project states resolves the flaw; confirm the installed extension version in each database with \dx (or pg_available_extensions) and run ALTER EXTENSION postgresql_anonymizer UPDATE after installing the new binaries. Because the bypass only manifests through masking rules written as sub-queries, operators who cannot upgrade immediately should review pg_anonymizer-style rule definitions, identify rules defined with a sub-query, and rewrite them as direct column-level masking rules (or temporarily remove those rule sets) - the trade-off is loss of the more flexible query-based masking logic and possible change in masked output for those columns. Limiting masked/anonymized role membership to accounts that genuinely need it reduces the number of principals able to exercise the bypass, at the cost of tighter role administration; note that this narrows exposure but does not close it, and that the vendor's complete fix is the 3.3.0 release. Additional tracking detail is available at https://gitlab.com/dalibo/postgresql_anonymizer/-/issues/698.

Affected VersionsENISA

PostgreSQL Anonymizer 1 <3.3.0

Affected Packages

euvd postgresql_anonymizer fix: 3.3.0

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 static anonymization) inside PostgreSQL, letting administrators attach masking rules to tables or roles so that less-privileged roles see pseudonymized values while privileged roles see originals. This finding maps to CWE-862 (Missing Authorization): the masking rule is not consistently enforced across query layers, so when a masking rule is defined using a sub-query, the authorization/masking check applied to the outer query is not propagated into the nested query, and the sub-query's result set is returned unmasked. The assessed vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) reflects that the flaw is reachable over the network by an authenticated account with low privileges and needs no user interaction, with high confidentiality impact but no scope change or integrity/availability effect. The trigger for the bypass is a query whose masking rule references a sub-query - the specific query shapes required beyond that are not described in the available sources. Default installations that do not use sub-query-based masking rules are not affected, and deployments running 3.3.0 or later are not affected.

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.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

Authenticated low-privilege DB user (PR:L) over the network (AV:N) reliably retrieves unmasked data via a sub-query rule; confidentiality-only (C:H, I/A:N), scope unchanged.

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

Primary rating from Vendor (PostgreSQL).

CVSS VectorVendor: PostgreSQL

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

Lifecycle Timeline

1
Patch available
Oct 28, 2026 - 18:18 EUVD

DescriptionCVE.org

PostgreSQL Anonymizer doesn't mask data returned by a sub-query in a rule. The problem is resolved in PostgreSQL Anonymizer 3.3.0 and later versions.

Threat Intelligence Overview

Prevalence
Low
niche PostgreSQL data-masking extension, limited production footprint
Data Quality
3 sources
Confidence: Low

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 N/A
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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