Puskurin ylivuoto Toxcoressa, jota hyödynnetään lähettämällä UDP-paketti

Toxcoressa, Tox P2P -viestintäprotokollan referenssitoteutuksessa, on haavoittuvuus (CVE-2021-44847), joka voi mahdollisesti laukaista koodin suorittamisen, kun käsitellään erityisesti muodostettua UDP-pakettia. Haavoittuvuus vaikuttaa kaikkiin Toxcore-pohjaisten sovellusten käyttäjiin, joilla ei ole UDP-siirtoa estetty. Hyökkäykseen riittää, että lähetetään UDP-paketti, jossa tiedetään uhrin IP-osoite, verkkoportti ja julkinen DHT-avain (tämä tieto on julkisesti saatavilla DHT:ssa, eli hyökkäys voidaan suorittaa mihin tahansa käyttäjään tai DHT-solmuun).

Ongelma esiintyi toxcore-julkaisuissa 0.1.9–0.2.12, ja se korjattiin versiossa 0.2.13. Asiakassovelluksista vain qTox-projekti on toistaiseksi julkaissut päivityksen, joka poistaa haavoittuvuuden. Suojauksen kiertotapana voit poistaa UDP:n käytöstä säilyttäen samalla TCP-tuen.

Haavoittuvuuden aiheuttaa hand_request()-funktion puskurin ylivuoto, joka johtuu verkkopaketin tietokoon virheellisestä laskennasta. Tarkemmin sanottuna salatun datan pituus määritettiin makrossa CRYPTO_SIZE, joka määritellään muodossa "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", jota käytettiin myöhemmin vähennysoperaatiossa "pituus - CRYPTO_SIZE". Koska makrossa ei ollut sulkeita, se vähensi kaikkien arvojen summan sijaan 1:n ja lisäsi loput osat. Esimerkiksi "pituus - (1 + 32 * 2 + 24)" sijaan puskurin koko laskettiin muodossa "pituus - 1 + 32 * 2 + 24", mikä johti pinon tietojen päällekirjoittamiseen puskurin rajan ulkopuolella.

Lähde: opennet.ru

Lisää kommentti