V Toxcore, referenční implementaci P2P protokolu pro výměnu zpráv Tox, byla zjištěna zranitelnost (CVE-2021-44847), která potenciálně umožňuje spustit kód při zpracování speciálně vytvořeného UDP paketu. Zranitelnosti jsou vystaveny všichni uživatelé aplikací založených na Toxcore, které nemají vypnutý transport UDP. K útoku stačí poslat UDP paket, znát IP adresu, síťový port a otevřený DHT klíč oběti (tyto informace jsou veřejně dostupné v DHT, tj. útok mohl být proveden na jakéhokoli uživatele nebo uzel DHT).
Problém se projevoval ve verzích toxcore od 0.1.9 do 0.2.12 a byl odstraněn ve verzi 0.2.13. Z klientských aplikací zatím vydal aktualizaci s odstraněním zranitelnosti pouze projekt qTox. Jako dočasné opatření ochrany lze vypnout použití UDP a ponechat podporu TCP.
Zranitelnost je způsobena přetečením bufferu ve funkci handle_request(), které vzniká díky nesprávnému výpočtu velikosti dat v síťovém paketu. Konkrétně byla délka zašifrovaných dat určena v makru CRYPTO_SIZE, definovaném jako „1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE“, které bylo dále použito v operaci odečítání „length — CRYPTO_SIZE“. Z důvodu chybějících závorek v makru došlo místo odečítání součtu všech hodnot k odečítání 1 a následnému sečtení ostatních částí. Například místo „length — (1 + 32 * 2 + 24)“ byla velikost bufferu vypočítána jako „length — 1 + 32 * 2 + 24“, což vedlo k přepsání dat na zásobníku, která byla mimo hranice bufferu.
Zdroj: opennet.ru
