CVE-2026-73259
ŚrednieCVSS 5.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 34 - wyżej niż 34% wszystkich znanych CVE
Streszczenie
Mongoose to wbudowany serwer WWW i biblioteka sieciowa. Przed wersją 7.22 zdalny atakujący może wysłać spreparowaną ścieżkę zakodowaną procentowo do wdrożenia używającego MG_ENABLE_DIRLIST i nakłonić użytkownika do jej odwiedzenia. Funkcje mg_http_serve_dir() i listdir() w src/http.c umieszczają zdekodowany URI żądania w elementach title i h1 bez kodowania encji HTML. Powstały odbity cross-site scripting wykonuje się w kontekście Mongoose i może ujawnić dane sesji lub wykonać działania jako ofiara. Problem naprawiono w wersji 7.22.
Ocena ryzyka
Atak może prowadzić do kradzieży danych sesji użytkowników lub wykonania nieautoryzowanych działań w ich imieniu, co może naruszyć poufność i integralność aplikacji.
Rekomendacja
Zaleca się aktualizację Mongoose do wersji 7.22 lub nowszej oraz unikanie włączania MG_ENABLE_DIRLIST w środowiskach produkcyjnych, jeśli to możliwe.
Inne podatności w Mongoose
Zobacz wszystkie- CVE-2026-73257Krytyczne
Podatność w Mongoose przed wersją 7.22 pozwala zdalnemu nieuwierzytelnionemu atakującemu na wysłanie żądania HTTP zawierającego zarówno Content-Length, jak i Transfer-Encoding: chunked. Kontrolery cl_count i te_count akceptują oba nagłówki i priorytetyzują kodowanie chunked, co prowadzi do desynchronizacji CL.TE i umożliwia wstrzyknięcie żądań w kontekście innego użytkownika.
- CVE-2026-73256Krytyczne
Podatność w Mongoose przed wersją 7.22 umożliwia zdalnemu nieuwierzytelnionemu atakującemu wykorzystanie wdrożenia z odwrotnym proxy HTTP/1.0 poprzez wysłanie żądania z Transfer-Encoding: chunked i sprzecznym framingiem. Funkcja http_cb() testuje hm.proto.len z niemożliwym warunkiem większym niż osiem, co powoduje, że is_http_1_0 nigdy nie jest ustawiane, a Mongoose przetwarza chunked encoding, które proxy HTTP/1.0 może zignorować.
- CVE-2026-73253Krytyczne
Podatność w Mongoose przed wersją 7.22 pozwala atakującemu sieciowemu z certyfikatem wildcard dla domeny nadrzędnej na podszywanie się pod głębsze subdomeny wobec klienta używającego wbudowanego stosu TLS. Funkcje mg_tls_verify_cert_san() i mg_tls_verify_cert_cn() wywołują mg_match(), którego wildcard może przekraczać granice etykiet DNS, więc wzorzec taki jak *.example.com może pasować do foo.bar.example.com.
- CVE-2026-73251Krytyczne
Podatność w Mongoose przed wersją 7.23 pozwala atakującemu sieciowemu na podszywanie się pod serwer TLS wobec klienta Mongoose skonfigurowanego z pakietem wielu certyfikatów CA. Funkcja mg_tls_init() przechowuje pakiet w tls->ca_bundle_der, podczas gdy tls->ca_der.len pozostaje zerowe, a mg_tls_recv_cert() używa tls_bundle_find() do akceptacji dopasowania Common Name bez weryfikacji podpisu certyfikatu.
- CVE-2026-73261Wysokie
Mongoose, wbudowany serwer webowy i biblioteka sieciowa, przed wersją 7.23 nie odrzuca opcji TCP, której zadeklarowana długość opts[1] przekracza pozostałe bajty opcji. W handle_opt() sekwencja NOP, po której następuje obcięta opcja MSS, powoduje odczyt opts[3] poza zadeklarowanym obszarem opcji i użycie go jako dolnego bajtu dmss. Nieuwierzytelniony zdalny peer może uszkodzić wartość MSS dla połączenia, przez co późniejsze wywołania mg_send() wysyłają obcięte lub zerowej długości ładunki aplikacji, podczas gdy połączenie TCP wygląda na sprawne.
- CVE-2026-73260Wysokie
Mongoose, wbudowany serwer webowy i biblioteka sieciowa, przed wersją 7.23 w parserze certyfikatów TLS wybieranym przez MG_TLS_BUILTIN nie weryfikuje, czy długość elementu DER w formacie long-form mieści się w pozostałym buforze certyfikatu. W mg_der_to_tlv() i mg_der_next() długość kontrolowana przez peera może przesunąć parser poza certyfikat i spowodować niedomiar pozostałej długości uint32_t, przez co mg_tls_parse_cert_der() kontynuuje pracę na nieprawidłowym wskaźniku. Nieuwierzytelniony złośliwy serwer TLS lub klient przedstawiający certyfikat serwerowi skonfigurowanemu do certyfikatów klienta może wywołać odczyt poza zakresem i odmowę usługi podczas uzgadniania.
- CVE-2026-73252Wysokie
Mongoose, wbudowany serwer webowy i biblioteka sieciowa, przed wersją 7.23 w stosie TLS wybieranym przez MG_TLS_BUILTIN w src/tls_builtin.c akceptuje rekord TLS 1.3, którego odszyfrowany rozmiar wynosi dokładnie 16 bajtów znacznika uwierzytelniającego, bez tekstu jawnego i bajtu ContentType. W mg_tls_recv_record() sprawdzenie długości msgsz przepuszcza taki rekord, a obliczenie recv_len ulega niedomiarowi do SIZE_MAX, przez co późniejszy krok uzgadniania traktuje nieaktualną zawartość bufora jako zaufaną wiadomość o praktycznie nieograniczonej długości. Nieuwierzytelniony złośliwy peer TLS może wywołać odczyt poza zakresem sterty przed walidacją certyfikatu lub Finished, powodując zdalną odmowę usługi.
- CVE-2026-63626Wysokie
Mongoose, wbudowany serwer webowy i biblioteka sieciowa, przed wersją 7.23 w funkcji ppp_handle_ipv6cp() w src/l2_ppp.c ufa 16-bitowemu polu len IPv6CP bez sprawdzenia go względem rozmiaru odebranego ładunku. W łączu PPP lub PPPoE używającym MG_ENABLE_TCPIP i MG_ENABLE_IPV6 nieuwierzytelniony sąsiadujący peer może zakończyć wymaganą wymianę LCP i wysłać krótki Configure-Request z nadmierną długością, powodując odczyt poza recv_queue.buf i zapis poza tx.buf w ppp_tx_frame(). To samo nadużycie długości może również ujawnić sąsiednie bajty sterty w odpowiedzi lub zawiesić pętlę zdarzeń przez find_opt().
- CVE-2026-73258Średnie
Mongoose to wbudowany serwer WWW i biblioteka sieciowa. Przed wersją 7.22 zdalny atakujący może umieścić pojedynczy znak powrotu karetki lub nowej linii w danych multipart przetwarzanych przez mg_http_next_multipart() w src/http.c. Pętle porównujące s[b] i s[b+1] oraz s[h2] i s[h2+1] używają nieprawidłowego warunku AND i zatrzymują się, gdy którykolwiek znak przypomina część terminatora CRLF. To skraca nagłówki, nazwy plików lub granice i może spowodować, że aplikacja zaakceptuje niebezpieczną zawartość po zobaczeniu mylącej wartości Content-Type. Problem naprawiono w wersji 7.22.
- CVE-2026-73255Średnie
Mongoose to wbudowany serwer WWW i biblioteka sieciowa. Przed wersją 7.22 atakujący, który może kontrolować plik z włączonym SSI, może umieścić sekwencje traversal katalogów w dyrektywie #include file lub #include virtual. Funkcja mg_ssi() w src/ssi.c łączy argument dyrektywy ze ścieżką systemu plików bez wywołania mg_path_is_sane(), co pozwala wdrożeniu z MG_ENABLE_SSI i skonfigurowanym ssi_pattern na ujawnienie plików czytelnych dla procesu Mongoose. Problem naprawiono w wersji 7.22.
Oryginalny opis (angielski, źródło NVD)
Mongoose is an embedded web server and network library. Prior to 7.22, a remote attacker can send a crafted percent-encoded request path to a deployment using MG_ENABLE_DIRLIST and persuade a user to visit it. The mg_http_serve_dir() and listdir() path in src/http.c places the decoded request URI into the title and h1 elements without HTML entity encoding. The resulting reflected cross-site scripting executes in the Mongoose origin and can expose session data or perform actions as the victim. This issue is fixed in version 7.22.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

