Przypadek, który dzisiaj opiszemy, przypomina, że bezpieczeństwo w urządzeniach sieciowych nie może być jedynie marketingowym hasłem – błędy w parsowaniu HTTP to wciąż realne zagrożenie. Wydaje się, że w 2025 roku powinniśmy czuć się bezpiecznie – błędy w przetwarzaniu nagłówków HTTP typu „pre‑auth” powinny należeć do przeszłości. A jednak… SonicWall SMA100 pokazuje, że dzisiaj także można trafić na prymitywne przepełnienia buforów w urządzeniach brzegowych. Na blogu watchTowr Labs opisane zostały trzy krytyczne luki (CVE-2025-40596, -40597 i -40598), wszystkie obecne w firmware SMA100 w wersji 10.2.1.15.
Dlaczego to ważne?
- Pre‑auth atak możliwy z Internetu – brak wymaganej autoryzacji.
- Buffer overflow na stosie i heapie – potencjalne eskalacje.
- XSS także w strefie pre‑auth – choć mniejszy poziom zagrożenia, nadal możliwy do eksploitcji.
- Firmware 10.2.1.15 – każda instalacja tej wersji jest podatna.
CVE-2025-40596 – przepełnienie stosu przed uwierzytelnieniem
Analiza binarki httpd (część EasyAccess obsługująca SSL-VPN) ujawniła prosty, lecz destrukcyjny błąd – użycie sscanf bez ograniczeń w stosie pre‑auth. URI zaczynające się od /__api__/ są porównywane przez strncasecmp, a następnie sscanf kopiujący dane do 0x800‑bajtowego bufora na stosie, bez żadnej kontroli długości.
W efekcie możliwy jest do przeprowadzenia jedno‑linijkowy exploit w Pythonie:
import requests
requests.get("https://ip/__api__/v1/" + "A"*3000, verify=False)
Powoduje on awarię serwera (crash), natomiast wersja z ~2000 znaków kończy się „400 Bad Request”. Stack canary prawdopodobnie chroni przed pełnym RCE, ale i tak w 2025 roku takie błędy to skandal.
CVE-2025-40597 – przepełnienie sterty pre‑auth
Drugi błąd pojawia się w module mod_httprp.so (HTTP reverse proxy). Podczas parsowania nagłówka Host: używana jest bezpieczna wersja sprintf (zapewniona przez calloc), lecz i tak następuje out-of-bounds write. Alokowana jest pamięć o rozmiarze 0x80, ale wejście możliwe do wstrzyknięcia przekracza ten limit i nadpisuje sąsiednie struktury.
Powyższe pokazuje, że nawet „bezpieczne” funkcje z runtime guardami mogą zawieść bez właściwej walidacji długości.
CVE‑2025‑40598 – reflected XSS pre‑auth z interakcją użytkownika
Trzecia luka to klasyczne reflected XSS – również dostępne przed uwierzytelnieniem, ale wymagające interakcji (np. kliknięcie linka). Złośliwy kod JavaScript zostaje zwrócony w odpowiedzi na nieprawidłowo przetworzoną część żądania HTTP. Choć nie prowadzi do RCE, może umożliwić np. wykradanie ciasteczek sesji lub przekierowanie ofiary.
Kontekst i frustracja techniczna
Autorzy podkreślają gorzki kontekst: urządzenia sieciowe nadal cierpią z powodu podstawowych błędów z czasów kodu C (nagłówki HTTP błędnie parsowane, brak ograniczeń). Wiążą to z powszechną obecnością sscanf w kodzie urządzeń brzegowych – „bonusowe punkty, jeśli używa się sscanf!”.
Rekomendacje dla administratorów
- Natychmiastowy upgrade firmware’u – SonicWall opublikował poradnik z łatającymi wersjami.
- Wdrożenie Web Application Firewall (WAF) jako bufora przed atakami na główny interfejs.
- Monitorowanie logów HTTP – nagłówki nietypowo długie lub malformed mogą wskazywać exploita.
- Segmentacja sieci – ograniczenie ekspozycji urządzeń SSL‑VPN na sieciowo otwarte strefy.
Podsumowanie
Trzy CVE ujawnione przez watchTowr Labs (40596, 40597, 40598) to sygnał, że problem przestarzałego kodu nadal żyje. Buffer overflow w module pre‑auth, łatwo triggerowany, a do tego reflected XSS – to nie są błędy godne urządzeń bezpieczeństwa w 2025 roku. Choć stack protection może ograniczać skutki, administracja musi działać szybciej.