Prototype de rootkit pentru Linux, utilizând io_uring pentru a ocoli analizoarele apelurilor de sistem

Cercetătorii de la ARMO au demonstrat posibilitatea de a crea rootkit-uri care nu folosesc apeluri de sistem specifice pentru a efectua operațiuni comune, cum ar fi citirea/scrierea fișierelor și primirea comenzilor de la un server extern. În loc de apelurile de sistem pentru a efectua operațiuni de rețea și fișiere, s-a propus utilizarea interfeței de input/output asincron io_uring, susținută începând cu kernel-ul Linux 5.1.

Esenta metodei constă în faptul că, în loc de apeluri de sistem separate pentru accesarea fișierelor și efectuarea operațiunilor de rețea (read/write, recv/send/connect/bind/listen), se pot folosi apeluri de sistem comune io_uring (io_uring_enter, io_uring_setup, io_uring_register etc.), care nu sunt analizate de instrumentele standard pentru identificarea activității malițioase. Interfața io_uring susține aproximativ 60 de operațiuni diferite. Se află în dezvoltare o capacitate care permite lansarea de procese noi prin intermediul io_uring.

Pentru a demonstra funcționarea metodei, a fost pregătit un prototype de rootkit numit Curing, care execută acțiuni precum primirea comenzilor de la un extern server și transmiterea/modificarea fișierelor. În demonstrație a fost utilizată trimiterea unei cereri către portul TCP 8888 al unui gazd extern și trimiterea conținutului fișierului „/etc/shadow”. Se subînțelege că, după compromiterea cu succes a sistemului și obținerea drepturilor de root, atacatorul instalează rootkit-ul pentru a-și consolida prezența în sistemul compromis.

În experimentul realizat, activitatea rootkit-ului Curing a fost neobservată de instrumentele de monitorizare Falco și Tetragon, folosite pentru a identifica anomalii legate de securitate pe gazde și în containere (se susține integrarea cu infrastructura bazată pe Kubernetes). Aceste instrumente folosesc interceptarea apelurilor de sistem pentru a analiza astfel de evenimente ca lansarea proceselor, activitatea de rețea și manipularea fișierelor, dar nu iau în considerare posibilitatea utilizării subsistemului io_uring pentru astfel de operațiuni. Majoritatea sistemelor comerciale de detecție și reacție la incidente de securitate disponibile pentru Linux se bazează de asemenea pe interceptarea apelurilor de sistem.

Pentru a preveni ocolirea instrumentelor de urmărire a activității rețelei și fișierului, este recomandat să folosiți mecanismul KRSI (Kernel Runtime Security Instrumentation), care a apărut în nucleul Linux 5.7 și permite atașarea programelor BPF la orice hook-uri LSM. De exemplu, KRSI la nivelul hook-urilor LSM oferă posibilitatea de a urmări operațiunile cu fișiere, accesul la rețea și lansarea proceselor, indiferent dacă aceste operațiuni sunt inițiate prin apeluri sistemice specifice sau prin io_uring.

Anterior, subsistemul io_uring a fost obiectul criticii din cauza vulnerabilităților grave care apăreau constant. Ca răspuns la cererile utilizatorilor care doreau un instrument simplu pentru a dezactiva io_uring fără a recompile nucleul, în nucleul Linux 6.6 a fost adăugat sysctl io_uring_disabled. Compania Google a dezactivat io_uring în mod implicit în ChromeOS, Android și pe dispozitivele sale. servere, explicând că situația de nesiguranță din io_uring depășește avantajele utilizării io_uring pentru îmbunătățirea performanței.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster