Bufferoverflow yn Toxcore eksploitearre troch in UDP-pakket te ferstjoeren

In kwetsberens (CVE-2-2021) is identifisearre yn Toxcore, de referinsje-ymplemintaasje fan it Tox P44847P-berjochtenprotokol, dy't mooglik koade-útfiering kin triggerje by it ferwurkjen fan in spesjaal makke UDP-pakket. De kwetsberens hat ynfloed op alle brûkers fan Toxcore-basearre applikaasjes dy't net hawwe UDP-ferfier útskeakele. Om oan te fallen is it genôch om in UDP-pakket te stjoeren, it witten fan it IP-adres, netwurkpoarte en DHT iepenbiere kaai fan it slachtoffer (dizze ynformaasje is iepenbier beskikber yn DHT, d.w.s. de oanfal koe makke wurde op elke brûker as DHT-host) .

It probleem ferskynde yn toxcore releases 0.1.9 oant 0.2.12 en waard reparearre yn ferzje 0.2.13. Fan 'e kliïntapplikaasjes hat allinich it qTox-projekt oant no ta in update útbrocht mei it eliminearjen fan' e kwetsberens. As befeiligingsoplossing kinne jo it gebrûk fan UDP útskeakelje by it ferlitten fan TCP-stipe.

De kwetsberens wurdt feroarsake troch in buffer oerlêst yn de handle_request () funksje, dat komt troch ferkearde berekkening fan de gegevens grutte yn it netwurk pakket. Benammen de lingte fan de fersifere gegevens waard bepaald yn de makro CRYPTO_SIZE, definiearre as "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", dat waard letter brûkt yn de subtraction operaasje "lingte - CRYPTO_SIZE". Troch it ûntbrekken fan heakjes yn 'e makro, ynstee fan subtracting de som fan alle wearden, subtract 1 en heakje de oerbleaune dielen. Bygelyks, ynstee fan "lingte - (1 + 32 * 2 + 24)", waard de buffergrutte berekkene as "lingte - 1 + 32 * 2 + 24", wat late ta it oerskriuwen fan gegevens op 'e stapel dy't bûten de buffer wie skieding.

Boarne: opennet.ru

Add a comment