Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply untrusted column/row number to application
-
DeliveryApplication forwards it to psqlODBC entry point
-
ExploitIndex wraps negative or exceeds bounds
-
ExecutionOut-of-bounds read/write in process memory
-
ImpactMemory disclosure or corruption toward code execution
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
|
| Exploitation Conditions | Exploitation requires an application using psqlODBC that passes attacker-controlled column numbers or row indices into the affected ODBC entry points: SQLBindCol with a column number above 32767 (binding count wraps negative), a negative SQL_DESC_COUNT set on an application row descriptor, SQLColAttribute called with a very large column number, or SQLSetPos(SQL_ADD) with a row number not checked against the rowset size. This is NOT a default-configuration remote flaw - the limiting factor is that the host application must relay untrusted index values to these APIs, which most applications (using fixed, trusted column numbers) do not do, explaining the AC:H complexity. Affected: all versions before psqlODBC 18.00.0006; the fix is upgrading to 18.00.0006. |
| Impact | The input CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H, base 7.5) describes high impact across confidentiality, integrity and availability via out-of-bounds reads and writes, but tempers it with high attack complexity (AC:H) and low-privilege requirement (PR:L). The decisive caveat is in the description itself: exploitation only arises in an application that forwards UNTRUSTED column or row numbers to psqlODBC entry points. This is a library/driver flaw whose exploitability is entirely contingent on how the embedding application uses the ODBC API - most applications pass fixed, trusted column numbers and are therefore not exposed, which is consistent with the AC:H rating. No EPSS score is provided, so widespread-exploitation probability cannot be quantified. The CVE is NOT in CISA KEV (no active exploitation signal) and no PoC or exploit reference is present - only the vendor security advisory. The vuln.today decision label is 'this_week', i.e. prioritized but below act_now/emergency. Net: this is a genuine memory-corruption bug worth patching this week for anyone running affected psqlODBC behind applications that relay untrusted indices, but it is not a drop-everything internet-wide threat - the AV:N network vector is only reachable when the host application itself exposes the untrusted column/row values, which should be verified per application rather than assumed. |
| Exploit ScenarioDerived | An application built on psqlODBC forwards an attacker-influenced column number (for example derived from a web request parameter) into SQLBindCol with a value above 32767, causing the binding count to wrap negative so that a later copy runs off the array; alternatively a negative SQL_DESC_COUNT, an oversized SQLColAttribute column number, or an SQLSetPos(SQL_ADD) row beyond the rowset drives a negative or out-of-range index. The result is an out-of-bounds read or write in the application process, potentially leaking memory or corrupting state toward code execution. No public exploit identified at time of analysis; only the vendor advisory is referenced. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 02, 2026
Out-of-bounds reads and writes in psqlODBC before 18.00.0006 arise when a host application forwards untrusted column numbers or row indices into ODBC entry points such as SQLBindCol, SQLColAttribute and SQLSetPos(SQL_ADD), which the driver uses directly as array indices without validation. This is not a default-configuration remote condition: the limiting factor is that the calling application must itself relay attacker-controlled index values to these APIs, which is why the assessed vector carries high attack complexity (AC:H) and a low-privilege requirement (PR:L) alongside high confidentiality, integrity and availability impact. No public exploit identified at time of analysis; the vendor fix is psqlODBC 18.00.0006.
RemediationAI
Upgrade psqlODBC to 18.00.0006, the version in which the vendor addresses these entry points; the advisory at https://github.com/postgresql-interfaces/psqlodbc/security/advisories/GHSA-7pq2-q7mj-ph8c is the primary reference. Where the driver cannot be updated immediately, the practical compensating control is at the call site, since the flaw only manifests when untrusted values reach the ODBC APIs: reject or clamp column numbers above 32767 and negative column numbers before calling SQLBindCol and SQLColAttribute, never set a negative SQL_DESC_COUNT on an application row descriptor, and validate SQLSetPos(SQL_ADD) row numbers against the actual rowset size. The trade-off is that this only protects code paths routed through such a wrapper - third-party or embedded applications that call the driver directly remain exposed, and behavior of the driver itself is unchanged, so upgrading remains the only complete fix.
Affected VersionsENISA
Affected Packages
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 is the PostgreSQL ODBC driver, exposing the ODBC call-level interface in which applications manipulate result-set and application row descriptors through functions like SQLBindCol, SQLColAttribute and SQLSetPos. The root cause is CWE-129 (Improper Validation of Array Index): application-supplied column numbers and row indices are used as array indices without bounds checks. Four distinct paths are described - SQLBindCol with a column number above 32767 wraps the binding count negative so a later copy runs off the array; a negative SQL_DESC_COUNT set on an application row descriptor unbinds columns at negative indexes; SQLColAttribute with a very large column number computes a negative index; and SQLSetPos(SQL_ADD) does not check the row number against the rowset size. The CPE cpe:2.3:a:postgresql:psqlodbc:*:*:*:*:*:*:*:* confirms the affected scope as the driver itself rather than a particular server deployment, and the trigger is therefore entirely dependent on how the host application supplies index values - most applications use fixed, trusted column numbers and never reach the flawed paths, which corresponds to the assessed AC:H. Beyond the index-forwarding precondition described above, the trigger for each individual path is not further described in the available sources.
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
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Exploitation depends on an uncommon pattern where the application forwards untrusted column/row numbers, hence AC:H and PR:L; out-of-bounds reads and writes give High C/I/A with unchanged scope.
Primary rating from Vendor (PostgreSQL).
CVSS VectorVendor: PostgreSQL
Lifecycle Timeline
2DescriptionCVE.org
Several psqlODBC entry points use an application-supplied column number or row index as an array index without validating it. SQLBindCol with a column number above 32767 wraps the binding count negative and a later copy runs off the array. A negative SQL_DESC_COUNT on an application row descriptor unbinds columns at negative indexes. SQLColAttribute with a very large column number uses a negative index. SQLSetPos(SQL_ADD) does not check the row number against the rowset size. An application that forwards untrusted column or row numbers exposes its process to out-of-bounds reads and writes. Versions before psqlODBC 18.00.0006 are affected.
Executive ViewAI
psqlODBC versions before 18.00.0006 contain memory corruption vulnerabilities that could be triggered by malicious applications passing untrusted index values to specific database API calls. The risk is concentrated in environments where internal applications forward untrusted data to the ODBC driver, potentially leading to data leakage or system compromise, though exploitation requires a specific application behavior. Security leadership should prioritize inventorying affected applications and planning an upgrade to the fixed driver version to mitigate potential integrity and confidentiality risks.
Vendor-released patch: psqlODBC 18.00.0006
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
SQL injection in psqlODBC before 18.00.0006 allows an attacker who can influence a table or schema name passed by a host
A stack-based buffer overflow (CWE-121) in the psqlODBC driver, the official PostgreSQL ODBC driver, lets attacker-influ
Heap out-of-bounds write in the psqlODBC driver (CWE-787) affects all versions before 18.00.0006 and is reachable only w
A heap buffer overflow in psqlODBC's large-object read path lets a malicious or man-in-the-middle PostgreSQL server over
SQL injection in psqlODBC before 18.00.0006 can let an authenticated database user who can create a table that an applic
Format-string handling in psqlODBC before 18.00.0006 can crash applications or disclose client memory when an updatable
Heap memory corruption in psqlODBC versions before 18.00.0005 can be triggered when an application binds 32,769 or more
A stack-based buffer overflow in psqlODBC, the PostgreSQL ODBC driver, affects all releases before 18.00.0006 when updat
Stack buffer over-write in psqlODBC before 18.00.0006 can corrupt an application process that forwards attacker-influenc
Client-side crash and limited out-of-bounds read affect psqlODBC before 18.00.0006 when the driver connects to a Postgre
psqlODBC before 18.00.0006 on Unix-like systems can expose query text and data to other local users when logging is enab
EUVD-2026-115377
NVD
CVE.org
GitHub
Exploit-DB