Luka oznaczona identyfikatorem CVE-2026-54283 otrzymała ocenę 7.5 w skali CVSS (Common Vulnerability Scoring System — skala 0-10 oceniająca powagę luki). Problem dotyczy Starlette 1, lekkiego frameworka ASGI (Asynchronous Server Gateway Interface), który stanowi fundament dla wielu popularnych narzędzi w ekosystemie Pythona, w tym FastAPI. Błąd w logice walidacji może prowadzić do wyczerpania zasobów serwera, czyli ataku typu Denial of Service (DoS).

Problem jest szczególnie istotny dla polskich zespołów deweloperskich, ponieważ framework FastAPI cieszy się dużą popularnością przy budowie nowoczesnych API, od małych projektów po duże platformy SaaS i e-commerce. Luka oznacza, że nawet poprawnie skonfigurowane limity bezpieczeństwa mogły nie działać zgodnie z oczekiwaniami, wystawiając aplikacje na ryzyko. ## TL;DR

  • Produkt: Starlette, framework ASGI dla Pythona.
  • Problem: Ominięcie limitów wielkości danych formularza, prowadzące do DoS.
  • Identyfikator: CVE (Common Vulnerabilities and Exposures, identyfikator publicznie znanej luki) CVE-2026-54283.
  • Wektor: Wysłanie spreparowanego żądania HTTP z typem zawartości application/x-www-form-urlencoded 2.
  • Kogo dotyczy: Aplikacje używające Starlette w wersjach od 0.4.1 do 1.3.1 3, w tym aplikacje oparte o FastAPI i inne zależne frameworki.
  • Pierwszy ruch: Identyfikacja użycia Starlette w zależnościach projektu i aktualizacja do wersji 1.3.1 lub nowszej 4.

Wektor ataku

Analiza luki wskazuje na błąd w obsłudze różnych typów zawartości dla danych przesyłanych w formularzach HTTP. Starlette, w wersjach od 0.4.1, pozwala deweloperom na ustawienie limitów dla przetwarzanych formularzy za pomocą metody request.form() 3. Parametry max_fields oraz max_part_size mają chronić aplikację przed nadmiernym zużyciem pamięci i procesora podczas parsowania danych od klienta.

Problem polega na tym, że te zabezpieczenia są stosowane poprawnie tylko dla żądań z typem zawartości multipart/form-data. Źródło wskazuje, że w przypadku żądań typu application/x-www-form-urlencoded, ustawione limity są całkowicie ignorowane przez framework 2.

Konsekwencją jest prosta ścieżka do ataku. Nieautoryzowany atakujący może przygotować żądanie HTTP POST z typem zawartości application/x-www-form-urlencoded, które zawiera ogromną liczbę pól lub jedno pole o bardzo dużej wielkości 5. Serwer, próbując przetworzyć takie żądanie, zużyje nieproporcjonalnie duże zasoby CPU i RAM. Dzieje się tak nawet wtedy, gdy deweloper był przekonany, że jego aplikacja jest chroniona przez skonfigurowane limity 6. W scenariuszu ataku na dużą skalę może to doprowadzić do całkowitej niedostępności usługi dla legalnych użytkowników.

Co zrobić w 24-48h

Rekomendowane podejście zakłada natychmiastową weryfikację i aktualizację zależności. Poniższe kroki nie zastępują pełnej konsultacji bezpieczeństwa, ale stanowią podstawę reakcji.

  1. Identyfikacja zależności. Pierwszym krokiem dla każdego polskiego zespołu deweloperskiego powinno być sprawdzenie pliku requirements.txt lub pyproject.toml (w przypadku użycia Poetry/PDM) pod kątem obecności biblioteki starlette. Należy pamiętać, że Starlette może być zależnością tranzytywną, najczęściej instalowaną razem z fastapi. Użycie polecenia pip freeze | grep starlette lub poetry show --tree pomoże zidentyfikować zainstalowaną wersję.

  2. Aktualizacja do wersji 1.3.1. Luka została załatana w wersji 1.3.1 frameworka Starlette 4. Należy zaktualizować bibliotekę do tej lub nowszej wersji. W większości przypadków wystarczy polecenie pip install --upgrade starlette. Jeśli Starlette jest zależnością FastAPI, aktualizacja samego FastAPI do najnowszej wersji powinna pociągnąć za sobą bezpieczną wersję Starlette.

  3. Weryfikacja po wdrożeniu. Po aktualizacji należy przeprowadzić testy regresji, aby upewnić się, że nowa wersja nie wprowadziła problemów z kompatybilnością. Warto również rozważyć dodanie do firmowej polityki bezpieczeństwa regularnych audytów zależności, np. za pomocą narzędzi takich jak pip-audit czy safety.

  4. Kontekst NIS2. Dla podmiotów kluczowych i ważnych w Polsce, objętych dyrektywą NIS2 (unijna dyrektywa o bezpieczeństwie sieci, obowiązuje od 2024), tego typu luki w łańcuchu dostaw oprogramowania mają znaczenie prawne. Zapewnienie bezpieczeństwa komponentów firm trzecich jest częścią obowiązku dbałości o cyberbezpieczeństwo. ## Źródła

  5. 1 3 2 5 6 4 National Vulnerability Database, CVE-2026-54283, nvd.nist.gov › CVE 2026 54283

Źródła

Zobacz też

Przypisy

  1. Starlette to lekki framework/zestaw narzędzi ASGI. — nvd.nist.gov › CVE 2026 54283 2

  2. Limity te są egzekwowane dla typu multipart/form-data, ale są cicho ignorowane dla application/x-www-form-urlencoded. — nvd.nist.gov › CVE 2026 54283 2 3

  3. Wersje Starlette od 0.4.1 do 1.3.1 akceptują parametry max_fields i max_part_size w funkcji request.form() w celu ograniczenia zużycia zasobów podczas parsowania danych formularza. — nvd.nist.gov › CVE 2026 54283 2 3

  4. Luka została naprawiona w wersji 1.3.1. — nvd.nist.gov › CVE 2026 54283 2 3

  5. Nieautoryzowany atakujący może wysłać ciało zakodowane w formacie urlencoded z dowolnie dużą liczbą pól lub dowolnie dużym polem. — nvd.nist.gov › CVE 2026 54283 2

  6. Luka ta występuje nawet wtedy, gdy aplikacja skonfigurowała limity, które uważała za obowiązujące. — nvd.nist.gov › CVE 2026 54283 2