Toxcore'is, Tox'i P2P-sõnumsideprotokolli viidatud teostuses, tuvastati nõrkus (CVE-2021-44847), mis võib potentsiaalselt võimaldada koodi täitmist spetsiaalselt koostatud UDP-paketi töötlemise käigus. Kõik Toxcore'i põhjal loodud rakenduste kasutajad, kus ei ole UDP-transpordi välja lülitatud, on selle nõrkuse tõttu ohustatud. Rünnaku teostamiseks piisab UDP-paketi saatmisest, teades ohvri IP-aadressi, võrguporti ja avatud DHT-võtit (need andmed on DHT-s avalikult saadaval, st rünnakut võis sooritada mis tahes kasutaja või DHT-sõlme vastu).
Probleem ilmus toxcore'i väljaannetes 0.1.9 kuni 0.2.12 ja see parandati versioonis 0.2.13. Klientrakendustest on nõrkuse kõrvaldamise uuenduse välja andnud seni ainult projekt qTox. Kaitseks saab kasutada UDP välja lülitamist, jättes TCP toe alles.
Haavatavus tuleneb puhverdusülekoormusest funktsioonis handle_request(), mis tekib vale suuruse arvutamise tõttu võrgupaketis. Eelkõige määrati krüpteeritud andmete pikkus makros CRYPTO_SIZE, mis on määratletud kui „1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE“ ja mida kasutati hiljem lahutamise operatsioonis „length — CRYPTO_SIZE“. Makros puuduvate sulgude tõttu tehti meie näites lahutamine 1 ja teiste osade liitmine, selle asemel, et lahutada kõigi väärtuste summa. Näiteks, selle asemel et „length — (1 + 32 * 2 + 24)“, arvutati puhvri suurus kui „length — 1 + 32 * 2 + 24“, mis viis andmete kirjutamiseni puhvrivälistele virna kohtadele.
Allikas: opennet.ru
