Skip to main content

PostgreSQL JDBC Driver EUVDEUVD-2026-94546

| CVE-2026-107313 MEDIUM
Insertion of Sensitive Information Into Sent Data (CWE-201)
2026-10-07 PostgreSQL
4.2
CVSS 3.1 · Vendor: PostgreSQL
View

Attack ChainAIDerived

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

  1. Access
    Open authenticated GSS-encrypted connection (gssEncMode=prefer/require)
  2. Exploit
    Write ≥16320-byte value via setString/setBytes/LargeObject.write
  3. Execution
    Driver sends stale GSS buffer instead of supplied bytes
  4. Impact
    Server stores leaked prior SQL/parameters/rows as the value

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Outbound data filtering
Exploitation Conditions

Requires a non-default configuration: gssEncMode must be set to prefer or require so that GSS/Kerberos encryption is actually negotiated - the default gssEncMode=allow does not start GSS encryption and is NOT affected, nor are any non-GSS-encrypted connections. The application must also write a value at least as long as the GSS send buffer (16320 bytes with MIT Kerberos) from a byte array via setString, setBytes, a ByteStreamWriter, CopyIn.writeToCopy, or LargeObject.write. Limiting factors that reduce realistic risk: only versions 42.7.4 and 42.7.5 are affected (fixed in 42.7.6); an authenticated database connection is required (PR:L); most qualifying writes fail outright with an ArrayIndexOutOfBoundsException rather than silently leaking; and the leaked bytes come from earlier messages on the same connection, keeping exposure within that connection's own traffic.

Impact

This is a genuine but low-priority defect rather than a high-urgency threat. The provided CVSS 3.1 base score is 4.2 (Medium) with vector AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N, and the signals are internally consistent: network vector but high attack complexity (AC:H) because exploitation requires a non-default GSS encryption mode plus a write of at least the ~16320-byte buffer size, and PR:L because a valid authenticated database connection is needed. Exploitation status: no public exploit identified at time of analysis - there is no CISA KEV listing and no POC referenced. No EPSS score was supplied in the input, so exploitation probability cannot be quantified here; absence of EPSS/KEV/POC should not be read as proof of safety, only as lack of evidence. A key mitigating reality stated in the description itself is that most affected writes abort with an ArrayIndexOutOfBoundsException instead of silently leaking, further lowering real-world impact. The confidentiality exposure (CWE-201) is bounded to fragments of the SAME connection's own earlier traffic (prior SQL text, parameters, earlier batch rows) being stored server-side, so turning it into a cross-trust-boundary disclosure requires an actor who can both trigger the oversized write and later read the stored value. Net: real enough to patch, especially where gssEncMode=prefer/require is in use, but not an emergency given AC:H, PR:L, non-default configuration, and lack of any exploitation evidence.

Exploit ScenarioDerived

An application running pgjdbc 42.7.4 or 42.7.5 with gssEncMode=prefer or require writes a bind parameter or large object of at least ~16320 bytes (the MIT Kerberos GSS send-buffer size); instead of the supplied bytes, the driver emits the stale contents of the GSS send buffer, so the server silently persists fragments of that connection's earlier SQL text, parameters, or batched rows. A user able to later read that stored column could recover sensitive data belonging to prior operations on the same connection. No public exploit code exists, and most such oversized writes actually fail with an ArrayIndexOutOfBoundsException rather than leaking.

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

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

Alert me

AnalysisAIv1 – Oct 07, 2026

Values written through the PostgreSQL JDBC Driver (pgjdbc) 42.7.4 and 42.7.5 over a GSS/Kerberos-encrypted connection can be silently stored by the server with bytes from the driver's previous GSS send buffer spliced into the front of them, so the persisted value holds earlier SQL text, other bind parameters, or earlier rows of the same batch instead of what the application supplied. Only connections where gssEncMode is set to prefer or require are affected - the default gssEncMode=allow and all non-GSS-encrypted connections are not - and the write must be at least as long as the driver's 16320-byte GSS buffer (with MIT Kerberos) and issued via setString, setBytes, a ByteStreamWriter, CopyIn.writeToCopy, or LargeObject.write. The CVSS vector (PR:L) indicates an authenticated database session is required, most qualifying writes fail outright with an ArrayIndexOutOfBoundsException rather than leaking, no public exploit is identified at time of analysis, and the upstream project rates this as a genuine but low-priority defect (CVSS 4.2) rather than a high-urgency threat.

RemediationAI

Upgrade to the vendor-released fix, pgjdbc 42.7.6 or later (advisory: https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-hggc-j2qh-988m; fix: PR https://github.com/pgjdbc/pgjdbc/pull/3500, commit https://github.com/pgjdbc/pgjdbc/commit/96f6862bb6bcadde7620688c7bce73f2d01a7ebb) - this is the only complete remediation, since the defect is in the driver's write path and cannot be corrected server-side. If an immediate upgrade is not possible, change the JDBC URL to gssEncMode=allow (the documented default) or an equivalent setting that prevents GSS encryption from being selected, and compensate for the loss of Kerberos-encrypted transport by enabling TLS on the same connection with sslmode=verify-full and a trusted root certificate; the trade-off is that TLS replaces, rather than supplements, GSS channel encryption and may not satisfy environments that mandate Kerberos-based transport. As an additional containment measure, avoid writing single values of 16320 bytes or more from Java byte arrays (setString, setBytes, ByteStreamWriter, CopyIn.writeToCopy, LargeObject.write) while GSS encryption is active, and review application logs for ArrayIndexOutOfBoundsException during qualifying writes, since most of these writes fail loudly rather than silently corrupting data - meaning any successful large write over GSS should be treated as potentially containing stale bytes from a prior message on the same connection and re-validated or re-inserted after patching.

Affected VersionsENISA

pgjdbc 42.7.4 <42.7.6

Affected Packages

euvd pgjdbc fix: 42.7.6

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

pgjdbc's GSS-encrypted transport is implemented in org.postgresql.gss.GSSInputStream, which reads length-prefixed frames from the socket, unwraps them through the JGSS GSSContext.unwrap() call, and buffers the decrypted bytes for the caller. Every message is preceded by a four-byte big-endian length (parsed with ByteConverter.int4), and the server emits frames of at most 16 KiB. In 42.7.4 and 42.7.5 the driver's send-side byte-array write path could hand the GSS wrapper a buffer whose leading 16320 bytes still contained the driver's previous outbound messages on that connection, and because the server accepted the resulting message without error, the stale prefix was written to the database as part of the value. The root cause class is CWE-201 (Insertion of Sensitive Information Into Sent Data): data from one logical message is inserted into another before transmission, producing a within-connection information-disclosure and data-integrity defect rather than a memory-safety issue. Upstream remediation (PR 3500, commit 96f6862bb6bcadde7620688c7bce73f2d01a7ebb) restructures GSSInputStream to track length, encrypted, and unencrypted positions independently, reallocates the encrypted buffer when a frame exceeds 16 KiB, and avoids retaining decrypted state across read() calls.

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

Needs an authenticated GSS-encrypted connection and a ≥16KB byte-array write (PR:L, AC:H, non-default config); leaks and corrupts stored message fragments (C:L/I:L), with no availability impact.

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

Primary rating from Vendor (PostgreSQL).

CVSS VectorVendor: PostgreSQL

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

DescriptionCVE.org

pgjdbc, the PostgreSQL JDBC Driver, versions 42.7.4 and 42.7.5 can send the previous contents of the GSS send buffer in place of the first part of a value on a connection with GSS encryption (gssEncMode=prefer or require), and the server stores the value without an error. The buffer is 16320 bytes with MIT Kerberos. The stored value then holds bytes of the messages the driver sent just before it on the same connection, such as the statement's SQL text, its other parameters, and earlier rows of the same batch, instead of the bytes the application supplied. Values at least as long as the buffer are affected when the driver writes them from a byte array: bind parameters set with setString, setBytes, or a ByteStreamWriter, CopyIn.writeToCopy, and LargeObject.write. Most such writes fail with an ArrayIndexOutOfBoundsException instead. The default, gssEncMode=allow, does not start GSS encryption, and connections without GSS encryption are not affected. Versions 42.7.3 and earlier are not affected, and 42.7.6 fixes the problem.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
High
de facto standard PostgreSQL JDBC driver across Java enterprise deployments
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.1%
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

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