Buferio perpildymas Toxcore išnaudojamas siunčiant UDP paketą

Pažeidžiamumas (CVE-2-2021) buvo aptiktas Toxcore, atskaitos Tox P44847P pranešimų protokolo įgyvendinime, kuris gali suaktyvinti kodo vykdymą apdorojant specialiai sukurtą UDP paketą. Pažeidžiamumas paveikia visus Toxcore pagrindu veikiančių programų, kuriose UDP transportavimas nėra išjungtas, vartotojus. Norėdami atakuoti, pakanka nusiųsti UDP paketą, žinant aukos IP adresą, tinklo prievadą ir DHT viešąjį raktą (ši informacija yra viešai prieinama DHT, t. y. ataka galėjo būti įvykdyta prieš bet kurį vartotoją ar DHT pagrindinį kompiuterį) .

Problema atsirado toxcore leidimuose nuo 0.1.9 iki 0.2.12 ir buvo ištaisyta 0.2.13 versijoje. Iš kliento programų kol kas tik qTox projektas išleido atnaujinimą, pašalinantį pažeidžiamumą. Kaip saugumo sprendimą galite išjungti UDP naudojimą, palikdami TCP palaikymą.

Pažeidžiamumą sukelia funkcijos hand_request() buferio perpildymas, kuris atsiranda dėl neteisingo duomenų dydžio skaičiavimo tinklo pakete. Visų pirma, užšifruotų duomenų ilgis buvo nustatytas makrokomandoje CRYPTO_SIZE, apibrėžtoje kaip "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", kuri vėliau buvo naudojama atėmimo operacijoje "ilgis - CRYPTO_SIZE". Kadangi makrokomandoje nėra skliaustų, užuot atėmus visų reikšmių sumą, atimkite 1 ir pridėkite likusias dalis. Pavyzdžiui, vietoj „ilgis – (1 + 32 * 2 + 24)“, buferio dydis buvo apskaičiuotas kaip „ilgis - 1 + 32 * 2 + 24“, todėl buvo perrašyti duomenys krūvoje, esančioje už buferio ribų. riba.

Šaltinis: opennet.ru

Добавить комментарий