CVE-2026-44219: ciguard SCA HTTP Client Reads Response Vulnerability
MODERATECVE-2026-44219 is a MODERATE (CVSS 3.7) sca http client reads response vulnerability (CWE-770: Allocation of Resources Without Limits or Throttling) affecting ciguard libraries in the PyPI ecosystem. The issue involves sca http client reads response body without size cap. Remediation is available by upgrading affected packages to version 0.8.2.
CVE-2026-44219 at a Glance
Security Impact
CVSS: 3.7
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L).
How to Fix CVE-2026-44219
To remediate this vulnerability, upgrade all affected ciguard dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
pip install ciguard>=0.8.2
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
pip show ciguard
How to Check if You Are Affected
To determine whether your Python environment is affected by CVE-2026-44219, inspect your installed packages using pip:
pip show ciguard
Analyze the terminal output to locate any version of ciguard in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.8.2), your application is affected.
Note: The pip show ciguard command checks currently installed packages in your active Python environment.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-770: Allocation of Resources Without Limits or Throttling, where the product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated. In ciguard, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-44219 Affected ciguard Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
ciguard
|
PyPI |
≥ 0.6.0
< 0.8.2
|
0.8.2
|
References
Frequently Asked Questions
What is CVE-2026-44219?
Which ciguard versions are affected?
What version fixes CVE-2026-44219?
Is ciguard affected?
What is the CVSS score of CVE-2026-44219?
What CWE is associated with CVE-2026-44219?
How can I check PyPI dependencies for CVE-2026-44219?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-xw8c-rrvx-f7xq",
"modified" : "2026-05-15T23:50:38Z",
"published" : "2026-05-05T22:17:43Z",
"aliases" : [ "CVE-2026-44219" ],
"summary" : "ciguard: SCA HTTP client reads response body without size cap",
"details" : "## Summary\n\nBoth SCA HTTP clients (`src/ciguard/analyzer/sca/osv.py` and `src/ciguard/analyzer/sca/endoflife.py`) call `payload = json.loads(resp.read().decode('utf-8'))` without a maximum-bytes cap. A hostile or compromised endoflife.date / OSV.dev (or a successful TLS MITM) could return a multi-GB response, exhausting the ciguard process's memory.\n\n## Threat scenario\n\nciguard process memory exhaustion → OOM kill or system swap thrash. Realistic when ciguard runs in CI with a limited memory budget (typical: 4-8 GB). No data integrity or confidentiality impact.\n\n**Realism caveat:** both URLs are hardcoded HTTPS, so this is a low-realism threat (HTTPS prevents MITM unless the attacker controls a trusted CA or hijacks DNS in a way that doesn't trigger cert validation). The unbounded read is structural defence-in-depth, not a directly exploitable bug today.\n\n## Patch\n\n- New `MAX_RESPONSE_BYTES = 5 * 1024 * 1024` (5 MB) constant in both modules.\n- `body = resp.read(MAX_RESPONSE_BYTES + 1)` with overflow check returns `None` (caller falls back to stale cache).\n- 3 regression tests in `tests/test_sca_rules.py::TestSCAResponseSizeCap`.\n\n## Discovery\n\nFound during ciguard's first self-conducted pentest cycle, 2026-04-26.\n\n## CVSS Scoring\n\n- CVSS v3.1: `CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L` — 3.7 (Low)\n- CVSS v4.0: `CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N` — first.org calc 3.1 (Low); GitHub's calc 6.3 (Medium). Vector is correct — choosing v3.1 as the structured score keeps the consistent Low rating across consumers.\n\n## Reproduction\n\nMonkey-patch `urllib.request.urlopen` to return a fake 50 MB response; observe memory growth before/after the call. Pre-fix: process memory grows by ~50 MB. Post-fix: `_fetch` returns `None`, memory growth bounded to MAX_RESPONSE_BYTES.\n\n## References\n\n- Fix released in [v0.8.2](https://github.com/Jo-Jo98/ciguard/releases/tag/v0.8.2)\n- CI regression gate added in [v0.8.3](https://github.com/Jo-Jo98/ciguard/releases/tag/v0.8.3)\n- https://www.cve.org/CVERecord?id=CVE-2026-44219",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
}, {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "PyPI",
"name" : "ciguard"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0.6.0"
}, {
"fixed" : "0.8.2"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 0.8.1"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/Jo-Jo98/ciguard/security/advisories/GHSA-xw8c-rrvx-f7xq"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-44219"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/Jo-Jo98/ciguard"
}, {
"type" : "WEB",
"url" : "https://github.com/Jo-Jo98/ciguard/releases/tag/v0.8.2"
}, {
"type" : "WEB",
"url" : "https://github.com/Jo-Jo98/ciguard/releases/tag/v0.8.3"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-770" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-05-05T22:17:43Z",
"nvd_published_at" : "2026-05-12T20:16:42Z"
}
}