Prelijevanje međuspremnika u Toxcoreu iskorišteno slanjem UDP paketa

Toxcore, referentna implementacija Tox P2P protokola za razmjenu poruka, ima ranjivost (CVE-2021-44847) koja potencijalno može pokrenuti izvršenje koda prilikom obrade posebno izrađenog UDP paketa. Svi korisnici aplikacija temeljenih na Toxcoreu koji nemaju onemogućen UDP prijenos pogođeni su ranjivošću. Za napad je dovoljno poslati UDP paket znajući IP adresu, mrežni port i javni DHT ključ žrtve (ova informacija je javno dostupna u DHT-u, tj. napad se može izvršiti na bilo kojem korisniku ili DHT čvoru).

Problem je bio prisutan u toxcore izdanjima od 0.1.9 do 0.2.12 i riješen je u verziji 0.2.13. Među klijentskim aplikacijama samo je projekt qTox do sada objavio ažuriranje koje uklanja ranjivost. Kao sigurnosno rješenje, možete onemogućiti UDP uz zadržavanje TCP podrške.

Ranjivost je uzrokovana prekoračenjem međuspremnika u funkciji handle_request(), do kojeg dolazi zbog netočnog izračuna veličine podataka u mrežnom paketu. Točnije, duljina kriptiranih podataka određena je u makronaredbi CRYPTO_SIZE, definirana kao "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", koja je naknadno korištena u operaciji oduzimanja "duljina - CRYPTO_SIZE". Zbog nepostojanja zagrada u makronaredbi, umjesto oduzimanja zbroja svih vrijednosti, oduzeo je 1 i dodao preostale dijelove. Na primjer, umjesto "dužine - (1 + 32 * 2 + 24)", veličina međuspremnika izračunata je kao "dužina - 1 + 32 * 2 + 24", što je rezultiralo prepisivanjem podataka na stogu izvan granice međuspremnika.

Izvor: opennet.ru

Dodajte komentar