CVE-2026-120065
psqlODBC does not escape a server-supplied column name in its updatable-cursor queries
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- Low
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.1
psqlODBC does not escape a server-supplied column name in its updatable-cursor queries
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
CVE-2026-120065- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-89
- Updated
- 2026-11-02
EUVDEUVD-2026-115378
7.1
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
EUVD-2026-115378- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-gv3c-v55x-3f23
7.1
For an updatable cursor over a table without OIDs that has an auto-increment int4 column,...
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
GHSA-gv3c-v55x-3f23- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-89
- Updated
- 2026-11-03
NVD
7.1
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
CVE-2026-120065- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-89
- Updated
- 2026-11-03
OSV
7.1
psqlODBC does not escape a server-supplied column name in its updatable-cursor queries
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
CVE-2026-120065- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-89
- Updated
- 2026-11-08
OSVDEBIAN-CVE-2026-120065
7.1
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
DEBIAN-CVE-2026-120065- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-05
OSVUBUNTU-CVE-2026-120065
7.1
For an updatable cursor over a table without OIDs that has an auto-increment int4 column, psqlODBC uses that column to identify rows. It places the column's name, as reported by the server, between double quotes in its keyset queries and in the WHERE clause of its positioned SELECT, UPDATE, and DELETE statements, without doubling any double quote in the name. A column name that contains a double quote therefore changes the SQL that the driver runs with the application's privileges, including which rows a positioned UPDATE or DELETE affects. Any database user who can create a table that the application reads with an updatable cursor can choose such a name, and so can a server not trusted under current SSL settings. Versions before psqlODBC 18.00.0006 are affected.
- Record
UBUNTU-CVE-2026-120065- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-05
OSVopenSUSE-SU-2026:12472-1 No score
psqlODBC-18.00.0006-1.1 on GA media
These are all security issues fixed in the psqlODBC-18.00.0006-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12472-1- Updated
- 2026-11-07
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
psqlodbcDebian:12 |
All versions, plus listed versions 1:13.02.0000-21:15.00.0000-11:16.00.0000-11:16.00.0005-11:17.00.0004-1 Show 13 moreShow less1:17.00.0004-21:17.00.0005-11:17.00.0006-11:17.00.0006-21:17.00.0007-11:17.00.0008-11:18.00.0001-11:18.00.0002-11:18.00.0003-11:18.00.0003-21:18.00.0004-11:18.00.0005-11:18.00.0006-1 |
None known |
psqlodbcDebian:13 |
All versions, plus listed versions 1:17.00.0004-21:17.00.0005-11:17.00.0006-11:17.00.0006-21:17.00.0007-1 Show 8 moreShow less1:17.00.0008-11:18.00.0001-11:18.00.0002-11:18.00.0003-11:18.00.0003-21:18.00.0004-11:18.00.0005-11:18.00.0006-1 |
None known |
psqlodbcDebian:14 |
before 1:18.00.0006-1, plus listed versions 1:17.00.0004-21:17.00.0005-11:17.00.0006-11:17.00.0006-21:17.00.0007-1 Show 7 moreShow less1:17.00.0008-11:18.00.0001-11:18.00.0002-11:18.00.0003-11:18.00.0003-21:18.00.0004-11:18.00.0005-1 |
1:18.00.0006-1 |
psqlodbcUbuntu:16.04:LTS |
All versions, plus listed versions 1:09.03.0300-1 |
None known |
psqlodbcUbuntu:18.04:LTS |
All versions, plus listed versions 1:09.06.0410-11:10.00.0000-11:10.01.0000-1 |
None known |
psqlodbcUbuntu:20.04:LTS |
All versions, plus listed versions 1:11.00.0000-11:12.00.0000-11:12.01.0000-1 |
None known |
psqlodbcUbuntu:22.04:LTS |
All versions, plus listed versions 1:13.00.0000-11:13.02.0000-11:13.02.0000-2 |
None known |
psqlodbcUbuntu:24.04:LTS |
All versions, plus listed versions 1:15.00.0000-11:16.00.0000-1 |
None known |
psqlodbcUbuntu:26.10 |
All versions, plus listed versions 1:17.00.0007-11:18.00.0001-11:18.00.0002-1 |
None known |
psqlodbcUbuntu:26.04:LTS |
All versions, plus listed versions 1:17.00.0006-21:17.00.0007-1 |
None known |
psqlODBCopenSUSE:Tumbleweed From an advisory covering 11 CVEs |
before 18.00.0006-1.1 | 18.00.0006-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases, references | OSV | |
| affected, aliases, references | OSV | |
| affected, facts | OSV | |
| affected, aliases, facts, references | OSV | |
| affected, aliases, references | OSV | |
| aliases, published | EUVD | |
| aliases, references | GitHub Advisories, NVD | |
| first indexed | CVE List |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-120065 is a high vulnerability (CVSS 7.1) in Postgresql Psqlodbc, published November 2, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 22nd percentile. Fixed in psqlodbc 1:18.00.0006-1.
References
github.com/postgresql-interfaces/psqlodbc/security/advisories/GHSA-9cg8-r57h-h6jj
nvd.nist.gov/vuln/detail/CVE-2026-120065
github.com/advisories/GHSA-gv3c-v55x-3f23
github.com/CVEProject/cvelistV5/tree/main/cves/2026/120xxx/CVE-2026-120065.json
github.com/postgresql-interfaces/psqlodbc
security-tracker.debian.org/tracker/CVE-2026-120065
Show 13 moreShow less
ubuntu.com/security/CVE-2026-120065
cve.org/CVERecord?id=CVE-2026-120065
suse.com/security/cve/CVE-2026-120057
suse.com/security/cve/CVE-2026-120058
suse.com/security/cve/CVE-2026-120059
suse.com/security/cve/CVE-2026-120060
suse.com/security/cve/CVE-2026-120061
suse.com/security/cve/CVE-2026-120062
suse.com/security/cve/CVE-2026-120063
suse.com/security/cve/CVE-2026-120064
suse.com/security/cve/CVE-2026-120065
suse.com/security/cve/CVE-2026-120066
suse.com/security/cve/CVE-2026-120067