tegnap információk jelentek meg a Linux kernel egy sebezhetőségéről és amely már CVE-2021-3609 néven van katalogizálva. Ez a sebezhetőség lehetővé teszi egy helyi felhasználó számára, hogy emelje privilégiumait a rendszeren a CAN BCM protokoll megvalósításának versenyfeltétele miatt, és a Linux kernel 2.6.25–5.13-rc6 verzióiban nyilvánul meg.
Az ítélet kihasználja mert a A CAN BCM protokoll lehetővé teszi a saját üzenetkezelő regisztrálását a vezérlő területi hálózatának (CAN) és csatlakoztassa egy adott hálózati aljzathoz. Amikor beérkező üzenet érkezik, a függvény meghívásra kerül bcm_rx_handler () egy támadó kihasználhatja a versenyfeltételeket, és végrehajtás közben a hálózati aljzat bezárására kényszerítheti bcm_rx_handler ().
A probléma akkor jelentkezik, amikor az aljzat zárva van és a függvényt meghívjuk bcm_release (), amelyben felszabadul a struktúrák számára lefoglalt memória bcm_op és bcm_sock, amelyeket továbbra is használnak a kezelőben bcm_rx_handler () amely még mindig fut, így olyan helyzet áll elő, amely egy már felszabadított memóriablokkhoz (használat utáni szabad) való hozzáféréshez vezet.
Ez a közelmúltban jelentett hiba (CVE-2021-3609) a CAN BCM hálózati protokollban a Linux kernelben, a 2.6.25 verziótól az 5.13-rc6 fővonalig terjed.
A sérülékenység egy versenyfeltétel a net / can / bcm.c fájlban, amely lehetővé teszi a privilégiumok fokozását. A problémáról kezdetben syzbot számolt be, és Norbert Slusarek kizsákmányolhatónak bizonyult.
A támadás két CAN BCM aljzat kinyitásával és a vcan interfészhez kötésével jár. Az első csatlakozóban hívja sendmsg () a mutatóval RX_SETUP a vezérlő konfigurálásához a bejövő CAN-üzenetekhez és a második csatlakozóhoz hívja sendmsg () üzenetet küldeni az első csatlakozóhoz.
Az üzenet megérkezése után a bcm_rx_handler () hívás elindul, és a támadó megfelelő pillanatot vesz fel, és bezárja az első foglalatot, ami elindításához vezet bcm_release () és a struktúrák elindítása bcm_op és bcm_sock, bár a bcm_rx_handler () még nem fejeződött be.
A bcm_sock tartalmának manipulálásával a támadó felülírhatja az sk-> sk_data_ready (sk) függvény mutatóját, átirányíthatja a végrehajtást, és a visszatérés-orientált programozási (ROP) technikák használatával felülírhatja a modprobe_path paramétert, és kódját rootként futtathatja .
A ROP technika használatakor a támadó nem próbálja meg betenni a kódját emlékére, de működik darabjai már elérhető gépi utasítások betöltött könyvtárakban egy vezérlő visszatérési utasítással végződve (ezek általában a könyvtári függvények vége).
A támadás végrehajtásához szükséges jogosultságokat kiváltságtalan felhasználó szerezheti meg olyan rendszerekben létrehozott tárolókban, amelyekben engedélyezett a felhasználói névtér. Például a felhasználói névterek alapértelmezés szerint szerepelnek az Ubuntuban és a Fedora-ban, de a Debianban és az RHEL-ben nincsenek engedélyezve.
Kihasználási próbálkozásom a bf5.4aa1e74 elkövetési> = 86-rc111 verziójú rendszermagjaira koncentrál. Nem vizsgáltam az 5.4-rc1-nél régebbi kernek kihasználását tasklets használatával, azonban a régebbi kernelek kihasználása is megvalósíthatónak tűnik.
Azt emlegetik a sebezhetőséget azonosító kutató képes volt előkészíteni egy kihasználást gyökérjogok megszerzése az 5.4-es vagy újabb verziójú rendszermagokkal rendelkező rendszereken, beleértve az Ubuntu 20.04.02 LTS elleni sikeres támadás lehetőségét.
A kihasználás munkája a blokkok ("kütyük") hívásláncának felépítésére redukálódik a szükséges funkcionalitás elérése érdekében. A támadáshoz hozzáférés szükséges a CAN-foglalatok és egy konfigurált vcan hálózati interfész létrehozásához.
Végül megemlítik, hogy a probléma továbbra is fennáll a legtöbb disztribúción, de napok kérdése, mire a megfelelő javítások megjelennek.
Ha érdekel, hogy többet tudjon meg róla, konzultálhat a következő link.