В FreeBSD е намерена уязвимост (CVE-2022-23093) в утилитата ping, която е включена в базовия пакет. Проблемът може потенциално да доведе до отдалечено изпълнение на код с права на root при проверка чрез ping на външен хост, контролиран от нападателя. Поправката е предложена в обновленията FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 и 12.3-RELEASE-p10. Не е ясно дали други BSD системи са подложени на идентифицираната уязвимост (все още няма доклади за уязвимост в NetBSD, DragonFlyBSD и OpenBSD).
Уязвимостта е причинена от преливане на буфер в кода за разглеждане на ICMP съобщения, получени в отговор на проверъчния запит. Кодът за изпращане и получаване на ICMP съобщения в ping използва raw сокети и работи с повишени привилегии (утилитата идва с флага setuid root). Обработката на отговора се извършва от ping чрез реконструкция на IP и ICMP заглавията на пакетите, получавани от raw сокета. Избраните IP и ICMP заглавия се копират от функцията pr_pack() в буфери, без да се вземе предвид, че в пакета след заглавието IP могат да присъстват допълнителни разширени заглавия.
Подобни заглавия се отделят от пакета и се включват в блока със заглавия, но не се вземат предвид при изчисляване на размера на буфера. Ако хостът върне пакет с допълнителни заглавия в отговор на изпратен ICMP запит, тяхното съдържание ще бъде записано извън рамките на буфера в стека. В крайна сметка атакуващият може да презапише до 40 байта данни в стека, което потенциално позволява изпълнението на неговия код. Опасността от проблема се смекчава от факта, че в момента на проявление на грешката, процесът се намира в състояние на изолация при системни повиквания (capability mode), което затруднява достъпа до останалата част от системата след експлоатация на уязвимостта.
Източник: opennet.ru
