Description
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC places that column's name, as reported by the server, into a printf-style format string. It later expands that string with one argument while it builds the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements. A column name that contains format directives makes the driver read unrelated memory, which can crash the application or copy client memory into query text sent to the server. The name can come from a server not trusted under current SSL settings, or from any database user who can create a table that the application reads with an updatable cursor. Versions before psqlODBC 18.00.0006 are affected.
Published: 2026-11-02
Score: 6.8 Medium
EPSS: n/a
KEV: No
Impact: Denial of Service and Potential Memory Disclosure
Action: Immediate Patch
AI Analysis

Impact

The vulnerability arises when psqlODBC builds SELECT, UPDATE, or DELETE statements for an updatable cursor over a table lacking OIDs that has an auto‑increment int4 column. It inserts the column name reported by the server into a printf‑style format string and expands it with a single argument. If the column name contains format directives, the driver reads unrelated memory, which can crash the client application or copy client memory into the SQL text sent to the server.

Affected Systems

Affected systems are PostgreSQL installations that use the psqlODBC driver version 18.00.0006 or earlier. The issue exists in all releases prior to 18.00.0006 and applies to any database that can create an updatable cursor over a table with an auto‑increment int4 column.

Risk and Exploitability

The CVSS score is 6.8 and no EPSS data is available; the vulnerability is not listed in KEV. The attack requires an attacker who can influence a server‑supplied column name—either by connecting to a server whose SSL settings do not enforce trust or by creating a table as a database user. The exploit can lead to a crash or inadvertent disclosure of client memory within the query, potentially affecting application availability or confidentiality. Because the exploit relies on database schema manipulation and updatable cursors, the likelihood of exploitation is limited but not impossible in environments with lax database user permissions.

Generated by OpenCVE AI on November 2, 2026 at 20:38 UTC.

Remediation

Vendor Solution

Upgrade to psqlODBC 18.00.0006 or later. Each percent sign in the server-supplied column name is doubled before the name is placed in the format string.


Vendor Workaround

Set UpdatableCursors=0 in the connection string or DSN, or use read-only cursors (SQL_CONCUR_READ_ONLY).


OpenCVE Recommended Actions

  • Upgrade psqlODBC to version 18.00.0006 or later.
  • If upgrading immediately is not possible, set UpdatableCursors=0 in the connection string or DSN, or use SQL_CONCUR_READ_ONLY cursors.
  • Validate or restrict column names so that untrusted servers or database users cannot supply names containing percent signs before their values are used in format strings.

Generated by OpenCVE AI on November 2, 2026 at 20:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 03 Nov 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Moderate


Mon, 02 Nov 2026 21:00:00 +0000

Type Values Removed Values Added
First Time appeared Postgresql
Postgresql psqlodbc
Vendors & Products Postgresql
Postgresql psqlodbc

Mon, 02 Nov 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 02 Nov 2026 19:15:00 +0000

Type Values Removed Values Added
Description For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC places that column's name, as reported by the server, into a printf-style format string. It later expands that string with one argument while it builds the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements. A column name that contains format directives makes the driver read unrelated memory, which can crash the application or copy client memory into query text sent to the server. The name can come from a server not trusted under current SSL settings, or from any database user who can create a table that the application reads with an updatable cursor. Versions before psqlODBC 18.00.0006 are affected.
Title psqlODBC uses a server-supplied column name as a format string
Weaknesses CWE-134
References
Metrics cvssV3_1

{'score': 6.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:H'}


Subscriptions

Postgresql Psqlodbc
cve-icon MITRE

Status: PUBLISHED

Assigner: PostgreSQL

Published:

Updated: 2026-11-02T19:34:22.575Z

Reserved: 2026-10-30T19:25:18.919Z

Link: CVE-2026-120059

cve-icon Vulnrichment

Updated: 2026-11-02T19:34:16.419Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-11-02T19:18:02.993

Modified: 2026-11-02T20:17:39.060

Link: CVE-2026-120059

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-11-02T19:09:10Z

Links: CVE-2026-120059 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-11-02T20:45:07Z

Weaknesses
  • CWE-134

    Use of Externally-Controlled Format String