Přetečení vyrovnávací paměti v Toxcore zneužito odesláním UDP paketu

Toxcore, referenční implementace protokolu pro zasílání zpráv Tox P2P, má zranitelnost (CVE-2021-44847), která by mohla potenciálně spustit spuštění kódu při zpracování speciálně vytvořeného paketu UDP. Tato chyba zabezpečení se týká všech uživatelů aplikací založených na Toxcore, kteří nemají zakázaný přenos UDP. K útoku stačí odeslat UDP paket se znalostí IP adresy, síťového portu a veřejného DHT klíče oběti (tato informace je v DHT veřejně dostupná, tj. útok může být proveden na libovolného uživatele nebo DHT uzel).

Problém byl přítomen ve verzích toxcore 0.1.9 až 0.2.12 a byl opraven ve verzi 0.2.13. Mezi klientskými aplikacemi zatím pouze projekt qTox vydal aktualizaci, která tuto zranitelnost odstraňuje. Jako řešení zabezpečení můžete zakázat protokol UDP při zachování podpory TCP.

Tato chyba zabezpečení je způsobena přetečením vyrovnávací paměti ve funkci handle_request(), ke kterému dochází v důsledku nesprávného 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 následně použito v operaci odečítání "délka - CRYPTO_SIZE". Kvůli absenci závorek v makru místo odečtení součtu všech hodnot odečetlo 1 a přidalo zbývající části. Například místo "délka - (1 + 32 * 2 + 24)" byla velikost vyrovnávací paměti vypočítána jako "délka - 1 + 32 * 2 + 24", což vedlo k přepsání dat v zásobníku za hranicí vyrovnávací paměti.

Zdroj: opennet.ru

Přidat komentář