Toxcore'i puhvri ületäitmist kasutatakse ära UDP-paketi saatmisega

Toxcore'il, Tox P2P sõnumsideprotokolli referentsrakendusel, on haavatavus (CVE-2021-44847), mis võib spetsiaalselt koostatud UDP-paketi töötlemisel käivitada koodi käitamise. Haavatavus mõjutab kõiki Toxcore-põhiste rakenduste kasutajaid, kellel pole UDP-transport keelatud. Rünnakuks piisab UDP-paketi saatmisest, teades ohvri IP-aadressi, võrguporti ja avalikku DHT-võtit (see info on DHT-s avalikult kättesaadav, st rünnak võib toimuda iga kasutaja või DHT-sõlme vastu).

Probleem esines toxcore'i versioonides 0.1.9 kuni 0.2.12 ja parandati versioonis 0.2.13. Kliendirakendustest on haavatavuse kõrvaldava värskenduse seni välja andnud vaid projekt qTox. Turvalahendusena saate UDP keelata, säilitades samal ajal TCP toe.

Haavatavuse põhjustab funktsiooni hand_request() puhvri ületäitumine, mis tuleneb võrgupaketi andmemahu valest arvutamisest. Täpsemalt, krüptitud andmete pikkus määrati makros CRYPTO_SIZE, mis on määratletud kui "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", mida hiljem kasutati lahutamisoperatsioonis "pikkus - CRYPTO_SIZE". Kuna makros puuduvad sulgud, siis kõigi väärtuste summa lahutamise asemel lahutas see 1 ja lisas ülejäänud osad. Näiteks "pikkus - (1 + 32 * 2 + 24)" asemel arvutati puhvri suuruseks "pikkus - 1 + 32 * 2 + 24", mille tulemusena kirjutati andmed üle puhvri piirist kaugemale jäävas virnas.

Allikas: opennet.ru

Lisa kommentaar