Buffertspill i Toxcore utnyttjas genom att skicka ett UDP-paket

En sårbarhet (CVE-2-2021) har identifierats i Toxcore, referensimplementeringen av Tox P44847P-meddelandeprotokollet, som potentiellt kan utlösa kodexekvering vid bearbetning av ett speciellt utformat UDP-paket. Sårbarheten påverkar alla användare av Toxcore-baserade applikationer som inte har UDP-transport inaktiverad. För att attackera räcker det att skicka ett UDP-paket, med kunskap om offrets IP-adress, nätverksport och offentliga DHT-nyckel (denna information är allmänt tillgänglig i DHT, dvs attacken kunde ha gjorts på vilken användare eller DHT-värd som helst) .

Problemet dök upp i toxcore-versionerna 0.1.9 till 0.2.12 och åtgärdades i version 0.2.13. Av klientapplikationerna är det bara qTox-projektet som hittills har släppt en uppdatering med eliminering av sårbarheten. Som en säkerhetslösning kan du inaktivera användningen av UDP samtidigt som du lämnar TCP-stöd.

Sårbarheten orsakas av ett buffertspill i funktionen handle_request() som uppstår på grund av felaktig beräkning av datastorleken i nätverkspaketet. I synnerhet bestämdes längden på den krypterade datan i makrot CRYPTO_SIZE, definierat som "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", som senare användes i subtraktionsoperationen "längd - CRYPTO_SIZE". På grund av avsaknaden av parenteser i makrot, istället för att subtrahera summan av alla värden, subtrahera 1 och addera de återstående delarna. Till exempel, istället för "längd - (1 + 32 * 2 + 24)", beräknades buffertstorleken som "längd - 1 + 32 * 2 + 24", vilket ledde till att data på stacken som låg utanför bufferten skrevs över. gräns.

Källa: opennet.ru

Lägg en kommentar