UltraVNC Repeater w wersji do 1.8.2.2 zawiera podatność typu global buffer overflow w wbudowanym serwerze administracyjnym HTTP, umożliwiającą zdalne wykonanie kodu. Atakujący nieposiadający żadnych poświadczeń może, wysyłając pojedyncze żądanie HTTP, przejąć kontrolę nad systemem hostującym repeater.
▸ Pokaż oryginał (EN)
UltraVNC repeater through 1.8.2.2 contains a global buffer overflow in its embedded HTTP administration server. The functions wi_senderr() and wi_replyhdr() in repeater/webgui/webutils.c write the caller-supplied HTTP request URI into a fixed 1000-byte global buffer (hdrbuf) via unchecked sprintf calls. The HTTP receive buffer accepts URIs up to approximately 150 KB (WI_RXBUFSIZE = 153600), so an unauthenticated attacker who can reach the repeater HTTP port (default TCP 80) can overflow hdrbuf by at least 500 bytes with a single HTTP request containing a URI of 1500 bytes or longer, corrupting adjacent .bss-segment globals. The overflow occurs before any authentication check, making it reachable without credentials. A remote, unauthenticated attacker can achieve arbitrary code execution on the host running the repeater.
Funkcje wi_senderr() i wi_replyhdr() w pliku repeater/webgui/webutils.c kopiują identyfikator URI z żądania HTTP do stałego, globalnego bufora hdrbuf o rozmiarze 1000 bajtów przy użyciu niezabezpieczonego wywołania sprintf() — bez sprawdzania długości wejścia. Bufor odbiorczy HTTP akceptuje URI o długości do około 150 KB (WI_RXBUFSIZE = 153600), więc URI o długości 1500 bajtów lub dłuższy powoduje przepełnienie bufora o co najmniej 500 bajtów, nadpisując sąsiednie zmienne globalne w segmencie .bss. Przepełnienie następuje zanim zostanie wykonana jakakolwiek weryfikacja uwierzytelnienia, co sprawia, że podatność jest dostępna bez żadnych poświadczeń przez domyślny port TCP 80.
Zdalny, nieuwierzytelniony atakujący może uzyskać możliwość wykonania dowolnego kodu (RCE) na hoście z uruchomionym procesem UltraVNC Repeater, co prowadzi do pełnego przejęcia kontroli nad systemem.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://uvnc.com/ oraz https://github.com/ultravnc/UltraVNC). Do czasu zastosowania poprawki zaleca się ograniczenie dostępu do portu HTTP repeatera (domyślnie TCP 80) wyłącznie do zaufanych adresów IP za pomocą firewall lub reguł ACL, a także rozważenie wyłączenia wbudowanego interfejsu administracyjnego HTTP, jeśli nie jest niezbędny.
UltraVNC Repeater w wersji do 1.8.2.2 włącznie
Podatność jest osiągalna bez uwierzytelnienia (Auth Bypass) na domyślnym porcie TCP 80. Wektor ataku sieciowy, brak wymagań co do uprawnień i interakcji użytkownika (AV:N/PR:N/UI:N) przy wyniku CVSS 4.0 równym 9.3 wskazują na wyjątkowo niski próg wykorzystania.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XUvnc Ultravnc
APPUvnc≤ 1.8.2.2
Powiązane podatności
UltraVNC Repeater — hardcoded domyślne hasło administratora HTTP
UltraVNC: wielokrotne podatności off-by-one umożliwiające RCE
UltraVNC: podatność out-of-bounds w dekoderze Ultra2 klienta VNC (RCE)
UltraVNC – wielokrotne odczyty/zapisy poza buforem przez makro SETPIXELS
UltraVNC: wielokrotny out-of-bounds access umożliwiający RCE w kliencie VNC