Przepełnienie bufora w Toxcore, wykorzystywane przez wysyłanie pakietu UDP

W Toxcore, wzorcowej implementacji protokołu wymiany wiadomości P2P Tox, zidentyfikowano lukę (CVE-2021-44847), która potencjalnie pozwala na inicjowanie wykonania kodu podczas przetwarzania specjalnie sformatowanego pakietu UDP. Wszyscy użytkownicy aplikacji opartych na Toxcore, w których transport UDP nie został wyłączony, są podatni na tę lukę. Do przeprowadzenia ataku wystarczy wysłać pakiet UDP, znając adres IP, port sieciowy oraz otwarty klucz DHT ofiary (te informacje są publicznie dostępne w DHT, co oznacza, że atak mógł być dokonany na dowolnego użytkownika lub węzeł DHT).

Problem występował w wersjach toxcore od 0.1.9 do 0.2.12 i został rozwiązany w wersji 0.2.13. Jak dotąd, jedynym klientem aplikacji, który wydał aktualizację usuwającą lukę, jest projekt qTox. Jako obejście tego problemu można wyłączyć użycie UDP, pozostawiając wsparcie dla TCP.

Vulnerability is caused by a buffer overflow in the handle_request() function, which arises from an incorrect calculation of the size of data in the network packet. Specifically, the length of the encrypted data was determined in the CRYPTO_SIZE macro, defined as "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", which was subsequently used in the subtraction operation "length - CRYPTO_SIZE". Due to the absence of parentheses in the macro, instead of subtracting the total of all values, it resulted in subtracting 1 and adding the other parts. For example, instead of "length - (1 + 32 * 2 + 24)", the buffer size was calculated as "length - 1 + 32 * 2 + 24", which led to data being overwritten in the stack, going beyond the buffer's boundary.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster