Beveiligingsadvies NCSC-2026-0171 [1.00] [H/M] Kwetsbaarheid verholpen in Starlette

In het Python-ecosysteem is een kwetsbaarheid opgelost in Starlette, het lichte ASGI-framework waarop veel webservices draaien. Starlette vormt de basis van frameworks als FastAPI, waardoor de impact verder reikt dan alleen Starlette-gebruikers. In oudere versies kon een ongeauthenticeerde aanvaller padgebaseerde beveiliging omzeilen en zo URL’s bereiken die eigenlijk afgeschermd horen te zijn. De fout zat in de manier waarop Starlette de URL opnieuw opbouwde op basis van de Host-header: die werd onvoldoende gevalideerd, waardoor het pad van de aangevraagde URL en het pad dat Starlette dacht te zien uit elkaar konden lopen. Dat opent de deur voor het omzeilen van toegangscontroles die op request.url (of request.url.path) vertrouwen. De bug is geregistreerd als CVE-2026-48710 en is verholpen in Starlette 1.0.1. De ernstscore is 6,5 (CVSS v3.1). (github.com)

Wat betekent dit in de praktijk?

  • Draait jouw service op Starlette of op iets dat daarbovenop is gebouwd, zoals FastAPI? Dan kan een kwaadwillende zonder inloggen toch functies of data benaderen die je via padregels afschermt (bijvoorbeeld “alles onder /admin alleen voor ingelogde gebruikers”). Dat risico speelt vooral wanneer middleware of eigen code beslissingen neemt op basis van request.url in plaats van de ruwe HTTP-path uit de ASGI scope. (github.com)
  • Omdat FastAPI op Starlette leunt voor het webgedeelte, erven FastAPI-apps dit gedrag automatisch. (fastapi.tiangolo.com)

Wat is er precies gefikst?

  • Starlette valideert vanaf 1.0.1 de Host-header tegen de relevante RFC’s en valt terug op serverinformatie wanneer de Host-header ongeldig is. Daardoor kan request.url niet langer “vergiftigd” worden met een afwijkend pad en vallen padgebaseerde checks weer samen met wat de router werkelijk afhandelt. (github.com)
  • In de 1.0.1-release is dit expliciet genoemd als wijziging: “Ignore malformed Host header when constructing request.url.” De release kwam op 21 mei 2026 beschikbaar. (github.com)

Aanbevolen acties

  • Upgraden: werk Starlette bij naar ten minste versie 1.0.1. Gebruik je FastAPI, zorg dan dat je dependency-resolutie Starlette ≥1.0.1 ophaalt (of pin die versie expliciet) en draai je CI/CD-pijplijn opnieuw. (github.com)
  • Mitigaties tot de upgrade klaar is:
    • Plaats een reverse proxy (bijv. Nginx of Apache) voor je ASGI-server en laat die ongeldige Host-headers afwijzen of normaliseren. (x41-dsec.de)
    • Baseer beveiligingsbeslissingen niet op request.url, maar op de ruwe scope["path"] of op het daadwerkelijk gematchte endpoint. (x41-dsec.de)
  • Nacontrole: inventariseer welke services van buitenaf bereikbaar zijn, check toegangslogs op verdachte verzoeken en voeg een regressietest toe die een verkeerde Host-header simuleert. Dit helpt herintroductie te voorkomen. (De GitHub-adviespagina benoemt expliciet dat omgevingen achter een proxy deels mitigeren zolang die proxy de Host-header valideert.) (github.com)

Context en reikwijdte

  • De kwetsbaarheid is openbaar gemaakt op 21–22 mei 2026 met het GitHub Security Advisory GHSA-86qp-5c8j-p5mr en het bijbehorende CVE-nummer. Onafhankelijke onderzoekers (X41 D‑Sec) publiceerden een advies met technische achtergrond, impactanalyse en mogelijke workarounds. (github.com)
  • In de berichtgeving wordt de fout ook “BadHost” genoemd; verschillende CERT-organisaties waarschuwen om snel te patchen. (ccb.belgium.be)

Kortom: gebruik je Starlette of FastAPI en heb je logica die op padregels vertrouwt? Patch dan direct naar Starlette 1.0.1 of hoger, zet waar nodig extra validatie op de Host-header in je keten, en controleer je code op aannames rond request.url. Daarmee sluit je het gat waardoor ongeauthenticeerde toegang tot afgeschermde paden mogelijk was. (github.com)

---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
Opzoek naar de laatste updates uit onze securitylog?
Inhoud mede mogelijk gemaakt door OpenAI.