Linux ha un punto cieco e si chiama io_uring: il problema però è nei software di sicurezza
Nel kernel Linux si cela un componente poco visibile che può essere utilizzato per condurre attacchi. Secondo ARMO, l'interfaccia io_uring può essere sfruttata per nascondere attività malevole.

Nel cuore del kernel Linux si nasconde una minaccia sottovalutata e difficilmente rilevabile: a sostenerlo sono i ricercatori di ARMO che puntano il dito contro io_uring, un’interfaccia asincrona di I/O che, nata per migliorare le performance, ha finito per diventare un “punto cieco” per quasi tutte le soluzioni di sicurezza attualmente in uso. I tecnici di ARMO hanno infatti sviluppato un rootkit proof-of-concept chiamato Curing che, costruito attorno a io_uring, è capace di eludere i controlli di strumenti come CrowdStrike Falcon, Falco, Tetragon e Microsoft Defender for Endpoint. Il risultato? Una vasta superficie di attacco invisibile alla maggior parte degli strumenti di rilevamento basati su system call.
L’origine della vulnerabilità: io_uring e la sua natura asincrona
Introdotta con Linux 5.1, io_uring è un’API kernel per operazioni di I/O asincrono che consente alle applicazioni di comunicare con il kernel tramite buffer condivisi tra spazio utente e kernel space. Questo meccanismo riduce significativamente l’overhead di sistema, eliminando l’uso esplicito delle system call per numerose operazioni di I/O.
Tuttavia, molti strumenti di sicurezza per Linux – soprattutto quelli basati su eBPF – si affidano al tracciamento delle system call per rilevare attività sospette.
Le system call (syscall, chiamate di sistema) rappresentano il canale di comunicazione tra un programma in esecuzione in user space e il kernel del sistema operativo (in kernel space). Quando un’applicazione ha bisogno di accedere a risorse protette come file, memoria, rete o dispositivi hardware, non può farlo direttamente: deve invocare una system call.
Sono gli strumenti ufficiali per interagire con il sistema operativo e per questo motivo molte soluzioni di sicurezza monitorano proprio queste chiamate per rilevare attività sospette o malevole.
Se però le azioni dell’attaccante non passano da lì, il software di sicurezza perde qualsiasi visibilità. ARNO spiega proprio questo: con l’interfaccia io_uring gli accessi ai file, le operazioni di rete e le interazioni con i processi avvengono “under the radar”. In questo video una dimostrazione di ciò che succede con Falco attivo.
Curing: un rootkit invisibile agli occhi dei software di sicurezza
Come accennato in apertura, proprio per dimostrare l’impatto in concreto, ARMO ha creato Curing, un rootkit che si affida esclusivamente a io_uring per comunicare con un server command-and-control e ricevere comandi malevoli, senza mai invocare una syscall tradizionale.
I test condotti dagli esperti hanno rivelato che la maggior parte degli strumenti di rilevamento non sono in grado di identificare queste operazioni.
L’adozione di eBPF nelle soluzioni di sicurezza ha rappresentato una svolta nel monitoraggio delle attività svolte lato kernel. Tuttavia, molti vendor si sono limitati a un approccio semplificato: il monitoraggio diretto delle system call. Questo schema, oltre a essere fragile di fronte a meccanismi alternativi come io_uring, ignora l’evoluzione delle interfacce kernel.
ARMO sottolinea che esiste un’alternativa più robusta: KRSI (Kernel Runtime Security Instrumentation). Basato sul framework LSM (Linux Security Modules), KRSI consente di collegare programmi eBPF a eventi di sicurezza ad alto livello come esecuzioni di processo, accessi ai file e comunicazioni di rete. Come le notification routines di Windows, gli LSM hook garantiscono un punto di osservazione affidabile, non soggetto a bypass tramite alternative alle syscall.
Da parte sua, CrowdStrike ha già rilasciato una patch correttiva per Falcon. Nell’analisi di ARMO si possono trovare tutti i riferimenti agli altri software e le risposte dei vendor corrispondenti.
Il futuro della sicurezza su Linux dipende dalla capacità di adattarsi a un ecosistema kernel in continua evoluzione. Ignorare io_uring oggi significa spalancare le porte agli attacchi di domani.
Rooting su Android con io_uring
Già ad agosto 2023, un gruppo di ricercatori parlò dell’interfaccia io_uring nel kernel Linux spiegando come potesse essere sfruttata anche su Android (che, lo ricordiamo, a basso livello sfrutta il kernel Linux) per effettuare attività di rooting.
Già nel 2022, sviluppando un exploit “ad hoc” fu possibile fare leva su io_uring per acquisire i diritti di root su dispositivi come Google Pixel 6 e Samsung Galaxy S22.
Questo video mette in evidenza come io_uring rappresenti una vasta superficie di attacco non solo per i sistemi desktop Linux ma anche per i dispositivi mobili Android. Nonostante i tentativi di limitarne l’accesso, la presenza di numerosi bug e la possibilità di sfruttarli ritagliandosi contesti privilegiati rendono il kernel Android vulnerabile.
I ricercatori sollevavano interrogativi sulla possibile disabilitazione di io_uring anche su Android, similmente a quanto fatto nel caso di Chrome OS, almeno fino a quando il sottosistema non raggiungerà una maggiore maturità e sicurezza.