Skip to content
CVE Tracker
Back

CVE-2026-120067

psqlODBC stack buffer overflow copying ctid and oid values for updatable cursors

Medium5.9
Published
Updated
Reserved
Assigned by
PostgreSQL

Description

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.

Scores

CVSS scores of CVE-2026-120067, by who scored it
Scored byCVSSScoreVector
PostgreSQLCNA (assigner)3.1Medium5.9CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
NVDNVD · Awaiting Analysis3.1Medium5.9CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
EPSS (exploitation in 30 days)
Not scored
CISA SSVC
Exploitation: none · Automatable: no · Technical impact: partial

The list uses the assigner's score when there is one, then CISA's, then NVD's: Medium 5.9.

Weakness

Affected products

  • PostgreSQL · psqlODBC

    • affected < 18.00.0006

What to do

Solution: Upgrade to psqlODBC 18.00.0006 or later. The driver rejects a keyset value that does not fit its buffer, and the query fails with SQLSTATE HY000.

Workaround: Set UpdatableCursors=0 in the connection string or DSN, so the driver does not add the keyset columns.

References (1)

Sources

The same CVE in the primary databases and aggregators, to check against.

Record last updated .