Podatność typu integer overflow w funkcji parse_mqtt biblioteki Cesanta Mongoose 6.16 umożliwia zdalnemu atakującemu wywołanie nieskończonej pętli (DoS) lub potencjalnie zapis poza granicami bufora. Zagrożenie jest krytyczne, ponieważ nie wymaga uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
An integer overflow in parse_mqtt in mongoose.c in Cesanta Mongoose 6.16 allows an attacker to achieve remote DoS (infinite loop), or possibly cause an out-of-bounds write, by sending a crafted MQTT protocol packet.
Atakujący wysyła specjalnie spreparowany pakiet protokołu MQTT do aplikacji korzystającej z biblioteki Mongoose. Błędne przetwarzanie wartości liczbowych w funkcji parse_mqtt w pliku mongoose.c prowadzi do przepełnienia liczby całkowitej (integer overflow). Skutkiem może być wejście programu w nieskończoną pętlę (CWE-835) lub przeprowadzenie zapisu poza granicami alokowanego bufora (out-of-bounds write, CWE-787), co wynika również z możliwego odczytu poza granicami (CWE-125).
Atakujący może doprowadzić do niedostępności usługi (DoS) poprzez nieskończoną pętlę, a w scenariuszu bardziej zaawansowanym — do uszkodzenia pamięci, co potencjalnie otwiera drogę do wykonania dowolnego kodu (RCE).
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Zaleca się śledzenie repozytorium projektu pod adresem https://github.com/cesanta/mongoose/issues/1055 oraz aktualizację biblioteki do wersji wolnej od tej podatności. Dodatkowo warto rozważyć filtrowanie ruchu MQTT na poziomie firewall i ograniczenie dostępu do usługi wyłącznie do zaufanych źródeł.
Cesanta Mongoose w wersji 6.16 (plik mongoose.c, funkcja parse_mqtt)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCesanta Mongoose
APPCesanta6.16
Powiązane podatności
Zapis plików poza docelowym folderem w Cesanta Mongoose (mg_http_upload)
Zapis poza granicami bufora (OOB write) w Cesanta Mongoose HTTPS — mg_tls_init
Zapis poza granicami pamięci (OOB write) w Cesanta Mongoose HTTP server 7.0
Zapis poza granicami pamięci (OOB write) w serwerze HTTPS Cesanta Mongoose 7.0
Buffer overflow w Cesanta Mongoose — mg_get_http_header