Linuxi tuumas on tuvastatud haavatavus (CVE-2022-42896), mida saab potentsiaalselt kasutada koodi kaugkäitamise korraldamiseks kerneli tasemel, saates Bluetoothi kaudu spetsiaalselt loodud L2CAP-paketi. Lisaks on L2022CAP-käsitlejas tuvastatud veel üks sarnane probleem (CVE-42895-2), mis võib põhjustada konfiguratsiooniteabega pakettide tuumamälu sisu lekkimist. Esimene haavatavus on ilmunud alates augustist 2014 (tuum 3.16) ja teine alates oktoobrist 2011 (kernel 3.0). Haavatavused on kõrvaldatud Linuxi kerneli versioonides 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 ja 5.15.78. Distributsioonide parandusi saate jälgida järgmistel lehtedel: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Kaugrünnaku võimaluse demonstreerimiseks on avaldatud prototüübi ärakasutamine, mis töötab Ubuntu 22.04 peal. Rünnaku läbiviimiseks peab ründaja olema Bluetoothi levialas – eelsidumine pole vajalik, kuid Bluetooth peab arvutis aktiivne olema. Rünnakuks piisab ohvri seadme MAC-aadressi teadmisest, mida saab määrata nuusutamise teel või mõnel seadmel Wi-Fi MAC-aadressi põhjal arvutada.
Esimese haavatavuse (CVE-2022-42896) põhjustab funktsioonide l2cap_connect ja l2cap_le_connect_req juurutamine juba vabastatud mälualale (use-after-free) – pärast kanali loomist tagasihelistamisfunktsiooni new_connection kaudu lukku ei seatud selle jaoks, kuid taimer (__set_chan_timer ) oli seatud ajalõpu lõppemisel, mis kutsub välja funktsiooni l2cap_chan_timeout ja tühjendab kanali, kontrollimata funktsioonide l2cap_le_connect* kanaliga töö lõpetamist.
Vaikimisi on aegumisaeg 40 sekundit ja eeldati, et sellise viivitusega võistlusseisund tekkida ei saa, kuid selgus, et järjekordse vea tõttu SMP-käitlejas oli võimalik saavutada taimerile kohene kõne ja saavutada rassi seisukord. Probleem failis l2cap_le_connect_req võib põhjustada kerneli mälulekke ja l2cap_connectis võib see põhjustada mälu sisu ülekirjutamist ja selle koodi käivitamist. Esimest tüüpi rünnakut saab läbi viia Bluetooth LE 4.0 abil (alates 2009. aastast), teist tüüpi Bluetooth BR/EDR 5.2 abil (alates 2020. aastast).
Teise haavatavuse (CVE-2022-42895) põhjustab funktsiooni l2cap_parse_conf_req jääkmälu leke, mida saab kasutada kaugjuhtimisega kerneli struktuuridele osutavate viidete kohta teabe hankimiseks, saates spetsiaalselt koostatud konfiguratsioonipäringuid. Funktsioon l2cap_parse_conf_req kasutas struktuuri l2cap_conf_efs, mille jaoks eraldatud mälu ei olnud eelinitsialiseeritud ning lipuga FLAG_EFS_ENABLE manipuleerides sai paketti kaasata vanu andmeid pinust. Probleem ilmneb ainult süsteemides, kus kernel on ehitatud valikuga CONFIG_BT_HS (vaikimisi keelatud, kuid mõnel distributsioonil (nt Ubuntu) lubatud). Edukas rünnak nõuab ka parameetri HCI_HS_ENABLED määramist haldusliidese kaudu tõeseks (vaikimisi ei kasutata).
Allikas: opennet.ru