Toxcore'i, Toxi sĂ”numivahetuse P2P-protokolli viidela, on avastatud haavatavus (CVE-2021-44847), mis vĂ”imaldab potentsiaalselt koodi tĂ€itmist spetsiaalselt vormindatud UDP-paketi töötlemisel. Haavatavuse all on kĂ”ik Toxcore'i pĂ”hjal loodud rakenduste kasutajad, kus UDP transport ei ole keelatud. RĂŒnnakuks piisab UDP-paketi saatmisest, teades ohvri IP-aadressi, vĂ”rguporti ja avatud DHT-vĂ”tit (need andmed on avalikult kĂ€ttesaadavad DHT-s, st rĂŒnnakut oleks vĂ”inud teha igaĂŒhe vastu, kellel on DHT-otsing).
Probleem ilmnes toxcore'i versioonides 0.1.9 kuni 0.2.12 ja on lahendatud versioonis 0.2.13. Klientrakendustest on haavatavuse parandamise vÀrskendus seni vÀlja andnud ainult projekt qTox. Kaitseks vÔib UDP kasutamise keelata, toetades TCP-d.
Haavatavus on pĂ”hjustatud bufferi ĂŒleujutusest funktsioonis handle_request(), mis tuleneb vĂ”rgupaketi andmete suuruse vale arvutamisest. EelkĂ”ige mÀÀrati krĂŒptitud andmete pikkus makros CRYPTO_SIZE, mis mÀÀrati kui "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", mida kasutati hiljem lahutamise operatsioonis "length â CRYPTO_SIZE". Selgus, et makros olevate sulgude puudumise tĂ”ttu toimus mitte kĂ”igi vÀÀrtuste summast lahutamine, vaid 1 lahutamine ja ĂŒlejÀÀnud osade liitmine. NĂ€iteks, kui Ă”igesti oleks olnud "length â (1 + 32 * 2 + 24)", arvutati bufferi suurus kui "length â 1 + 32 * 2 + 24", mis tĂ”i kaasa andmete ĂŒmberkirjutamise stackis, mis asus bufferi piiridest vĂ€ljaspool.
Allikas: opennet.ru
