Skip to main content

PostgreSQL Anonymizer CVE-2026-105615

| EUVDEUVD-2026-112287 LOW
Exposure of Sensitive Information Through Data Queries (CWE-202)
2026-10-28 PostgreSQL GHSA-g4rr-g8c7-qxh2
3.5
CVSS 3.1 · Vendor: PostgreSQL
View

Attack ChainAIDerived

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

  1. Access
    Obtain masked role with SELECT on table
  2. Exploit
    Query optimizer statistics (pg_stats / histograms, MCVs)
  3. Execution
    Reconstruct limited subset of protected values
  4. Impact
    Disclosure of sensitive data bypassing mask

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V14 - Data Protection Sensitive data in outbound message
Exploitation Conditions

Requires that PostgreSQL Anonymizer be deployed for data masking AND that the attacker already possess a 'masked' database role holding SELECT privilege on the target table. Exploitation works because the table's optimizer statistics (the pg_stats histogram bounds and most-common-value arrays) remain readable to any role with SELECT, regardless of the mask. Limiting factors: the attacker must be an authenticated principal with an assigned masked role (not anonymous/remote-unauthenticated); only a limited subset of values is recoverable (statistical samples, not full rows); and exposure is confined to versions prior to PostgreSQL Anonymizer 3.3.0, which resolves the issue.

Impact

This is a low-severity information-disclosure issue (input CVSS 3.5) in PostgreSQL Anonymizer, not a priority emergency. The vuln.today decision label is 'monitor', consistent with the low score. The attack vector is network (AV:N) but the input vector requires low privileges (PR:L) - exploitation presupposes an attacker who already holds a legitimate 'masked' database role with SELECT privilege, so this is a confidentiality-boundary bypass by an authenticated insider rather than a remote unauthenticated breach. Impact is limited (C:L, I:N, A:N): the masked role can infer a limited subset of underlying values through the optimizer's statistics (histograms and most-common-value lists), not read the full table. No EPSS score, no CISA KEV listing, and no verified exploit code were provided; the single reference is a GitLab issue tracker entry, not a weaponized PoC. One conflict to verify: the input vector carries UI:R (user interaction required), which does not fit a query-driven statistics read performed by the attacking role itself - this independent assessment uses UI:N (see assessed vector). Net: a real but low-urgency privacy-weakening flaw whose practical risk is confined to environments relying on PostgreSQL Anonymizer's dynamic/static masking to protect data from roles that still have SELECT on the masked tables.

Exploit ScenarioDerived

An analyst assigned a 'masked' role is granted SELECT on a table whose sensitive columns are protected by PostgreSQL Anonymizer masking. Instead of reading the (masked) rows, they query the planner statistics exposed for that table and reconstruct a limited subset of the real values from the stored histogram boundaries and most-common-value lists. No public, verified exploit code was provided; only a GitLab issue reference exists.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 before 3.3.0 leaves table optimizer statistics fully readable to any role holding SELECT, so a masked role can recover a limited statistical sample of the very values the mask is supposed to hide. Exploitation requires an authenticated principal that has been assigned a masked database role with SELECT on the target table, and yields only histogram bounds and most-common-value entries rather than full rows, which keeps this at low severity (CVSS 3.5, assessed 3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N). No public exploit has been identified at time of analysis and the issue is not in CISA KEV; the fix ships in PostgreSQL Anonymizer 3.3.0.

RemediationAI

Upgrade PostgreSQL Anonymizer to 3.3.0 or later, which is the vendor-stated resolution for this issue; the fix is applied at the extension level, so verify the installed version after upgrading and re-run any masking-rule deployment. The upgrade advisory and issue thread are at https://gitlab.com/dalibo/postgresql_anonymizer/-/issues/693. If the upgrade cannot be scheduled immediately, the exploitation prerequisite is SELECT on the target table for the masked role: revoking that grant, or narrowing the masked role to masking views that do not expose the base table, removes the path described in this CVE - at the cost of breaking legitimate masked reads for that role until the grant or view design is reworked. No other compensating controls are specified in the available sources, and upgrading remains the only complete fix.

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 implements masking through masking rules, masked roles and masking views built on security-barrier logic. PostgreSQL's planner maintains per-column statistics in the pg_stats catalog view - null fractions, distinct counts, and the histogram bounds and most-common-value (MCV) arrays that summarize the actual data distribution - and those statistics are exposed to any role with SELECT on the underlying table, independent of any masking layer placed on top. The weakness is CWE-202 (Exposure of Sensitive Information Through Data Queries): an attacker who legitimately holds a masked role can query the statistics view and reconstruct an approximation of masked values from the histogram and MCV samples. The exposure is bounded - statistics carry distribution summaries, not row-level data - and is confined to releases prior to 3.3.0, which changes how statistics are surfaced to masked roles.

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 3.5 LOW
AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Authenticated masked role with SELECT is required (PR:L) and no user interaction is needed for a self-issued statistics query (UI:N); only a limited data subset leaks (C:L, I:N, A:N).

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

Lifecycle Timeline

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

DescriptionCVE.org

PostgreSQL's optimized statistics on a table are visible as long as you have SELECT privilege on said table. A masked role can therefore read a limited subset of the data through the statistics view's histograms and mcvs. The vulnerability is resolved in PostgreSQL Anonymizer 3.3.0 and later versions.

Threat Intelligence Overview

Prevalence
Low
niche PostgreSQL masking extension, limited enterprise 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 LOW
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

18
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +18
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