Ve FreeBSD byla nalezena zranitelnost (CVE-2022-23093) v nástroji ping, který je součástí základní instalace. Problém může potenciálně vést k vzdálenému spuštění kódu s právy root při kontrole pomocí ping externího hostitele, kterého ovládá útočník. Oprava byla navržena v aktualizacích FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 a 12.3-RELEASE-p10. Zda jsou jiné systémy BSD touto zranitelností ovlivněny, zatím není jasné (zprávy o zranitelnosti v NetBSD, DragonFlyBSD a OpenBSD zatím nebyly zveřejněny).
Zranitelnost je způsobena přetečením zásobníku v kódu pro zpracování ICMP zpráv, které přicházejí jako odpověď na ověřovací dotaz. Kód pro odesílání a příjem ICMP zpráv v nástroji ping využívá raw sokety a běží s zvýšenými privilegii (nástroj je dodáván s flagem setuid root). Zpracování odpovědi se provádí na straně nástroje ping rekonstrukcí IP a ICMP hlaviček paketů získaných z raw soketu. Vyčleněné IP a ICMP hlavičky jsou kopírovány funkcí pr_pack() do zásobníků, aniž by se braly v úvahu další rozšířené hlavičky, které mohou být v paketu za IP hlavičkou.
Takové hlavičky jsou vyčleněny z paketu a zahrnuty do bloku hlaviček, ale nejsou zohledněny při výpočtu velikosti zásobníku. Pokud host na odeslaný ICMP dotaz vrátí paket s dalšími hlavičkami, jejich obsah bude zapsán do oblasti za hranicí zásobníku ve stohu. V důsledku toho může útočník přepsat až 40 bajtů dat ve stohu, což potenciálně umožňuje vykonání jeho kódu. Nebezpečí problému zmírňuje skutečnost, že v okamžiku vzniku chyby se proces nachází v režimu izolace systémových volání (capability mode), což ztěžuje přístup k zbytku systému po využití zranitelnosti.
Zdroj: opennet.ru
