Gli antivirus per Linux hanno senso? Forse, ma un proof-of-concept sviluppato da ARMO dimostra come evaderli

Ai tanti lettori MMULini con un passato da sysadmin sarà capitato molte volte di trovare il cliente di turno che segnala l’infausta esigenza: “le policy di sicurezza ci impongono di avere un antivirus ovunque, anche su Linux!” e lo scuotimento di capo non solo è automatico, ma doveroso.

Il motivo non è tanto perché i virus su Linux non esistano (sfatiamo il mito: Linux non è esente da virus, semplicemente non esiste un mercato dei virus per Linux), ma perché le soluzioni fin qui disponibili sono generalmente dei porting mal realizzati, poco funzionanti e sostanzialmente inutili per i sistemi che usano il Kernel creato da Linus Torvalds alla base del proprio sistema operativo.

Senza parlare del cosiddetto “footprint“, ossia il peso computazionale che questi software che ovviamente devono girare come dei servizi ed analizzare ogni cosa che viene eseguita sul sistema, portano nel sistema in cui vengono installati.

Bene, da oggi, non bastassero le ragioni sopra citate per disprezzare gli antivirus su Linux questo articolo di The Register ne offre una in più, raccontando di una vulnerabilità che affligge gli antivirus e che può essere sfruttata mediante l’utilizzo dell’interfaccia io_uring del Kernel.

Questa consente alle applicazioni di effettuare richieste IO senza utilizzare le chiamate di sistema tradizionali, ad esempio proprio gli antivirus la usano per migliorare le prestazioni abilitando operazioni I/O asincrone tra lo spazio utente e il Kernel Linux attraverso buffer ad anello condiviso.

Gli sviluppatori dell’azienda ARMO, che produce la piattaforma di sicurezza per Kubernetes chiamata Kubescape, hanno creato un proof-of-concept (POC), ossia una dimostrazione pratica, che mostra come effettuare il bypass degli antivirus Linux (nel caso specifico Falco) utilizzando io_uring in modo da eseguire operazioni senza effettuare syscall, ossia le azioni monitorate dall’antivirus.

Il risultato è l’invio del file /etc/shadow senza che l’antivirus si accorga di nulla.

C’è anche un breve video che mostra la sequenza, oltre ad un repository GitHub in cui è possibile visionare il codice del POC, denominato curing:

Come spiega il report, anche se l’interfaccia non viene usata nel sistema, rimane disponibile, e quindi in buona sostanza il POC risulta facilmente replicabile.

La soluzione è semplice, almeno per chi non usa io_uring, ossia disabilitarla:

sysctl -w kernel.io_uring_disabled=2

Per quanti invece lo usano e si affidavano ad un antivirus per dormire sonni tranquilli, il consiglio rimane la melatonina.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Una risposta a “Gli antivirus per Linux hanno senso? Forse, ma un proof-of-concept sviluppato da ARMO dimostra come evaderli”

  1. Avatar JustATiredMan
    JustATiredMan

    Peccato che non si possa disabilitare impunemente io_uring. Bisogna vedere caso per caso.
    Viene usato praticamente in tutti gli ambienti di virtualizzazione (qemu) e di container per migliorare le prestazioni verso i dischi virtuali.
    Per non menzionare che su mariadb c'era qualcuno che voleva usarlo su innodb, anche in quel caso, per migliorare le prestazioni. MI pare anche su Postgres ci fossero discussioni in corso.
    Non so se oggi siano state implementate o meno, e quindi bisogna assicurarsene prima di disabilitarlo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *