Duty Analyst: Joseph McCarthy

CVE-2026-48710

Published: 2026-05-26 22:16:44 | Last modified: 2026-06-03 02:14:40

MEDIUM CVSS 6.5
No EPSS data

Description

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP `Host` request header was not validated before being used to reconstruct `request.url`. Because the routing algorithm relies on the raw HTTP path while `request.url` is rebuilt from the `Host` header, a malformed header could make `request.url.path` differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on `request.url` (rather than the raw `scope` path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the `Host` header against the grammar of RFC 9112 ยง3.2 / RFC 3986 ยง3.2.2 when constructing `request.url` and falls back to `scope["server"]` for malformed values.

CVSS details

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

EPSS

This CVE is not currently listed in the EPSS dataset.

Show JSON
{
    "cve": {
        "id": "CVE-2026-48710",
        "cveTags": [],
        "metrics": {
            "cvssMetricV31": [
                {
                    "type": "Secondary",
                    "source": "security-advisories@github.com",
                    "cvssData": {
                        "scope": "UNCHANGED",
                        "version": "3.1",
                        "baseScore": 6.5,
                        "attackVector": "NETWORK",
                        "baseSeverity": "MEDIUM",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N",
                        "integrityImpact": "LOW",
                        "userInteraction": "NONE",
                        "attackComplexity": "LOW",
                        "availabilityImpact": "NONE",
                        "privilegesRequired": "NONE",
                        "confidentialityImpact": "LOW"
                    },
                    "impactScore": 2.5,
                    "exploitabilityScore": 3.9
                },
                {
                    "type": "Primary",
                    "source": "nvd@nist.gov",
                    "cvssData": {
                        "scope": "UNCHANGED",
                        "version": "3.1",
                        "baseScore": 6.5,
                        "attackVector": "NETWORK",
                        "baseSeverity": "MEDIUM",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N",
                        "integrityImpact": "LOW",
                        "userInteraction": "NONE",
                        "attackComplexity": "LOW",
                        "availabilityImpact": "NONE",
                        "privilegesRequired": "NONE",
                        "confidentialityImpact": "LOW"
                    },
                    "impactScore": 2.5,
                    "exploitabilityScore": 3.9
                }
            ]
        },
        "published": "2026-05-26T22:16:44.020",
        "references": [
            {
                "url": "https://badhost.org",
                "tags": [
                    "Mitigation",
                    "Third Party Advisory"
                ],
                "source": "security-advisories@github.com"
            },
            {
                "url": "https://github.com/Kludex/starlette/commit/764dab0dcfb9033d75442d7a359645c9f94648c6",
                "tags": [
                    "Patch"
                ],
                "source": "security-advisories@github.com"
            },
            {
                "url": "https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr",
                "tags": [
                    "Vendor Advisory"
                ],
                "source": "security-advisories@github.com"
            },
            {
                "url": "https://github.com/pypa/advisory-database/tree/main/vulns/starlette/PYSEC-2026-161.yaml",
                "tags": [
                    "Third Party Advisory"
                ],
                "source": "security-advisories@github.com"
            },
            {
                "url": "https://ostif.org/disclosing-the-badhost-vulnerability-in-starlette",
                "tags": [
                    "Mitigation",
                    "Third Party Advisory"
                ],
                "source": "security-advisories@github.com"
            },
            {
                "url": "https://www.secwest.net/starlette",
                "tags": [
                    "Exploit",
                    "Mitigation",
                    "Third Party Advisory"
                ],
                "source": "security-advisories@github.com"
            },
            {
                "url": "https://www.x41-dsec.de/lab/advisories/x41-2026-002-starlette",
                "tags": [
                    "Exploit",
                    "Mitigation",
                    "Third Party Advisory"
                ],
                "source": "security-advisories@github.com"
            }
        ],
        "vulnStatus": "Analyzed",
        "weaknesses": [
            {
                "type": "Primary",
                "source": "security-advisories@github.com",
                "description": [
                    {
                        "lang": "en",
                        "value": "CWE-444"
                    }
                ]
            }
        ],
        "descriptions": [
            {
                "lang": "en",
                "value": "Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP `Host` request header was not validated before being used to reconstruct `request.url`. Because the routing algorithm relies on the raw HTTP path while `request.url` is rebuilt from the `Host` header, a malformed header could make `request.url.path` differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on `request.url` (rather than the raw `scope` path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the `Host` header against the grammar of RFC 9112 \u00a73.2 / RFC 3986 \u00a73.2.2 when constructing `request.url` and falls back to `scope[\"server\"]` for malformed values."
            }
        ],
        "lastModified": "2026-06-03T02:14:40.100",
        "configurations": [
            {
                "nodes": [
                    {
                        "negate": false,
                        "cpeMatch": [
                            {
                                "criteria": "cpe:2.3:a:encode:starlette:*:*:*:*:*:python:*:*",
                                "vulnerable": true,
                                "matchCriteriaId": "4C7C6045-86A6-4FAC-AE15-B12438E9D1B4",
                                "versionEndExcluding": "1.0.1",
                                "versionStartIncluding": "0.8.3"
                            }
                        ],
                        "operator": "OR"
                    }
                ]
            }
        ],
        "sourceIdentifier": "security-advisories@github.com"
    }
}