Katalog CVE

CVE-2026-76840

KrytyczneCVSS 9.6
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Streszczenie

Przekierowanie schowka w RustDesk dla Windows kopiuje długość dostarczoną przez peera do bufora o stałym rozmiarze bez górnej granicy. Gdy konsument wklejania OLE, taki jak explorer.exe, wywołuje IStream::Read z buforem o rozmiarze cb, funkcja CliprdrStream_Read w libs/clipboard/src/windows/wf_cliprdr.c żąda tej liczby bajtów zdalnego pliku przez cliprdr_send_request_filecontents, a następnie wykonuje CopyMemory(pv, clipboard->req_fdata, clipboard->req_fsize), gdzie req_fsize jest pobierane dosłownie z odpowiedzi CLIPRDR FileContentsResponse od peera i nigdy nie jest ograniczane do cb w całym łańcuchu. Jedyne porównanie długości w funkcji, req_fsize < cb, obsługuje przypadek krótkiego odczytu i jest oceniane po już wykonanym kopiowaniu. Złośliwy lub skompromitowany peer, który odpowiada na mały odczyt zawartości pliku z nadmiernie dużą odpowiedzią, zapisuje dane wybrane przez atakującego poza końcem bufora sterty konsumenta wklejania, gdy lokalny użytkownik wkleja zawartość pliku ze schowka oferowaną przez zdalną stronę.

Ocena ryzyka

Ryzyko obejmuje zdalne wykonanie kodu lub awarię aplikacji konsumenta wklejania (np. explorer.exe) w kontekście lokalnego użytkownika, co może prowadzić do naruszenia integralności systemu i potencjalnej eskalacji uprawnień.

Rekomendacja

Zaleca się aktualizację RustDesk do wersji zawierającej poprawkę, która ogranicza req_fsize do rozmiaru bufora cb, oraz unikanie wklejania zawartości schowka z niezaufanych źródeł zdalnych.

Oryginalny opis (angielski, źródło NVD)

RustDesk's Windows clipboard redirection copies a peer-supplied length into a fixed-size caller buffer without an upper bound check. When an OLE paste consumer such as explorer.exe calls IStream::Read with a buffer of cb bytes, CliprdrStream_Read in libs/clipboard/src/windows/wf_cliprdr.c requests that many bytes of a remote file through cliprdr_send_request_filecontents and then executes CopyMemory(pv, clipboard->req_fdata, clipboard->req_fsize), where req_fsize is taken verbatim from the peer's CLIPRDR FileContentsResponse by wf_cliprdr_server_file_contents_response (req_fsize = fileContentsResponse->cbRequested) and is never clamped to cb anywhere in the chain. The function's only length comparison, req_fsize < cb, handles the short-read case and is evaluated after the copy has already occurred. A malicious or compromised peer that answers a small file-contents read with an oversized response therefore writes attacker-chosen data past the end of the paste consumer's heap buffer when the local user pastes clipboard file contents offered by the remote side. The file is a fork of FreeRDP's client/Windows/wf_cliprdr.c, where the same defect is CVE-2026-68579, fixed in FreeRDP 3.30.0.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS