Implementacja uwierzytelniania HTTP Basic w serwerze Embedthis GoAhead nie stosuje porównania stałoczasowego (constant-time memcmp) ani ograniczenia liczby prób logowania. Umożliwia to zdalnemu atakującemu odgadnięcie hasła bajt po bajcie poprzez analizę czasu odpowiedzi serwera.
▸ Pokaż oryginał (EN)
The code that performs password matching when using 'Basic' HTTP authentication does not use a constant-time memcmp and has no rate-limiting. This means that an unauthenticated network attacker can brute-force the HTTP basic password, byte-by-byte, by recording the webserver's response time until the unauthorized (401) response.
Podczas weryfikacji hasła w mechanizmie HTTP Basic Auth kod porównuje podane hasło z wzorcem w sposób zależny od czasu — funkcja memcmp kończy działanie w momencie napotkania pierwszej różnicy między bajtami. Atakujący może wysyłać kolejne żądania z różnymi wariantami hasła i mierzyć czas odpowiedzi serwera (timing side-channel): dłuższy czas przetwarzania oznacza, że więcej kolejnych bajtów hasła jest poprawnych. Brak mechanizmu rate-limiting oznacza, że atakujący może wykonywać nieograniczoną liczbę takich prób bez żadnych konsekwencji. W efekcie hasło może zostać odgadnięte znak po znaku w czasie wielokrotnie krótszym niż klasyczny brute-force.
Nieuwierzytelniony atakujący sieciowy może odgadnąć hasło HTTP Basic Auth i uzyskać pełen dostęp do zasobów chronionych tym mechanizmem, co może prowadzić do przejęcia kontroli nad urządzeniem lub systemem.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dodatkowo zaleca się wdrożenie mechanizmów rate-limiting na poziomie sieciowym (np. firewall, reverse proxy) ograniczających liczbę prób uwierzytelnienia z jednego adresu IP, a docelowo zastąpienie HTTP Basic Auth bezpieczniejszym mechanizmem uwierzytelniania.
Embedthis GoAhead — wersje wskazane w referencjach producenta (zgłoszenie: https://github.com/embedthis/goahead/issues/304)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEmbedthis Goahead
APPEmbedthis< 5.1.4
Powiązane podatności
GoAhead WebServer: niewystarczająca entropia nonce w uwierzytelnianiu HTTP Digest
GoAhead: tunelowanie zmiennych środowiskowych do skryptów CGI przez upload pliku
GoAhead Web Server: RCE przez use-after-free w obsłudze multipart/form-data
NULL pointer dereference w obsłudze CGI serwera EmbedThis GoAhead 4.0.0
Ujawnienie hasła konfiguracyjnego w kamerach IP przez GoAhead