
Negli ultimi anni, la sicurezza delle distribuzioni GNU/Linux è stata messa a dura prova da nuove tecniche di attacco che sfruttano funzionalità avanzate del kernel Linux. Una delle più critiche riguarda l’interfaccia io_uring, introdotta nel kernel Linux a partire dalla versione 5.1 (rilasciata nel 2019), che rappresenta un punto di svolta per le operazioni di input/output asincrone ma, al contempo, apre una pericolosa falla nella maggior parte degli strumenti di sicurezza.
Cos’è io_uring e perché rappresenta un rischio
io_uring è un’API specifica del kernel Linux progettata per gestire operazioni di I/O in modo asincrono e ad alte prestazioni. A differenza delle tradizionali chiamate di sistema (system call), che obbligano il processo a sospendersi in attesa del completamento dell’operazione, io_uring utilizza 2 buffer circolari condivisi tra spazio utente e kernel Linux (submission queue e completion queue). Questo consente di inviare e ricevere richieste di I/O senza bloccare il processo e senza dover ricorrere continuamente alle chiamate di sistema, riducendo la latenza e il carico sul sistema.
Il problema di sicurezza nasce proprio da questa architettura: la maggior parte degli strumenti di sicurezza, come Falco e Tetragon, si basa sul monitoraggio delle chiamate di sistema per rilevare comportamenti sospetti. Tuttavia, le operazioni effettuate tramite io_uring non generano le stesse tracce, rendendo questi strumenti “ciechi” di fronte a rootkit e malware che sfruttano questa interfaccia.
Il caso Curing: un rootkit che sfrutta io_uring
Per dimostrare la gravità della situazione, i ricercatori di ARMO hanno sviluppato e pubblicato un rootkit proof-of-concept chiamato Curing. Questo malware opera interamente tramite io_uring, riuscendo a comunicare con un server di comando e controllo (C2), eseguire comandi, leggere e scrivere file, e persino manipolare la rete, tutto senza generare chiamate di sistema rilevabili dai principali agenti di sicurezza.
Durante i test, Curing è riuscito a eludere completamente le difese di strumenti open source come Falco e Tetragon (se non configurato con specifici hook avanzati), e altri prodotti commerciali. Solo SentinelOne ha confermato di non essere vulnerabile a questa tecnica, mentre molti altri software di sicurezza non hanno ancora implementato contromisure efficaci.
Perché i sistemi di sicurezza sono vulnerabili
La maggior parte degli agenti EDR (Endpoint Detection and Response) e CWPP (Cloud Workload Protection Platform) per Linux si basa su eBPF (extended Berkeley Packet Filter), una tecnologia che consente di inserire “hook” (punti di aggancio) nel kernel Linux per monitorare eventi come chiamate di sistema, accessi a file e attività di rete. Tuttavia, eBPF impone limiti stringenti sulla posizione e il tipo di codice che può essere caricato, e molti produttori di software di sicurezza scelgono la via più semplice: agganciare direttamente le chiamate di sistema. Questo approccio, sebbene efficace per la maggior parte dei casi, viene completamente aggirato da io_uring, che consente di eseguire operazioni senza passare per i percorsi classici delle chiamate di sistema.
Le operazioni supportate da io_uring sono numerose: lettura e scrittura di file, apertura e modifica di cartelle, gestione delle connessioni di rete, esecuzione di processi, modifica dei permessi e molto altro. In totale, sono disponibili 61 tipi di operazioni, sufficienti per implementare un rootkit completo senza mai “farsi vedere” dagli strumenti che monitorano solo le chiamate di sistema.
Come migliorare la rilevazione: KRSI e LSM
Per affrontare questa nuova minaccia, è necessario adottare strategie di monitoraggio più avanzate. Una delle soluzioni più promettenti è KRSI (Kernel Runtime Security Instrumentation), una tecnologia basata sul framework LSM (Linux Security Module). KRSI consente di agganciare programmi eBPF direttamente agli hook di sicurezza interni del kernel Linux, garantendo una visibilità più profonda e affidabile sulle operazioni critiche come accessi a file, esecuzione di processi e attività di rete.
A differenza del semplice hooking delle chiamate di sistema, gli hook LSM sono elementi fondamentali nella logica di applicazione delle regole di sicurezza del kernel Linux e risultano molto più difficili da bypassare, anche con tecniche sofisticate come quelle basate su io_uring. Tuttavia, l’adozione di KRSI è ancora agli inizi e non tutte le distribuzioni GNU/Linux la abilitano di default. Inoltre, la progettazione di strategie di monitoraggio efficaci richiede una conoscenza approfondita del funzionamento interno del kernel Linux e delle sue interfacce di sicurezza.
Altre strategie di rilevamento includono il monitoraggio comportamentale, l’analisi della memoria del kernel Linux e la ricerca di anomalie nell’uso di io_uring da parte di applicazioni che storicamente non lo utilizzano. Tuttavia, queste tecniche possono generare falsi positivi e richiedono risorse considerevoli per essere implementate in modo efficace.
Implicazioni per la sicurezza delle distribuzioni GNU/Linux
La scoperta della vulnerabilità legata a io_uring rappresenta un campanello d’allarme per tutto il settore della sicurezza informatica su GNU/Linux. Con la crescente diffusione di questa interfaccia, soprattutto nei contesti cloud-native e nei server ad alte prestazioni, il rischio di attacchi invisibili è destinato ad aumentare se non verranno adottate contromisure adeguate.
Gli amministratori di sistema e i responsabili della sicurezza dovrebbero monitorare attentamente le evoluzioni delle soluzioni di sicurezza, preferendo quelle che integrano il supporto a KRSI e LSM, e valutare l’opportunità di disabilitare io_uring nei contesti dove non è strettamente necessario. È inoltre fondamentale mantenere aggiornati kernel Linux e software di sicurezza, applicando tempestivamente eventuali patch (correzioni) e monitorando le linee guida dei principali produttori di software di sicurezza del settore.
La ricerca di ARMO e la pubblicazione del rootkit Curing hanno portato alla luce una falla critica che riguarda la maggior parte delle distribuzioni GNU/Linux moderne. Solo un approccio multilivello, basato su tecnologie avanzate e una maggiore consapevolezza dei rischi, potrà garantire una protezione efficace contro questa nuova generazione di rootkit invisibili.
Fonte: https://www.armosec.io/blog/io_uring-rootkit-bypasses-linux-security/
Fonte: https://blog.desdelinux.net/rootkits-invisibles-el-nuevo-desafio-para-las-herramientas-de-seguridad-en-linux/
Source: Read More