SÄrbarhet i Linux-kÀrnan som pÄverkar nÀtverksprotokollet CAN BCM

I Linux-kÀrnan har en sÄrbarhet identifierats (CVE-2021-3609) som gör att en lokal anvÀndare kan höja sina privilegier i systemet. Problemet orsakas av en kapplöpning i implementationen av CAN BCM-protokollet och yttrar sig i Linux-kernor frÄn 2.6.25 till 5.13-rc6. I distributioner Àr problemet Ànnu inte ÄtgÀrdat (RHEL, Fedora, Debian, Ubuntu, SUSE, Arch).

Forskaren som identifierade sÄrbarheten lyckades skapa en exploat för att fÄ root-rÀttigheter pÄ system med Linux-kÀrnor 5.4 och nyare, och det har visats möjlighet till ett framgÄngsrikt angrepp i Ubuntu 20.04.02 LTS. Det Àr inte uteslutet att exploaten kan omarbetas för att fungera med Àldre kÀrnor (i kÀrnan 5.4 har CAN BCM-koden (net/can/bcm.c) övergÄtt frÄn hrtimer_tasklet till HRTIMER_MODE_SOFT).

CAN BCM-protokollet tillÄter registrering av en egen meddelandehanterare för meddelanden som mottas via CAN-bussen (controller area network) och kopplar den till en viss nÀtverksocket. NÀr ett inkommande meddelande anlÀnder anropas funktionen bcm_rx_handler(). En angripare kan utnyttja kapplöpningen och nÄ en punkt dÀr nÀtverksocket stÀngs samtidigt som bcm_rx_handler() körs. NÀr socketen stÀngs anropas funktionen bcm_release(), dÀr minnet som tilldelats strukturerna bcm_op och bcm_sock frigörs, medan de fortfarande anvÀnds av den pÄgÄende hanteraren bcm_rx_handler(). Detta skapar en situation som leder till referens till ett redan frigivet minnesblock (use-after-free).

Angreppet involverar att öppna tvÄ CAN BCM-sockets och koppla dem till grÀnssnittet vcan. I den första socketen görs ett anrop till sendmsg() med flaggan RX_SETUP för att konfigurera hanteraren för inkommande CAN-meddelanden, och i den andra socketen görs ett anrop till sendmsg() för att skicka ett meddelande till den första socketen. NÀr meddelandet anlÀnder aktiveras anropet bcm_rx_handler(), och angriparen vÀljer rÀtt ögonblick för att stÀnga den första socketen, vilket leder till att bcm_release() körs och strukturerna bcm_op och bcm_sock frigörs, trots att arbetet med bcm_rx_handler() fortfarande pÄgÄr.

Genom manipulationer av innehÄllet i bcm_sock kan en angripare ÄsidosÀtta pekaren för funktionen sk->sk_data_ready(sk), omdirigera exekveringen och genom tekniker för returorienterad programmering (ROP - Return-Oriented Programming) organisera en omskrivning av parametern modprobe_path och uppnÄ exekvering av sin egen kod med root-rÀttigheter. Vid anvÀndning av ROP-tekniken försöker angriparen inte placera sin kod i minnet utan arbetar med redan existerande maskininstruktionssnuttar frÄn laddade bibliotek som avslutas med en returhanteringsinstruktion (vanligtvis slutet av bibliotekets funktioner). Utformningen av exploiten handlar om att konstruera en kedja av anrop av liknande block ("gadgets") för att uppnÄ önskad funktionalitet.

SÄrbarhet i Linux-kÀrnan som pÄverkar nÀtverksprotokollet CAN BCM

För attacken krÀvs Ätkomst för att skapa CAN-sockets och en konfigurerad nÀtverksgrÀnssnitt vcan. NödvÀndig ÄtkomstrÀtt kan erhÄllas av en icke privilegierad anvÀndare i containrar som skapas i system med aktiverad support för anvÀndarnamnrymd (user namespaces). Till exempel Àr anvÀndarnamnrymd som standard aktiverat i Ubuntu och Fedora, men inte aktiverat i Debian och RHEL.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster