CVE-2026-109448
psqlODBC SQLBindParameter heap memory corruption when binding more than 32767 parameters
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
5.9
psqlODBC SQLBindParameter heap memory corruption when binding more than 32767 parameters
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
- Record
CVE-2026-109448- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-190, CWE-124
- Updated
- 2026-11-02
EUVDEUVD-2026-97731
5.9
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
- Record
EUVD-2026-97731- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
NVD
5.9
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
- Record
CVE-2026-109448- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-124, CWE-190
- Updated
- 2026-11-02
OSVBELL-CVE-2026-109448
5.9
- Record
BELL-CVE-2026-109448- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSV
5.9
psqlODBC SQLBindParameter heap memory corruption when binding more than 32767 parameters
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
- Record
CVE-2026-109448- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-124, CWE-190
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-109448
5.9
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
- Record
DEBIAN-CVE-2026-109448- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-109448
5.9
Integer wraparound in psqlODBC SQLBindParameter allows an application, or an attacker who controls how many parameters the application binds on one statement, to corrupt heap memory. psqlODBC stores the binding count in a signed 16-bit field. Binding parameter number 32768 wraps that count to -32768. Binding parameter 32769 then writes about 2.5 MB of zeros starting 1.25 MB before the binding array, which crashes the application or leaves it running on a corrupted heap. Applications that build parameter lists from untrusted input, such as an IN (?, ?, ...) list, are exposed. Versions before psqlODBC 18.00.0005 are affected.
- Record
UBUNTU-CVE-2026-109448- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12135-1 No score
psqlODBC-18.00.0005-1.1 on GA media
These are all security issues fixed in the psqlODBC-18.00.0005-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12135-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22122-1 No score
Security update for psqlODBC
This update for psqlODBC fixes the following issues:
Changes in psqlODBC:
Update to 18.00.0005:
- https://odbc.postgresql.org/docs/release.html
- Fix heap memory corruption when an application binds more than 32767 parameters on a single statement. SQLBindParameter now rejects parameter numbers outside 1..32767 with SQLSTATE 07009 (CVE-2026-109448, bsc#1285073).
- Fix the placeholder cast being truncated from parameter 1000 on, which failed with 'type "timestam" does not exist'.
- Report the largest column size instead of SQL_NO_TOTAL (-4) as COLUMN_SIZE for bytea in SQLGetTypeInfo, which broke bytea parameters through MSDASQL.
-
Changes in 18.00.0004:
- Fix the result-conversions regression test on big-endian systems.
-
Changes in 18.00.0003:
- Report SQLSTATE 22003 for out-of-range integer conversions instead of silently returning the wrapped low bits.
- Fix statement level rollback (Protocol=7.4-2) discarding the whole transaction on a syntax error.
- Do not wrap internal queries in a savepoint at rollback-on-error level 0 (Protocol=7.4-0), which lost transactions on servers without SAVEPOINT support.
- Redact the database password (ODBC PWD and libpq pqopt password) in debug logs.
- Fix hang on COPY ... FROM STDIN / TO STDOUT: report it as unsupported and keep the connection usable.
- Fix 'infinity'/'-infinity' dates being silently returned as today's date.
- Document the connection string escaping rules.
-
Changes in 18.00.0002:
- Use a signed type for the error status.
- Redact sensitive connection parameters in the driver logs.
- Fix double free / heap corruption during SQLDisconnect cleanup.
- Clear PGresults from per-query rollback.
- Validate UTF-16 surrogate pairs before combining them.
- Pass SQLSetDescRec field values correctly.
- Avoid reading before leading string literals.
- Detach freed application descriptors from statements.
- Reject invalid SQLPutData lengths.
- Reject overlong cursor names.
- Fix version reporting.
- Handle ARD bookmark allocation failure.
- Validate percent escapes before decoding connection string values.
- Avoid reading past the end of conn_settings.
- Fix stack buffer overflow in getPrecisionPart().
- Fix SQLPrimaryKeys to exclude INCLUDE columns from the result.
-
Changes in 18.00.0000, 18.00.0001 and 17.00.0010:
- No code changes from 17.00.0009.
-
Changes in 17.00.0009:
- Fix the test suite for PostgreSQL 19, where standard_conforming_strings is always on.
- Upgrade the GitHub Actions workflow: use prebuilt PostgreSQL binaries, parallel matrix builds and a separate release job.
-
Update to 17.00.0008:
- Record
openSUSE-SU-2026:22122-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
psqlodbcAlpaquita:23 |
16.00.0000-r0 and later | None known |
psqlodbcAlpaquita:25 |
16.00.0005-r0 and later | None known |
psqlodbcAlpaquita:stream |
16.00.0005-r0 and later | None known |
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 12 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-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 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 |
None known |
psqlodbcDebian:14 |
before 1:18.00.0005-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 6 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-1 |
1:18.00.0005-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 |
Show 5 moreShow less
| Package | Affected | Fixed |
|---|---|---|
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 |
before 18.00.0005-1.1 | 18.00.0005-1.1 |
psqlODBCopenSUSE:Leap 16.0 |
before 18.00.0005-bp160.1.1 | 18.00.0005-bp160.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-109448 is a medium vulnerability (CVSS 5.9) in Postgresql Psqlodbc, published October 12, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.22%, the 12th percentile. Fixed in psqlodbc 1:18.00.0005-1.
References
github.com/postgresql-interfaces/psqlodbc/security/advisories/GHSA-cmfx-rm3r-p2jr
docs.bell-sw.com/security/cves/CVE-2026-109448
github.com/CVEProject/cvelistV5/tree/main/cves/2026/109xxx/CVE-2026-109448.json
nvd.nist.gov/vuln/detail/CVE-2026-109448
github.com/postgresql-interfaces/psqlodbc
security-tracker.debian.org/tracker/CVE-2026-109448