Bufferoverflyt i Toxcore utnyttet ved å sende en UDP-pakke

En sårbarhet (CVE-2-2021) er identifisert i Toxcore, referanseimplementeringen av Tox P44847P-meldingsprotokollen, som potensielt kan utløse kodekjøring ved behandling av en spesiallaget UDP-pakke. Sårbarheten påvirker alle brukere av Toxcore-baserte applikasjoner som ikke har UDP-transport deaktivert. For å angripe er det nok å sende en UDP-pakke, kjenne til IP-adressen, nettverksporten og den offentlige DHT-nøkkelen til offeret (denne informasjonen er offentlig tilgjengelig i DHT, dvs. angrepet kan ha blitt gjort på en hvilken som helst bruker eller DHT-vert) .

Problemet dukket opp i toxcore-utgivelser 0.1.9 til 0.2.12 og ble løst i versjon 0.2.13. Av klientapplikasjonene er det så langt bare qTox-prosjektet som har gitt ut en oppdatering med eliminering av sårbarheten. Som en sikkerhetsløsning kan du deaktivere bruken av UDP mens du forlater TCP-støtte.

Sårbarheten er forårsaket av et bufferoverløp i handle_request()-funksjonen, som oppstår på grunn av feil beregning av datastørrelsen i nettverkspakken. Spesielt ble lengden på de krypterte dataene bestemt i makroen CRYPTO_SIZE, definert som "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", som senere ble brukt i subtraksjonsoperasjonen "lengde - CRYPTO_SIZE". På grunn av mangelen på parenteser i makroen, i stedet for å trekke fra summen av alle verdier, trekker du 1 og legger til de resterende delene. For eksempel, i stedet for "lengde - (1 + 32 * 2 + 24)", ble bufferstørrelsen beregnet som "lengde - 1 + 32 * 2 + 24", noe som førte til overskriving av data på stabelen som var utenfor bufferen grense.

Kilde: opennet.ru

Legg til en kommentar