Prekoračitev medpomnilnika v Toxcore izkoriščena s pošiljanjem paketa UDP

Toxcore, referenčna izvedba sporočilnega protokola Tox P2P, ima ranljivost (CVE-2021-44847), ki bi lahko sprožila izvajanje kode pri obdelavi posebej oblikovanega paketa UDP. Ranljivost vpliva na vse uporabnike aplikacij, ki temeljijo na Toxcoreu in nimajo onemogočenega prenosa UDP. Za napad je dovolj, da pošljete paket UDP, pri čemer poznate naslov IP, omrežna vrata in javni ključ DHT žrtve (ta informacija je javno dostopna v DHT, tj. napad se lahko izvede na katerem koli uporabniku ali vozlišču DHT).

Težava je bila prisotna v izdajah toxcore od 0.1.9 do 0.2.12 in je bila odpravljena v različici 0.2.13. Med odjemalskimi aplikacijami je do zdaj le projekt qTox izdal posodobitev, ki odpravlja ranljivost. Kot varnostno rešitev lahko onemogočite UDP in ohranite podporo TCP.

Ranljivost je posledica prekoračitve medpomnilnika v funkciji handle_request(), do katere pride zaradi nepravilnega izračuna velikosti podatkov v omrežnem paketu. Natančneje, dolžina šifriranih podatkov je bila določena v makru CRYPTO_SIZE, definiranem kot "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", ki je bil nato uporabljen v operaciji odštevanja "length - CRYPTO_SIZE". Ker v makru ni oklepajev, je namesto vsote vseh vrednosti odštel 1 in dodal preostale dele. Na primer, namesto "dolžina - (1 + 32 * 2 + 24)" je bila velikost medpomnilnika izračunana kot "dolžina - 1 + 32 * 2 + 24", kar je povzročilo prepisovanje podatkov na skladu onkraj meje medpomnilnika.

Vir: opennet.ru

Dodaj komentar