Prelivanje bafera u Toxcoreu iskorištava se slanjem UDP paketa

Toxcore, referentna implementacija Tox P2P protokola za razmjenu poruka, ima ranjivost (CVE-2021-44847) koja bi potencijalno mogla pokrenuti izvršenje koda prilikom obrade posebno kreiranog UDP paketa. Svi korisnici aplikacija zasnovanih na Toxcore-u koji nemaju onemogućen UDP transport su pogođeni ranjivosti. Za napad je dovoljno poslati UDP paket koji zna 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 kog korisnika ili DHT čvora).

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

Ranjivost je uzrokovana prekoračenjem bafera u funkciji handle_request(), do kojeg dolazi zbog pogrešnog izračunavanja veličine podataka u mrežnom paketu. Konkretno, dužina šifriranih podataka određena je u makrou CRYPTO_SIZE, definiranom kao "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", koji je naknadno korišten u operaciji oduzimanja "dužina - CRYPTO_SIZE". Zbog nepostojanja zagrada u makrou, umjesto da se oduzme zbir svih vrijednosti, oduzeo je 1 i dodao preostale dijelove. Na primjer, umjesto "dužina - (1 + 32 * 2 + 24)", veličina bafera je izračunata kao "dužina - 1 + 32 * 2 + 24", što je rezultiralo prepisivanjem podataka na steku izvan granice bafera.

izvor: opennet.ru

Dodajte komentar