Sårbarheter i Linux-kärnan som fjärrexploateras via Bluetooth

En sårbarhet (CVE-2022-42896) har identifierats i Linux-kärnan, som potentiellt kan användas för att organisera fjärrkörning av kod på kärnnivå genom att skicka ett specialdesignat L2CAP-paket via Bluetooth. Dessutom har ett annat liknande problem identifierats (CVE-2022-42895) i L2CAP-hanteraren, vilket kan leda till läckage av kärnminnesinnehåll i paket med konfigurationsinformation. Den första sårbarheten har dykt upp sedan augusti 2014 (kärna 3.16), och den andra sedan oktober 2011 (kärna 3.0). Sårbarheterna har åtgärdats i Linux-kärnutgåvorna 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 och 5.15.78. Du kan spåra korrigeringarna i distributioner på följande sidor: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

För att demonstrera möjligheten att utföra en fjärrattack har prototypexploater publicerats som fungerar på Ubuntu 22.04. För att utföra en attack måste angriparen vara inom Bluetooth-räckvidden – förparning krävs inte, men Bluetooth måste vara aktivt på datorn. För en attack räcker det att känna till MAC-adressen för offrets enhet, som kan bestämmas genom att sniffa eller, på vissa enheter, beräknas utifrån Wi-Fi MAC-adressen.

Den första sårbarheten (CVE-2022-42896) orsakas av tillgång till ett redan frigjort minnesområde (use-after-free) i implementeringen av funktionerna l2cap_connect och l2cap_le_connect_req - efter att ha skapat en kanal genom new_connection-återuppringningen, sattes inget lås in för det, men en timer ställdes in (__set_chan_timer ), när timeouten löpte ut, anropade l2cap_chan_timeout-funktionen och rensade kanalen utan att kontrollera slutförandet av arbetet med kanalen i l2cap_le_connect*-funktionerna.

Standard timeout är 40 sekunder och det antogs att ett tävlingstillstånd inte kunde inträffa med en sådan fördröjning, men det visade sig att på grund av ett annat fel i SMP-hanteraren var det möjligt att få ett omedelbart anrop till timern och uppnå en loppets skick. Ett problem i l2cap_le_connect_req kan leda till en kärnminnesläcka, och i l2cap_connect kan det leda till att innehållet i minnet skrivs över och dess kod exekveras. Den första typen av attack kan utföras med Bluetooth LE 4.0 (sedan 2009), den andra med Bluetooth BR/EDR 5.2 (sedan 2020).

Den andra sårbarheten (CVE-2022-42895) orsakas av en kvarvarande minnesläcka i funktionen l2cap_parse_conf_req, som kan användas för att på distans få information om pekare till kärnstrukturer genom att skicka specialgjorda konfigurationsförfrågningar. Funktionen l2cap_parse_conf_req använde strukturen l2cap_conf_efs, för vilken det tilldelade minnet inte var förinitierat och genom att manipulera flaggan FLAG_EFS_ENABLE var det möjligt att inkludera gammal data från stacken i paketet. Problemet dyker bara upp på system där kärnan är byggd med alternativet CONFIG_BT_HS (inaktiverat som standard, men aktiverat på vissa distributioner, som Ubuntu). En lyckad attack kräver också att parametern HCI_HS_ENABLED via hanteringsgränssnittet ställs in på true (används inte som standard).

Källa: opennet.ru

Lägg en kommentar