Препълване на буфер в Toxcore, експлоатирано чрез изпращане на UDP пакет

В Toxcore, еталонна реализация на P2P протокола за обмен на съобщения Tox, е открито уязвимост (CVE-2021-44847), която потенциално позволява инициирането на изпълнение на код при обработка на специално оформен UDP пакет. Податливи на уязвимостта са всички потребители на приложения, базирани на Toxcore, в които не е деактивиран транспортът UDP. За атака е достатъчно да бъде изпратен UDP пакет, познавайки IP адреса, мрежовия порт и отворения DHT ключ на жертвата (тези данни са публично достъпни в DHT, т.е. атаката може да бъде извършена срещу който и да е потребител или възел DHT).

Проблемът се проявяваше в версиите на toxcore от 0.1.9 до 0.2.12 и е отстранен във версия 0.2.13. От клиентските приложения обновление с отстраняване на уязвимостта до момента е публикувало само проекта qTox. Като обходен защитен механизъм може да се деактивира използването на UDP, оставяйки поддръжката на TCP.

Уязвимостта е причинена от преливане на буфер в функцията handle_request(), което възниква поради неправилен размер на данните в мрежовия пакет. По-специално, дължината на криптираните данни се определяше в макроса CRYPTO_SIZE, който е дефиниран като "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", и след това се използваше в операцията за изваждане "length — CRYPTO_SIZE". Поради отсъствието на скоби в макроса вместо изваждане на сумата на всички стойности, се извършваше изваждане на 1 и събиране на другите части. Например, вместо "length — (1 + 32 * 2 + 24)", размерът на буфера се изчисляваше като "length — 1 + 32 * 2 + 24", което водеше до презаписване на данни в стека, които са извън буфера.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster