Прелевање на баферот во Toxcore се експлоатира со испраќање UDP пакет

Идентификувана е ранливост (CVE-2-2021) во Toxcore, референтната имплементација на протоколот за пораки Tox P44847P, што потенцијално може да активира извршување на код при обработка на специјално изработен 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“, што подоцна беше искористено во операцијата за одземање „должина - CRYPTO_SIZE“. Поради недостаток на загради во макрото, наместо да се одземе збирот на сите вредности, одземете 1 и додадете ги останатите делови. На пример, наместо „должина - (1 + 32 * 2 + 24)“, големината на баферот беше пресметана како „должина - 1 + 32 * 2 + 24“, што доведе до препишување на податоците на стекот што беше надвор од баферот граница.

Извор: opennet.ru

Додадете коментар