Podatności UltraVNC
6 znanych podatności CVE w UltraVNC, przetłumaczonych i ocenionych.
- 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-7831Wysokie
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.
- 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.

