CVE-2024-32655 is a high-severity (CVSS 8.1) SQL Injection vulnerability in Npgsql. A fix is available for Npgsql — see the affected versions and patch details below.
Npgsql Vulnerable to SQL Injection via Protocol Message Size Overflow
Exploitation Status
No confirmed exploitation observed yet
- CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
- A successful exploit gives an attacker total control of the affected component, not partial access.
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2024-32655.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
Npgsql.NETNpgsql.NETNpgsql.NETNpgsql.NETNpgsql.NETNpgsqlReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects NuGet packages — download data is not available via public APIs for these ecosystems.
Description
Summary
The WriteBind() method in src/Npgsql/Internal/NpgsqlConnector.FrontendMessages.cs uses int variables to store the message length and the sum of parameter lengths. Both variables overflow when the sum of parameter lengths becomes too large.
This causes Npgsql to write a message size that is too small when constructing a Postgres protocol message to send it over the network to the database. When parsing the message, the database will only read a small number of bytes and treat any following bytes as new messages while they belong to the old message.
Attackers can abuse this to inject arbitrary Postgres protocol messages into the connection, leading to the execution of arbitrary SQL statements on the application's behalf.
Impact
Attackers can issue arbitrary SQL statements to the database on behalf of the application. The final impact depends on the application that uses Npgsql, the data it stores in Postgres, etc.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| .NETNuGet | Npgsql | ≥ 8.0.0&&< 8.0.3 | 8.0.3dotnet add package Npgsql --version 8.0.3 |
| .NETNuGet | Npgsql | all versions | 4.0.14dotnet add package Npgsql --version 4.0.14 |
| .NETNuGet | Npgsql | ≥ 4.1.0&&< 4.1.13 | 4.1.13dotnet add package Npgsql --version 4.1.13 |
| .NETNuGet | Npgsql | ≥ 5.0.0&&< 5.0.18 | 5.0.18dotnet add package Npgsql --version 5.0.18 |
| .NETNuGet | Npgsql | ≥ 6.0.0&&< 6.0.11 | 6.0.11dotnet add package Npgsql --version 6.0.11 |
| .NETNuGet | Npgsql | ≥ 7.0.0&&< 7.0.7 | 7.0.7dotnet add package Npgsql --version 7.0.7 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for Npgsql, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update Npgsql to 8.0.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2024-32655 is resolved across your whole dependency graph.
Workarounds
Stop feeding it untrusted input: reject or quarantine files and payloads from unverified sources until you can upgrade, restrict accepted formats to the ones you actually need, and run the parsing or decoding step in a least-privileged sandbox or short-lived worker so a crash or corrupted read cannot reach the rest of the process.
Frequently Asked Questions
Is CVE-2024-32655 in your dependencies?
Find it across NuGet, including transitive dependencies.