Security Vulnerability Report
中文
CVE-2026-44028 CVSS 7.5 HIGH

CVE-2026-44028

Published: 2026-05-05 01:16:07
Last Modified: 2026-05-09 04:16:27

Description

An issue was discovered in Nix before 2.34.7 and Lix before 2.95.2. Unbounded recursion in the NAR (Nix Archive) parser could lead to a stack-to-heap overflow when the parser is run on a coroutine stack. The stack is allocated without a guard page, which means that a stack overflow could overwrite memory on the heap and could allow arbitrary code execution as the Nix daemon (run as root in multi-user installations) if ASLR hardening is bypassed. This can be exploited by all users able to connect to the daemon (e.g., in Nix, this is configurable via the allowed-users setting, defaulting to all users). The fixed versions are 2.34.7, 2.33.6, 2.32.8, 2.31.5, 2.30.5, 2.29.4, and 2.28.7 for Nix (introduced in 2.24.4); and 2.95.2, 2.94.2, and 2.93.4 for Lix (introduced in 2.93.0).

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N

Configurations (Affected Products)

No configuration data available.

Nix < 2.34.7
Nix < 2.33.6
Nix < 2.32.8
Nix < 2.31.5
Nix < 2.30.5
Nix < 2.29.4
Nix < 2.28.7
Lix < 2.95.2
Lix < 2.94.2
Lix < 2.93.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC for CVE-2026-44028: Stack Overflow in NAR Parser # This script generates a nested structure to trigger unbounded recursion. import subprocess import os # Create a directory structure with deep nesting to simulate malicious NAR content # In a real exploit, this would be a crafted binary NAR file. # Here we attempt to trigger the issue via a recursive path import if supported, # or simply demonstrate the concept of sending data to the daemon. def generate_deeply_nested_path(depth): path = "." for i in range(depth): path = os.path.join(path, f"level{i}") os.makedirs(path, exist_ok=True) return path try: print("[*] Creating deep directory structure...") deep_path = generate_deeply_nested_path(10000) # Attempt to add to Nix store (conceptual trigger) # The actual trigger requires a valid NAR format with recursive nodes. print(f"[*] Structure created at {deep_path}") print("[*] Exploit requires sending crafted NAR to nix-daemon.") except Exception as e: print(f"Error: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44028", "sourceIdentifier": "[email protected]", "published": "2026-05-05T01:16:06.983", "lastModified": "2026-05-09T04:16:26.513", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "An issue was discovered in Nix before 2.34.7 and Lix before 2.95.2. Unbounded recursion in the NAR (Nix Archive) parser could lead to a stack-to-heap overflow when the parser is run on a coroutine stack. The stack is allocated without a guard page, which means that a stack overflow could overwrite memory on the heap and could allow arbitrary code execution as the Nix daemon (run as root in multi-user installations) if ASLR hardening is bypassed. This can be exploited by all users able to connect to the daemon (e.g., in Nix, this is configurable via the allowed-users setting, defaulting to all users). The fixed versions are 2.34.7, 2.33.6, 2.32.8, 2.31.5, 2.30.5, 2.29.4, and 2.28.7 for Nix (introduced in 2.24.4); and 2.95.2, 2.94.2, and 2.93.4 for Lix (introduced in 2.93.0)."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.1, "impactScore": 5.8}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-674"}]}], "references": [{"url": "https://discourse.nixos.org/t/security-advisory-local-privilege-escalation-in-lix-and-nix/77407", "source": "[email protected]"}, {"url": "https://github.com/NixOS/nix/security/advisories/GHSA-vh5x-56v6-4368", "source": "[email protected]"}, {"url": "https://lix.systems/blog/2026-05-05-lix-unsigned-integer-overflow/", "source": "[email protected]"}, {"url": "https://www.openwall.com/lists/oss-security/2026/05/04/32", "source": "[email protected]"}, {"url": "https://www.openwall.com/lists/oss-security/2026/05/04/33", "source": "[email protected]"}]}}