20. května 2026 vývojáři FreeBSD oznámili opravu sedmi nových zranitelností v systému. Ne všechny jsou stejně nebezpečné, ale některé jsou velmi závažné.
CVE-2026-45251 — use-after-free v syscally podobných selectech, pokud je v jejich čekacím seznamu deskriptory procesů (v FreeBSD 15 to jsou také nové deskriptory jailů), a tyto deskriptory byly uzavřeny v jiném vlákně, zatímco čekající syscall stále čekal. Soudě podle tohoto commitu, jsou také ovlivněny deskriptory související s netmap (ovladačem urychleného přístupu k síťovému adaptéru), ale na toto téma nejsou oficiální informace. Deskriptory procesů se objevily ve FreeBSD 9, takže zranitelnost pravděpodobně existuje od té doby. V oficiálním prohlášení je uvedeno, že tato zranitelnost umožňuje získání privilegovaných práv superuživatele. Neexistují žádné možnosti, jak ji neutralizovat bez patche/aktualizace.
CVE-2026-45250 — nesprávný výpočet velikosti bufferu a následný zápis mimo buffer na zásobníku v systémovém volání setcred, ačkoliv setcred sám vyžaduje privilegium root, poškození zásobníku se odehrává dříve, než jsou privilege ověřeny, a je tedy dostupné všem. Tento systémový výtah se objevil ve FreeBSD 14.3 (to znamená, že dřívější verze nejsou ovlivněny) a poskytuje způsob, jak nastavit všechna ID uživatele a skupin aktuálního procesu jedním voláním, místo kombinací setuid+setgid+setgroups a podobného. Zranitelnost umožňuje vykonávání škodlivého kódu v kontextu jádra. Neexistují žádné možnosti, jak ji neutralizovat bez patche/aktualizace.
CVE-2026-45252 — absence kontroly koncového nulového znaku před kopírováním řetězce získaného od fuse démonu do nového bufferu. Nicméně, kontrola maximální velikosti kopírování tam je, a více než 253 zbytečných bytů z jádrové paměti přečíst nelze. Také bude možné zapsat až 250 bytů do "unallocated kernel heap space". Ve FreeBSD je ve výchozím nastavení zakázáno montování souborových systémů uživateli, kteří nejsou root, takže pro podstrčení zlomyslného fuse démona jádru je potřeba být rootem. Pokud však sysctl vfs.usermount=1 — systém se stává zranitelným i pro běžné uživatele. Je také třeba vzít v úvahu nebezpečnost fuse démona v jailu, kde může být také root (ale ve výchozím stavu je to také zakázáno).
CVE-2026-45253 Při použití ptrace byla možná spuštění systémového volání s nesprávným číslem v laděném procesu, což vedlo k provedení kódu v jádře, který nebyl zamýšlen jako systémové volání, s potenciálně špatnými důsledky. Pokud je nastaveno security.bsd.unprivileged_proc_debug=0 (což je dobrá praxe pro servery v každém případě a instalátor systému to dokonce nabízí jako volbu), pak procesy uživatelů a jailed nebudou moci používat ptrace a tím pádem bude zranitelnost dostupná pouze pro root.
CVE-2026-45255 — injekce shellových příkazů s root právy do bsdinstall/bsdconfig prostřednictvím názvů zlovolných bezdrátových sítí, které tam nebyly escapovány, při prohlížení jejich seznamu. Aby se této zranitelnosti zabránilo, stačí neprohlížet seznam bezdrátových sítí z bsdinstall/bsdconfig.
CVE-2026-39461, CVE-2026-45254 — zranitelnosti v knihovně libcasper (ne v jádře). Knihovna je určena pro bezpečné přizpůsobení poskytování služeb procesům umístěným v pískovišti. Jedna z zranitelností souvisí s přetečením vyrovnávací paměti na zásobníku a poškozením zásobníku organizováním souborových descriptorů s velkými čísly v této knihovně (byla navržena pro čísla do 1024 - výchozí limit struktur pro systémové volání select). Druhá zranitelnost umožňuje odstraňování uvalených seznamů omezení (ideologie knihovny spočívá v tom, že jednou uvalená omezení na proces mohou být jen zesílena) cap_net.
Opravené verze systému mají čísla: 14.3-RELEASE-p14, 14.4-RELEASE-p5 a 15.0-RELEASE-p9. Je také důležité poznamenat, že vydání FreeBSD 13.5 bylo nedávno ukončeno - 30. dubna 2026, a pro něj (a pro celou větev 13.x vůbec) již nejsou oficiální opravy. Nicméně, pokud z nějakého důvodu nepospícháte s přechodem na vydání 14.x, patche pro verzi 14.3 v zásadě vyhovují i pro zdrojáky 13.5, a CVE-2026-45250 pro 13. větev není aktuální v důsledku absence setcred().
Zdroj: linux.org.ru
