Skip to main content

psqlODBC CVE-2026-120067

| EUVDEUVD-2026-115380 MEDIUM
Stack-based Buffer Overflow (CWE-121)
2026-11-02 PostgreSQL
5.9
CVSS 3.1 · Vendor: PostgreSQL
View

Attack ChainAIDerived

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

  1. Access
    Control untrusted PG server or create rogue ctid view
  2. Delivery
    Return oversized ctid/oid column value
  3. Exploit
    Updatable cursor copies value into 32-byte stack buffer
  4. Execution
    Length unchecked, write overruns buffer
  5. Impact
    Process abort or adjacent stack corruption

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Stack buffer bounds checking
MITRE ATT&CK

1 technique across 1 tactic: Execution

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

Exploitation Conditions

Updatable cursors must be in use - they are enabled by default in psqlODBC, so a default client reading rows with such a cursor is in scope. To actually trigger the overflow, the attacker needs ONE of two concrete positions: (1) a PostgreSQL server that is not trusted under the client's current SSL/TLS settings (a malicious or MITM server able to send a crafted ctid/oid value of 32 bytes or more), or (2) a database account able to CREATE a view that defines its own column named ctid, which the application subsequently reads through an updatable cursor. Limiting factors: exploitation depends on holding one of those attacker positions rather than merely reaching the network service (hence AC:H); builds compiled with _FORTIFY_SOURCE only abort, reducing impact to denial of service; and confirmed impact is limited to stack memory corruption/crash with no demonstrated confidentiality or integrity compromise. Affected versions are all releases before psqlODBC 18.00.0006.

Impact

The input CVSS of 5.9 (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) frames this as a medium-severity, availability-only issue, and the surrounding signals agree that it is a real but non-emergency concern. AV:N with PR:N/UI:N looks superficially like a trivially remote bug, but the description constrains the 'network' reach sharply: exploitation requires either a PostgreSQL server that is not trusted under the client's current SSL settings (a malicious or man-in-the-middle server) or a database user privileged enough to create a view exposing its own ctid column that the application then reads with an updatable cursor - this is precisely why AC:H is appropriate. The vuln.today decision label is 'this_month' (not act_now/emergency). No CISA KEV listing is present, so there is no confirmed active exploitation; EPSS is not provided in the input and cannot be cited; and the only reference is the vendor GHSA advisory, so no public exploit is identified. The impact is scored availability-only: _FORTIFY_SOURCE builds abort (clean DoS), while non-fortified builds overwrite adjacent stack memory - the sources do not claim code execution, so any confidentiality/integrity/RCE outcome is unverified. Net: a legitimate issue worth patching on a normal cycle, elevated slightly because updatable cursors are on by default, but not a drop-everything priority given the attacker-position prerequisites and availability-only confirmed impact.

Exploit ScenarioDerived

An attacker who controls a PostgreSQL endpoint the client connects to without strict SSL trust (or a low-privileged database user who creates a view with a column named ctid) arranges for a 32-byte-or-longer value to be returned in the hidden ctid or oid column. When psqlODBC reads that row through an updatable cursor, it copies the server-supplied length into a fixed 32-byte stack buffer without bounds-checking, overflowing it. On _FORTIFY_SOURCE builds the process aborts (denial of service); on other builds adjacent stack memory is overwritten. No public exploit was identified at time of analysis.

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 – Nov 02, 2026

A stack-based buffer overflow in psqlODBC, the PostgreSQL ODBC driver, affects all releases before 18.00.0006 when updatable cursors are used - and they are enabled by default. The driver copies the server-supplied ctid (and oid, for tables with OIDs) value into a fixed 32-byte stack buffer using the server-declared length without validating it against the buffer size, so a value of 32 bytes or more overwrites adjacent stack memory; builds compiled with _FORTIFY_SOURCE abort instead. Reaching the flaw needs a specific attacker position: either a PostgreSQL server the client does not trust under its current SSL/TLS settings (malicious or man-in-the-middle server) or a database user able to create a view with its own column named ctid that the application then reads through an updatable cursor; the assessed vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) rates this medium severity with availability-only impact, and no public exploit or active exploitation has been reported.

RemediationAI

Upgrade to psqlODBC 18.00.0006 or later, the first release listed as unaffected; every earlier version remains vulnerable and should be replaced rather than patched in place. Confirm the installed driver version on client hosts (the ODBC driver manager's registered driver entry or the driver's own version resource) and push the updated package through your normal software distribution channel, since the flaw sits in the client driver and updating the PostgreSQL server does not address it. Where immediate upgrade is not possible, reduce exposure by disabling updatable/positioned cursors in the application's ODBC usage (for example by opening result sets read-only or by using forward-only, non-updatable cursors) so the hidden ctid/oid columns are never fetched - this removes the vulnerable code path but breaks row-positioned UPDATE/DELETE through the cursor, requiring application changes. Additionally, keep SSL/TLS verification of the PostgreSQL server enforced (with a trusted CA and hostname validation) to close the malicious/MITM server path, and restrict CREATE privileges on schemas and views to trusted roles so that a low-privileged user cannot introduce a ctid-named view column; neither measure removes the underlying overflow, so upgrading remains the complete fix. Builds compiled with _FORTIFY_SOURCE abort on the overflow and therefore limit the failure to a crash rather than memory corruption, but this is a damage-limitation property, not a remediation. Refer to the vendor advisory at https://github.com/postgresql-interfaces/psqlodbc/security/advisories/GHSA-3r96-h2q4-6pxh for the definitive fix information.

Affected VersionsENISA

psqlODBC 0 <18.00.0006

Affected Packages

euvd psqlodbc fix: 18.00.0006

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

psqlODBC implements the ODBC wire behavior for PostgreSQL. When the driver is told to use updatable (positioned) cursors - a default-enabled behavior - it augments the SELECT with hidden system columns so it can later address the exact row for UPDATE/DELETE: ctid for every table and, for tables that still carry OIDs, the oid column. The results of those hidden columns are read from the protocol stream and copied into a fixed-size 32-byte stack buffer, with the copy length taken from the metadata/values the server sends rather than clamped to the destination size. That is a classic CWE-121 stack-based buffer overflow: any value of 32 bytes or more overflows the buffer, and the write is unchecked, so adjacent stack state - saved registers, return addresses, neighboring locals - can be overwritten. Hardening changes the failure mode rather than removing the bug: with _FORTIFY_SOURCE enabled the runtime detects the overflow and aborts the process, so the observable result is a crash (denial of service); on builds without that protection the consequence is genuine stack memory corruption. Because the value is attacker-influenced only via a hostile or spoofed server, or via a view whose column is deliberately named ctid and read through an updatable cursor, the flaw lives in the driver's trust of server-supplied column lengths and metadata rather than in PostgreSQL server-side parsing. The CVSS 3.1 vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H reflects that network reachability exists but a high-complexity precondition (holding one of those two attacker positions) is required, that no privileges are needed on the client side, and that the confirmed impact is loss of availability, with no demonstrated confidentiality or integrity compromise.

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

AV:N and PR:N because an untrusted server can trigger it with no client-side auth; AC:H because it requires a malicious/untrusted server position or a crafted ctid view; impact limited to availability (A:H) per the evidence, with no demonstrated C/I effect.

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

Primary rating from Vendor (PostgreSQL).

CVSS VectorVendor: PostgreSQL

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

Lifecycle Timeline

1
Patch available
Nov 02, 2026 - 20:18 EUVD

DescriptionCVE.org

For updatable cursors, which are enabled by default, psqlODBC adds hidden ctid and, for tables with OIDs, oid columns to the query. It copies each value into a 32-byte stack buffer using the length the server sent, without checking it against the buffer size, so a value of 32 bytes or more writes past the buffer. A server not trusted under current SSL settings can send such a value. So can any database user who can create a view with its own column named ctid that the application reads with an updatable cursor. Builds with _FORTIFY_SOURCE abort; other builds overwrite adjacent stack memory. Versions before psqlODBC 18.00.0006 are affected.

Threat Intelligence Overview

Prevalence
Medium
official PostgreSQL ODBC driver, common in Windows/BI integrations but not universal
Data Quality
4 sources
Confidence: Medium

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

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

A stack-based buffer overflow occurs when a program writes more data to a buffer located on the stack than it was allocated to hold.

CVE-2026-120064 HIGH
7.5 Nov 02

Out-of-bounds reads and writes in psqlODBC before 18.00.0006 arise when a host application forwards untrusted column num

CVE-2026-120062 HIGH
7.5 Nov 02

SQL injection in psqlODBC before 18.00.0006 allows an attacker who can influence a table or schema name passed by a host

CVE-2026-120061 HIGH
7.5 Nov 02

A stack-based buffer overflow (CWE-121) in the psqlODBC driver, the official PostgreSQL ODBC driver, lets attacker-influ

CVE-2026-120058 HIGH
7.5 Nov 02

Heap out-of-bounds write in the psqlODBC driver (CWE-787) affects all versions before 18.00.0006 and is reachable only w

CVE-2026-120057 HIGH
7.5 Nov 02

A heap buffer overflow in psqlODBC's large-object read path lets a malicious or man-in-the-middle PostgreSQL server over

CVE-2026-120065 HIGH
7.1 Nov 02

SQL injection in psqlODBC before 18.00.0006 can let an authenticated database user who can create a table that an applic

CVE-2026-120059 MEDIUM
6.8 Nov 02

Format-string handling in psqlODBC before 18.00.0006 can crash applications or disclose client memory when an updatable

CVE-2026-109448 MEDIUM
5.9 Oct 12

Heap memory corruption in psqlODBC versions before 18.00.0005 can be triggered when an application binds 32,769 or more

CVE-2026-120063 MEDIUM
5.9 Nov 02

Stack buffer over-write in psqlODBC before 18.00.0006 can corrupt an application process that forwards attacker-influenc

CVE-2026-120060 MEDIUM
5.9 Nov 02

Client-side crash and limited out-of-bounds read affect psqlODBC before 18.00.0006 when the driver connects to a Postgre

CVE-2026-120066 MEDIUM
5.3 Nov 02

psqlODBC before 18.00.0006 on Unix-like systems can expose query text and data to other local users when logging is enab

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