Er zit een lek in een pakket dat bijna iedereen gebruikt
Als je een SaaS bouwt met een Python-backend, FastAPI, of AI-agents, wil je dit weten. Ars Technica meldde gisteren dat er een kritieke kwetsbaarheid is gevonden in Starlette, een open source package met 325 miljoen downloads per week. De bug heet BadHost en stelt aanvallers in staat om requests te manipuleren op een manier die je AI-agent of backend in gevaar brengt.
Starlette zit verstopt in FastAPI, en FastAPI zit in bijna elk Python AI-project. Je hoeft het niet bewust geinstalleerd te hebben om geraakt te worden.
Wat betekent dit voor jouw project?
Als jouw Claude Code project een Python-backend heeft, kans is groot dat je Starlette ergens in je dependency-tree hebt zitten. Zelfs als je het nooit zelf hebt geinstalleerd. Dit is precies het type risico waar makers zonder dev-achtergrond overheen kijken. Claude Code kan je hier in vijf minuten doorheen loodsen.
Hoe pak je dit aan met Claude Code?
Stap 1: laat Claude Code je dependencies in kaart brengen
Open Claude Code in je projectmap en start met een scan-opdracht:
"Bekijk mijn project en vertel me of ik Starlette gebruik, direct of indirect via andere packages zoals FastAPI. Kijk in requirements.txt, pyproject.toml, poetry.lock en package-lock.json als die aanwezig zijn."
Claude Code leest al je dependency-bestanden en vertelt je precies welke versie je hebt draaien. Je hoeft zelf niks te installeren of te weten hoe je dat doet.
Stap 2: check de precieze versie
Als Claude Code Starlette vindt, vraag dan door:
"Welke versie van Starlette gebruik ik? Is dat een versie die kwetsbaar is voor de BadHost-kwetsbaarheid? Zo ja, wat is de veilige versie waar ik naar moet upgraden?"
Claude Code kan dit niet live opzoeken, maar kan je vertellen welke versie je nu hebt. Zoek zelf even op de Starlette releases op PyPI of in de GitHub changelog welke versie de fix bevat. Voeg die informatie toe aan je volgende prompt.
Stap 3: laat Claude Code de upgrade uitvoeren
Als je weet welke versie veilig is (stel: 0.42.0 of hoger), geef dan dit aan Claude Code:
"Update Starlette naar minimaal versie 0.42.0 in mijn project. Pas requirements.txt of pyproject.toml aan, zorg dat er geen conflicten ontstaan met FastAPI of andere packages, en draai daarna pip install of poetry install om te checken of alles nog werkt."
Claude Code past het bestand aan, voert de install uit, en geeft aan als er conflicten zijn. Het lost die ook op als je vraagt:
"Er is een conflict met FastAPI versie X. Los dat op door ook FastAPI te updaten naar een versie die compatibel is met de nieuwe Starlette."
Stap 4: schrijf een simpele test zodat je weet dat niets kapot is gegaan
Na een dependency-update wil je weten of je app nog gewoon werkt. Vraag Claude Code:
"Schrijf een simpele smoke test die checkt of mijn FastAPI app nog opstart en de belangrijkste endpoints antwoorden geven. Gebruik pytest en httpx. Geen complexe logica, gewoon bevestigen dat de basis nog werkt."
Je krijgt zoiets terug:
import pytest
from httpx import AsyncClient, ASGITransport
from main import app # vervang 'main' met jouw bestandsnaam
@pytest.mark.anyio
async def test_app_starts_and_root_responds():
async with AsyncClient(
transport=ASGITransport(app=app),
base_url="http://test"
) as client:
response = await client.get("/")
assert response.status_code in [200, 404] # 404 is ook OK, app draait dan tenminste
@pytest.mark.anyio
async def test_health_check():
async with AsyncClient(
transport=ASGITransport(app=app),
base_url="http://test"
) as client:
response = await client.get("/health")
assert response.status_code == 200
Vraag Claude Code daarna om de test uit te voeren:
"Voer deze tests uit en laat me weten of ze slagen."
Stap 5: zet een dependency-check in je workflow
Dit is het moment om te voorkomen dat je dit de volgende keer mist. Vraag Claude Code:
"Voeg een pip-audit stap toe aan mijn project zodat ik in de toekomst snel kwetsbare dependencies kan spotten. Maak een bash-script check-security.sh dat pip-audit installeert als het er nog niet is en daarna een scan draait op mijn huidige dependencies."
Je krijgt dan iets als:
#!/bin/bash
# check-security.sh - draai dit regelmatig of voor elke deploy
echo "Installeren van pip-audit..."
pip install pip-audit --quiet
echo "Scannen op kwetsbare packages..."
pip-audit
echo "Klaar. Check de output hierboven op rode of gele meldingen."
Voer het voortaan uit voor elke keer dat je deployt:
bash check-security.sh
Wat te checken na afloop
- Claude Code heeft je
requirements.txtofpyproject.tomlaangepast en de versie van Starlette staat op de gepatchte versie. pip install -r requirements.txt(ofpoetry install) geeft geen errors.- De smoke tests slagen.
pip-auditgeeft geen kritieke meldingen meer terug voor Starlette.- Je app gedraagt zich hetzelfde als voor de update: login werkt, je belangrijkste pagina's laden.
Kort samengevat: dit kost je hooguit twintig minuten, Claude Code doet het zware werk, en je bent af van een kwetsbaarheid die miljoenen projecten raakt. Dat is precies waarvoor je Claude Code gebruikt.
Bij Eighty leer ik je Claude Code in het Nederlands gebruiken, van installatie tot een werkend SaaS-product. Wekelijks een nieuwe module, persoonlijke begeleiding.
