Chyby zabezpečení v jádře Linuxu vzdáleně zneužité přes Bluetooth

V linuxovém jádře byla identifikována zranitelnost (CVE-2022-42896), kterou lze potenciálně použít k organizaci vzdáleného spuštění kódu na úrovni jádra odesláním speciálně navrženého paketu L2CAP přes Bluetooth. Kromě toho byl v obslužné rutině L2022CAP zjištěn další podobný problém (CVE-42895-2), který může vést k úniku obsahu paměti jádra v paketech s konfiguračními informacemi. První zranitelnost se objevuje od srpna 2014 (kernel 3.16) a druhá od října 2011 (kernel 3.0). Chyby zabezpečení byly vyřešeny ve vydáních jádra Linuxu 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 a 5.15.78. Opravy v distribucích můžete sledovat na následujících stránkách: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Pro demonstraci možnosti provést vzdálený útok byly zveřejněny prototypy exploitů, které fungují na Ubuntu 22.04. K provedení útoku musí být útočník v dosahu Bluetooth – předběžné spárování není vyžadováno, ale Bluetooth musí být v počítači aktivní. K útoku stačí znát MAC adresu zařízení oběti, kterou lze zjistit čicháním nebo u některých zařízení vypočítat na základě MAC adresy Wi-Fi.

První zranitelnost (CVE-2022-42896) je způsobena přístupem k již uvolněné oblasti paměti (use-after-free) při implementaci funkcí l2cap_connect a l2cap_le_connect_req - po vytvoření kanálu prostřednictvím zpětného volání new_connection nebyl nastaven zámek pro to, ale byl nastaven časovač (__set_chan_timer ), po vypršení časového limitu zavolá funkci l2cap_chan_timeout a vymaže kanál bez kontroly dokončení práce s kanálem ve funkcích l2cap_le_connect*.

Výchozí timeout je 40 sekund a předpokládalo se, že race condition nemůže nastat s takovým zpožděním, ale ukázalo se, že kvůli jiné chybě v SMP handleru bylo možné dosáhnout okamžitého volání časovače a dosáhnout závodní podmínky. Problém v l2cap_le_connect_req může vést k úniku paměti jádra a v l2cap_connect může vést k přepsání obsahu paměti a spuštění jejího kódu. První typ útoku lze provést pomocí Bluetooth LE 4.0 (od roku 2009), druhý pomocí Bluetooth BR/EDR 5.2 (od roku 2020).

Druhá chyba zabezpečení (CVE-2022-42895) je způsobena únikem zbytkové paměti ve funkci l2cap_parse_conf_req, kterou lze použít ke vzdálenému získávání informací o ukazatelích na struktury jádra odesláním speciálně vytvořených požadavků na konfiguraci. Funkce l2cap_parse_conf_req využívala strukturu l2cap_conf_efs, pro kterou nebyla předem inicializována alokovaná paměť a manipulací s příznakem FLAG_EFS_ENABLE bylo možné do paketu zahrnout stará data ze zásobníku. Problém se objevuje pouze na systémech, kde je jádro sestaveno s možností CONFIG_BT_HS (ve výchozím nastavení zakázána, ale u některých distribucí, jako je Ubuntu, povolena). Úspěšný útok také vyžaduje nastavení parametru HCI_HS_ENABLED přes rozhraní pro správu na hodnotu true (ve výchozím nastavení se nepoužívá).

Zdroj: opennet.ru

Přidat komentář