Ang buffer overflow sa Toxcore ay pinagsamantalahan sa pamamagitan ng pagpapadala ng UDP packet

Ang Toxcore, ang reference na pagpapatupad ng Tox P2P messaging protocol, ay may kahinaan (CVE-2021-44847) na posibleng mag-trigger ng code execution kapag nagpoproseso ng isang espesyal na ginawang UDP packet. Ang lahat ng user ng Toxcore-based na application na walang UDP transport disabled ay apektado ng vulnerability. Upang pag-atake, sapat na upang magpadala ng UDP packet na alam ang IP address, network port at pampublikong DHT key ng biktima (ang impormasyong ito ay pampublikong magagamit sa DHT, ibig sabihin, ang pag-atake ay maaaring isagawa sa sinumang user o DHT node).

Ang isyu ay naroroon sa toxcore release 0.1.9 hanggang 0.2.12 at naayos sa bersyon 0.2.13. Sa mga aplikasyon ng kliyente, ang proyektong qTox lamang ang naglabas ng update na nag-aalis ng kahinaan. Bilang solusyon sa seguridad, maaari mong i-disable ang UDP habang pinapanatili ang suporta sa TCP.

Ang kahinaan ay sanhi ng buffer overflow sa handle_request() function, na nangyayari dahil sa maling pagkalkula ng laki ng data sa isang network packet. Sa partikular, ang haba ng naka-encrypt na data ay tinukoy sa macro CRYPTO_SIZE, na tinukoy bilang "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", na pagkatapos ay ginamit sa pagpapatakbo ng pagbabawas na "haba - CRYPTO_SIZE". Dahil sa kawalan ng mga panaklong sa macro, sa halip na ibawas ang kabuuan ng lahat ng mga halaga, binawasan nito ang 1 at idinagdag ang mga natitirang bahagi. Halimbawa, sa halip na "haba - (1 + 32 * 2 + 24)", ang laki ng buffer ay kinakalkula bilang "haba - 1 + 32 * 2 + 24", na nagresulta sa pag-overwrit ng data sa stack na lampas sa hangganan ng buffer.

Pinagmulan: opennet.ru

Magdagdag ng komento