ARMO ettevõtte teadlased demonstreerisid, et on võimalik luua rootkittesid, mis ei kasuta tüüpilisi süsteemikutsungeid selliste tavapäraste toimingute, nagu failide lugemine / kirjutamine ja käskude vastuvõtmine väliselt serverilt, teostamiseks. Selle asemel on ettepanek kasutada võrgu- ja failitoimingute teostamiseks asünkroonse sisendi / väljundi io_uring'i liidest, mis on toetatud alates Linuxi 5.1 tuumast.
Meetodi põhimõte seisneb selles, et failidele juurdepääsuks ja võrgutoimingute (read / write, recv / send / connect / bind / listen) tegemiseks ei ole vaja eraldi süsteemikutsungeid, vaid võib kasutada ühiseid io_uring'i süsteemikutsungeid (io_uring_enter, io_uring_setup, io_uring_register jne), mida tüüpilised tööriistad pahatahtliku tegevuse tuvastamiseks ei analüüsi. io_uring'i liides toetab umbes 60 erinevat toimingut. Arendamisel on võimalus, mis võimaldab uusi protsesse io_uring'i kaudu käivitada.
Meetodi töö demonstreerimiseks on valmistatud rootkit'i prototüüp Curing, mis täidab selliseid toiminguid nagu käskude vastuvõtmine väliselt serverile ja kaustade edastamine / muutmine. Demonstratsioonis kasutati välise hosti TCP-porti 8888 päringu saatmist ja faili "/etc/shadow" sisu edastamist. Eeldatakse, et pärast süsteemi eduka kompromiteerimise ja root-õiguste saamist paigaldab ründaja enda kohaloleku kinnitamiseks rootkit'i.
Tehtud eksperimendis jäi Curing rootkiti aktiivsus märkamata Falco ja Tetragoni monitooringu tööriistade poolt, mida kasutatakse hostide ja konteinerite turvalisuse anomaaliate määramiseks (Kubernetes-põhise infrastruktuuri integreerimine on toetatud). Nimetatud tööriistad kasutavad süsteemikõnede pealtkuulamist, et analüüsida selliseid sündmusi nagu protsesside käitamine, võrguaktiivsus ja failide käsitlemine, kuid ei arvesta io_uring alamsüsteemi kasutamise võimalust sarnaste toimingute jaoks. Suur osa Linuxile kergesti kättesaadavaid kommertslikke turvainfote probably availablity detection systems in general based on the interception of system calls.
Kuna vältida võrgu- ja failitegevuse jälgimisvahendite möödahüppamist, on soovitatav kasutada KRSI (Kernel Runtime Security Instrumentation) mehhanismi, mis ilmus Linuxi tuumas versioonis 5.7 ja võimaldab BPF-programmide kinnitamist igasugustele LSM-i konksudele. Näiteks võimaldab KRSI LSM-i konksude tasemel jälgida failide operatsioone, võrguühendusi ja protsesside käivitamist, sõltumata sellest, kas need operatsioonid on algatatud spetsiifiliste süsteemi kutsungite kaudu või io_uring'i kaudu.
Varem oli io_uringi alamsüsteem kriitika objektiks regulaarsete tõsiste turvaaukude tõttu. Vastuseks kasutajate soovidele, kes soovisid lihtsat tööriista io_uringi keelamiseks ilma tuuma uuesti koostamata, lisati Linuxi tuuma versioonis 6.6 sysctl io_uring_disabled. Google keelab vaikimisi io_uring'i ChromeOS-is, Androidis ja oma serverites, selgitades, et io_uringi halb turvalisus kaalub üles io_uringi kasutamise eelised jõudluse suurendamiseks.
Allikas: opennet.ru
