Skip to main content

PostgreSQL Anonymizer EUVDEUVD-2026-112289

| CVE-2026-105617 MEDIUM
Information Exposure (CWE-200)
2026-10-28 PostgreSQL GHSA-pmmg-m528-xf29
6.5
CVSS 3.1 · Vendor: PostgreSQL
View

Attack ChainAIDerived

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

  1. Access
    Hold authenticated DB session
  2. Delivery
    Prepare query plan before masking applies
  3. Exploit
    Admin adds masking rule or changes role
  4. Execution
    Reuse stale prepared plan
  5. Impact
    Read unmasked sensitive data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

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

Exploitation Conditions

Requires an authenticated database session that prepared a query plan BEFORE a masking rule was added or the session's role was changed to a masked one; because PostgreSQL Anonymizer fails to invalidate those cached plans, the session keeps returning unmasked data until it ends. Limiting factors: the attacker/observer must already have a live database connection, must have a prepared statement that predates the masking configuration change, and the masking rule or role change must occur mid-session - fresh sessions and newly prepared plans are masked correctly, so default new connections are not affected. The only complete fix per the vendor is upgrading to PostgreSQL Anonymizer 3.3.0 or later.

Impact

This is a moderate, defense-in-depth data-exposure flaw rather than a high-priority external threat. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N, base 5.7) formally scores PR:N (unauthenticated), but the mechanism in the description contradicts a network-unauthenticated reading: the only party who benefits is an existing database session that holds a query plan prepared before a masking rule was added or a role was changed - i.e. an authenticated, already-connected database user whose own masked session keeps returning unmasked rows until it ends. The CVSS PR:N therefore overstates exposure; realistically this requires an authenticated session (verify auth model with vendor). Exploitation status: no KEV listing, no EPSS value supplied, and the sole reference is the Dalibo GitLab issue tracker (issue #695), which is not verified working exploit code - so this is 'no public exploit identified at time of analysis.' The vuln.today decision label is 'this_month,' consistent with a confidentiality-only, access-limited weakness that should be patched on a normal maintenance cycle rather than as an emergency. Net: a genuine but bounded information-disclosure bug affecting masked-data guarantees, not a widely weaponizable remote vulnerability.

Exploit ScenarioDerived

In an environment using PostgreSQL Anonymizer to mask sensitive columns, a user establishes a session and prepares a query plan while masking does not yet apply to them. An administrator then adds a masking rule or changes the user's role to a masked one, but the previously prepared plan is never invalidated, so the user continues executing it and keeps reading the real, unmasked data until the session closes. No public exploit code exists; triggering it only requires the user to keep reusing the stale prepared statement within the same session.

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

PostgreSQL Anonymizer fails to invalidate query plans that were prepared before a masking rule was added or before the session's role was changed, so an already-connected session can keep returning unmasked data until that session ends. Exposure requires an authenticated database session (PR:L per the assessed vector) holding a prepared plan that predates the masking configuration change; fresh sessions and newly prepared plans are masked correctly, which limits this to a defense-in-depth data-exposure issue rather than an external threat. The vendor-resolved issue is fixed in PostgreSQL Anonymizer 3.3.0 and later; no public exploit was identified at time of analysis and there is no KEV entry.

RemediationAI

Upgrade PostgreSQL Anonymizer to 3.3.0 or later - the vendor states this is the only complete fix, and it addresses the missing plan invalidation directly; see the upstream issue at https://gitlab.com/dalibo/postgresql_anonymizer/-/issues/695 for tracking. Because the flaw only affects sessions whose prepared plans predate a masking rule addition or a session role change to a masked role, deployments that cannot patch immediately can reduce exposure by recycling database connections and re-preparing statements after any masking rule or role change, since fresh sessions and newly prepared plans are masked correctly per the available analysis; the trade-off is operational disruption from forced connection churn and the need to re-establish prepared statements, and this is a stopgap rather than a substitute for the upgrade.

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

The affected component is the Dalibo PostgreSQL Anonymizer extension (CPE cpe:2.3:a:dalibo:postgresql_anonymizer), which enforces masking through masking rules applied to tables and columns and through role-based masked/unmasked behavior inside a PostgreSQL instance. PostgreSQL caches prepared statement plans for the life of a session, and the extension does not force those cached plans to be discarded when a masking rule is added or when the session's role is switched to a masked one; the stale plan therefore continues to execute the pre-change (unmasked) path. The weakness maps to CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): data that policy says should be masked remains readable by a session that should no longer see it. The problem is scoped to sessions that already hold such plans - the sources do not describe any other trigger path, and per the vendor the only complete remedy is upgrading to 3.3.0 or later.

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:N/UI:R/S:U/C:H/I:N/A:N
vuln.today AI 5.3 MEDIUM

Requires an authenticated masked database role (PR:L) and a specific timing condition where a plan was prepared before a mid-session masking/role change (AC:H); confidentiality-only impact (C:H, I/A:N).

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/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
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
CVSS changed
Oct 28, 2026 - 18:22 NVD
5.7 (MEDIUM) 6.5 (MEDIUM)
Patch available
Oct 28, 2026 - 18:18 EUVD

DescriptionCVE.org

PostgreSQL Anonymizer doesn't invalidate plans prepared after a rule was added or a role changed. Users using such plans can still see the unmasked data until the end of the session. 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 deployment 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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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