Kwetsbaarheden in de Linux-kernel op afstand misbruikt via Bluetooth

Er is een kwetsbaarheid (CVE-2022-42896) geïdentificeerd in de Linux-kernel, die mogelijk kan worden gebruikt om de uitvoering van externe code op kernelniveau te organiseren door een speciaal ontworpen L2CAP-pakket via Bluetooth te verzenden. Bovendien is er nog een soortgelijk probleem geïdentificeerd (CVE-2022-42895) in de L2CAP-handler, wat kan leiden tot lekkage van kernelgeheugeninhoud in pakketten met configuratie-informatie. 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 Linux-kernelreleases 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. Je kunt de oplossingen in distributies volgen op de volgende pagina's: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Om de mogelijkheid van een aanval op afstand aan te tonen, zijn prototype-exploits gepubliceerd die werken op Ubuntu 22.04. Om een ​​aanval uit te voeren, moet de aanvaller zich binnen Bluetooth-bereik bevinden. Vooraf koppelen is niet vereist, maar Bluetooth moet actief zijn op de computer. Voor een aanval is het voldoende om het MAC-adres van het apparaat van het slachtoffer te kennen. Dit adres kan worden bepaald door te snuiven of, op sommige apparaten, berekend op basis van het Wi-Fi MAC-adres.

De eerste kwetsbaarheid (CVE-2022-42896) wordt veroorzaakt door toegang tot een reeds vrijgemaakt geheugengebied (use-after-free) bij de implementatie van de functies l2cap_connect en l2cap_le_connect_req - na het creëren van een kanaal via de new_connection callback werd er geen vergrendeling ingesteld hiervoor, maar er werd een timer ingesteld (__set_chan_timer ), na het verstrijken van de time-out, werd de l2cap_chan_timeout-functie aangeroepen en het kanaal gewist zonder de voltooiing van het werk met het kanaal in de l2cap_le_connect*-functies te controleren.

De standaard time-out is 40 seconden en er werd aangenomen dat er met een dergelijke vertraging geen race condition zou kunnen optreden, maar het bleek dat het vanwege een andere fout in de SMP-handler mogelijk was om onmiddellijk een oproep naar de timer te bewerkstelligen en een race conditie. Een probleem in l2cap_le_connect_req kan leiden tot een kernelgeheugenlek, en in l2cap_connect kan het leiden tot het overschrijven van de inhoud van het geheugen en het uitvoeren van de code ervan. Het eerste type aanval kan worden uitgevoerd met Bluetooth LE 4.0 (sinds 2009), het tweede met Bluetooth BR/EDR 5.2 (sinds 2020).

De tweede kwetsbaarheid (CVE-2022-42895) wordt veroorzaakt door een resterend geheugenlek in de functie l2cap_parse_conf_req, die kan worden gebruikt om op afstand informatie te verkrijgen over verwijzingen naar kernelstructuren door speciaal vervaardigde configuratieverzoeken te verzenden. De functie l2cap_parse_conf_req gebruikte de l2cap_conf_efs-structuur, waarvoor het toegewezen geheugen niet vooraf was geïnitialiseerd en door het manipuleren van de vlag FLAG_EFS_ENABLE was het mogelijk om oude gegevens van de stapel in het pakket op te nemen. Het probleem doet zich alleen voor op systemen waarop de kernel is gebouwd met de CONFIG_BT_HS-optie (standaard uitgeschakeld, maar ingeschakeld op sommige distributies, zoals Ubuntu). Voor een succesvolle aanval is het ook nodig dat de parameter HCI_HS_ENABLED via de beheerinterface op true wordt ingesteld (niet standaard gebruikt).

Bron: opennet.ru

Voeg een reactie