CVE-2026-7831
WysokieCVSS 7.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 41 - wyżej niż 41% wszystkich znanych CVE
Streszczenie
UltraVNC viewer do wersji 1.8.2.2 zawiera przepełnienie bufora stosu o jeden bajt w obsłudze wiadomości ServerInit protokołu RFB. Gdy serwer poda nazwę pulpitu o długości dokładnie 2024 bajtów, funkcja ReadString zapisuje znak null poza przydzielonym buforem, co może prowadzić do uszkodzenia danych na stosie.
Ocena ryzyka
Złośliwy serwer VNC może wykorzystać tę podatność do spowodowania awarii klienta (odmowa usługi) lub potencjalnie do wykonania dowolnego kodu, jeśli ochrona stosu (canary) jest wyłączona. Atak wymaga interakcji użytkownika, który musi połączyć się z niebezpiecznym serwerem.
Rekomendacja
Zaleca się natychmiastową aktualizację UltraVNC do wersji nowszej niż 1.8.2.2, gdy tylko będzie dostępna. Do czasu aktualizacji należy unikać łączenia się z niezaufanymi serwerami VNC.
Inne podatności w UltraVNC
Zobacz wszystkie- CVE-2026-7838Wysokie
W UltraVNC viewer do wersji 1.8.2.2 wykryto przepełnienie liczby całkowitej prowadzące do przepełnienia bufora sterty w ścieżce parsowania odpowiedzi błędu protokołu RFB. Pole reasonLen o rozmiarze 4 bajtów (typ CARD32) jest przekazywane jako reasonLen+1 do funkcji CheckBufferSize(), a przy wartości 0xFFFFFFFF dochodzi do przepełnienia do 0, co powoduje alokację tylko 256 bajtów. Następnie funkcja ReadString() odczytuje oryginalne 4 GiB danych do tego małego bufora, co prowadzi do przepełnienia.
- CVE-2026-7830Wysokie
UltraVNC do wersji 1.8.2.2 używa słabej kryptografii w schemacie uwierzytelniania MS-Logon II. Wymiana kluczy Diffie-Hellmana opiera się na parametrach 64-bitowych, które można złamać w ułamku sekundy, a generator liczb losowych oparty na funkcji rand() z ziarnem czasowym pozwala na odzyskanie klucza prywatnego w minutę.
- CVE-2026-7828Średnie
W repeaterze UltraVNC do wersji 1.8.2.2 występuje przepełnienie liczby całkowitej w funkcji win_log() podczas alokacji pamięci dla listy węzłów. Atakujący może wysłać odpowiednio długi URI HTTP, co prowadzi do przepełnienia bufora sterty, potencjalnie umożliwiając częściowy zapis poza przydzielonym obszarem.
- CVE-2026-44041Średnie
Podatność w UltraVNC do wersji 1.8.2.2 powoduje odczyt poza zakresem w funkcji konwersji szerokich znaków na wielobajtowe. Funkcja vncWc2Mb() wywołuje wcslen() na buforze dostarczonym przez wywołującego bez wcześniejszego sprawdzenia granic, co może prowadzić do odczytu poza przydzieloną pamięcią.
- CVE-2026-44040Średnie
UltraVNC do wersji 1.8.2.2 używa kryptograficznie słabego generatora liczb pseudolosowych do tworzenia bajtów wyzwania uwierzytelniania VNC. Funkcja vncRandomBytes() inicjuje libc rand() wartościami time(0) + getpid() + rand(), co daje przestrzeń seeda około 31 bitów, całkowicie determinowaną przez publicznie obserwowalne wartości (czas i PID). Atakujący może przewidzieć wyzwanie w ciągu sekund, co umożliwia fałszowanie lub brute-force odpowiedzi.
Oryginalny opis (angielski, źródło NVD)
UltraVNC viewer through 1.8.2.2 contains an off-by-one stack buffer overflow in the RFB ServerInit message handler. In vncviewer/ClientConnection.cpp, when the server-supplied nameLength equals exactly 2024 the code declares a 2024-byte stack buffer _dn[2024] and calls ReadString(_dn, 2024). ReadString writes the NUL terminator at buf[length], i.e., _dn[2024], one byte past the end of the stack buffer. A malicious VNC server can trigger this condition by advertising a desktop name of length 2024 in its ServerInit message. On release builds without stack canaries the single-byte NUL overwrite adjacent stack data. On builds with /GS stack protection the canary is corrupted and the process terminates, resulting in denial of service. User interaction (connecting the viewer to the malicious server) is required.

