Препълване на буфера в 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