Er is een kwetsbaarheid in de Linux-kernel gevonden (CVE-2022-42896) die mogelijk kan worden misbruikt voor het uitvoeren van willekeurige code op kernel niveau door het verzenden van een speciaal gevormd L2CAP-pakket via Bluetooth. Bovendien is er nog een vergelijkbaar probleem ontdekt (CVE-2022-42895) in de L2CAP-verwerker, dat kan leiden tot een lek van de inhoud van het geheugen van de kernel in configuratiepakketten. De eerste kwetsbaarheid doet zich voor sinds augustus 2014 (kernel 3.16) en de tweede sinds oktober 2011 (kernel 3.0). De kwetsbaarheden zijn verholpen in de versies van de Linux-kernel 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 en 5.15.78. Voor updates in de distributies kunnen de volgende pagina's worden geraadpleegd: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Om de mogelijkheid van een externe aanval te demonstreren, zijn prototypes van exploits gepubliceerd die werken op Ubuntu 22.04. Voor het uitvoeren van een aanval moet de aanvaller zich binnen Bluetooth-bereik bevinden ā vooraf koppelen is niet nodig, maar Bluetooth moet wel zijn ingeschakeld op de computer. Het is voldoende om het MAC-adres van het doelapparaat te kennen, dat kan worden vastgesteld door sniffing of in sommige apparaten wordt berekend op basis van het MAC-adres van Wi-Fi.
De eerste kwetsbaarheid (CVE-2022-42896) wordt veroorzaakt door het aanspreken van een al vrijgegeven geheugenruimte (use-after-free) in de implementatie van de functies l2cap_connect en l2cap_le_connect_req ā na het creĆ«ren van een kanaal via de callback-aanroep new_connection, werd er geen vergrendeling ingesteld, maar werd er wel een timer geconfigureerd (__set_chan_timer), die na het verstrijken van de timeout de functie l2cap_chan_timeout aanroept en het kanaal opruimt zonder te controleren of er al met het kanaal was gewerkt in de functies l2cap_le_connect*.
Standaard bedraagt de timeout 40 seconden en werd verondersteld dat een raceconditie bij deze vertraging niet kon ontstaan, maar het bleek dat een andere fout in de SMP-verwerker kan leiden tot een onmiddellijke aanroep van de timer en het bereiken van een raceconditie. Het probleem in l2cap_le_connect_req kan leiden tot een lek van het geheugen van de kernel, terwijl in l2cap_connect de inhoud van het geheugen kan worden overschreven en eigen code kan worden uitgevoerd. De eerste aanval kan worden uitgevoerd met Bluetooth LE 4.0 (sinds 2009), de tweede met Bluetooth BR/EDR 5.2 (sinds 2020).
De tweede kwetsbaarheid (CVE-2022-42895) wordt veroorzaakt door een lek van resterende gegevens uit het geheugen in de functie l2cap_parse_conf_req, wat kan worden gebruikt om op afstand informatie over aanwijzers naar kernelstructuren te verkrijgen door speciaal geconfigureerde configuratieverzoeken te verzenden. In de functie l2cap_parse_conf_req werd de structuur l2cap_conf_efs gebruikt, waarvoor geen voorafgaande initialisatie van het toegewezen geheugen plaatsvond, en door te manipuleren met de vlag FLAG_EFS_ENABLE kon oude data uit de stack in het pakket worden opgenomen. Het probleem doet zich alleen voor in systemen waarin de kernel is samengesteld met de optie CONFIG_BT_HS (standaard uitgeschakeld, maar geactiveerd in sommige distributies, bijvoorbeeld Ubuntu). Voor een succesvolle aanval is ook de instelling van de parameter HCI_HS_ENABLED via de beheersinterface vereist op true (standaard niet gebruikt).
Bron: opennet.ru
