Vi ricordate quanto successo il 19 luglio 2024? Un numero incalcolabile di computer Windows, a livello mondiale, mostrarono improvvisamente una schermata blu entrando in un loop infinito che aveva, sempre e comunque, come conseguenza, la visualizzazione di un BSoD (Blue Screen of Death). Il problema ha causato interruzioni del flusso di lavoro presso alcune tra le principali compagnie aree, negli ospedali, nelle banche, presso network televisivi, nella grande distribuzione e in molteplici infrastrutture critiche.
La causa dell’incidente fu immediatamente riconducibile a un aggiornamento di sicurezza difettoso, rilasciato non da Microsoft bensì da una società che fornisce servizi e sistemi di protezione cloud oltre a strumenti di contrasto agli attacchi informatici negli ambienti aziendali ed enterprise: CrowdStrike. In un articolo successivo, avevamo anche spiegato come si potesse ripristinare il corretto funzionamento dei sistemi Windows affetti da schermata blu usando WinPE e PXE al boot.
Nello specifico, il driver CrowdStrike – presente sui sistemi Windows – cercava di accedere a un’area di memoria non valida provocando un errore critico che mandava in crash il kernel del sistema operativo.
La soluzione: eBPF e la sicurezza del kernel
Per affrontare e prevenire simili catastrofi in futuro, l’adozione di tecnologie più sicure e resilienti diventa assolutamente fondamentale. In questo contesto, entra in gioco eBPF (Extended Berkeley Packet Filter), una tecnologia che sta rapidamente guadagnando terreno nel mondo della sicurezza informatica. Questo il sito ufficiale del progetto.
eBPF è un ambiente di esecuzione sicuro all’interno del kernel, paragonabile all’ambiente runtime sicuro di JavaScript integrato nei browser Web. È incluso nel kernel di Linux da diversi anni e, sebbene molti utenti non ne siano consapevoli, è già presente sui loro sistemi.
La forza di eBPF risiede nella sua capacità di eseguire codice in modo sicuro, senza rischiare di far crashare l’intero sistema. Questo è possibile grazie a un “verificatore software” che analizza il codice eBPF prima della sua esecuzione. Se il verificatore rileva codice potenzialmente pericoloso, l’esecuzione viene bloccata, garantendo così l’integrità del sistema.
Il verificatore stesso è un oggetto complesso: il suo funzionamento poggia su oltre 20.000 linee di codice ed è sviluppato con il contributo di importanti attori dell’industria tecnologica come Meta, Isovalent e Google, e con il supporto accademico di istituzioni come la Rutgers University e l’Università di Washington.
Un nuovo standard per la sicurezza
L’adozione di eBPF ha già dimostrato i vantaggi della tecnologia, in diverse situazioni. Ad esempio, CrowdStrike stava già implementando eBPF sui propri sistemi Linux, rendendoli immuni ai crash. La società ha inoltre pianificato di abbracciare eBPF anche nel caso dei sistemi Windows, una volta che il supporto per questa tecnologia diventerà stabile anche per la piattaforma Microsoft.
L’importanza di eBPF non si limita solo alla prevenzione dei crash di sistema. Molte startup impegnate nel settore della sicurezza informatica, come Oligo e Uptycs, hanno evidenziato i vantaggi di eBPF, sottolineando come la sua adozione possa prevenire interruzioni globali come quella di luglio.
Anche grandi aziende tecnologiche stanno adottando eBPF: Cisco, ad esempio, ha acquisito la startup Isovalent e ha lanciato un nuovo prodotto di sicurezza basato su eBPF, chiamato Cisco Hypershield, progettato per l’applicazione e il monitoraggio della sicurezza. Google e Meta già utilizzano eBPF per rilevare e bloccare attività malevole nei loro sistemi, grazie alla velocità, alla profonda visibilità e alle garanzie di sicurezza offerte da questa soluzione.
Limiti e futuro di eBPF
Sebbene eBPF rappresenti un enorme passo avanti nella sicurezza del kernel, non è esente da difetti. Essendo relativamente nuova, ha presentato alcuni bug nella gestione del codice, inclusi casi rari in cui ha provocato un crash del kernel Linux. Di recente i ricercatori Google hanno individuato una vulnerabilità nel kernel Linux esacerbata proprio dall’integrazione di eBPF.
Tuttavia, la risoluzione di questi bug non solo migliora eBPF, ma rafforza la sicurezza di tutti i sistemi che ne fanno uso, contribuendo a un miglioramento continuo e più rapido della sicurezza informatica globale.
Incidenti come quello occorso il 19 luglio 2024 non possono e non devono ripetersi. Si tratta di imprevisti che minano alla base la continuità operativa delle aziende, provocando danni per miliardi di dollari.
Evitare problemi con la distribuzione degli aggiornamenti software
Esistono tante strategie per ridurre i rischi durante il rilascio di aggiornamenti software: ad esempio il canary testing, il rilascio graduale e l’ingegneria della resilienza. Vediamo di che cosa si tratta:
- Canary testing: Questa strategia consiste nel rilasciare una nuova versione del software solo a un piccolo sottoinsieme di utenti o server prima di renderla disponibile a tutti. L’idea è simile a quella del “canarino nella miniera di carbone”. I minatori portavano un canarino per rilevare la presenza di gas tossici: se il canarino si sentiva male, i minatori sapevano di dover evacuare. Allo stesso modo, nel deployment software, se la nuova versione presenta problemi, questi saranno rilevati da un numero limitato di utenti, riducendo l’impatto e permettendo di intervenire prima di estendere la distribuzione.
- Staged rollouts (rilascio graduale): L’approccio prevede il rilascio del software in più fasi graduali. Invece di distribuire la nuova versione a tutti gli utenti contemporaneamente, il rollout avviene per gruppi o regioni, monitorando attentamente ogni fase per identificare eventuali problemi prima di passare alla successiva. Questo consente di limitare i danni in caso di bug o malfunzionamenti, poiché solo una parte degli utenti è interessata in un dato momento.
- Resilience engineering: L’ingegneria della resilienza è una disciplina ampia che si concentra sulla capacità di un sistema di continuare a funzionare correttamente anche in presenza di guasti o di problemi. Si tratta di progettare sistemi software in modo che siano resilienti, ovvero capaci di recuperare rapidamente da errori e di minimizzare l’impatto dei problemi sul servizio complessivo. In pratica, l’ingegneria della resilienza include pratiche come la creazione di sistemi ridondanti, l’implementazione di meccanismi di failover (passaggio automatico a un sistema alternativo in caso di guasto), e il testing continuo per identificare e correggere le vulnerabilità.
L’adozione di eBPF in Linux e Windows
Quelle presentate al precedente paragrafo, sono tutte tecniche che aiutano a minimizzare i rischi associati alla distribuzione di nuovi software, garantendo un livello di sicurezza e affidabilità maggiori durante il processo di aggiornamento.
L’importanza di eBPF, tuttavia, risiede nel fatto che offre una soluzione software che sarà disponibile di default sia nei kernel Linux che Windows, rendendo più sicuri i processi di aggiornamento del software a livello globale.
eBPF può diventare uno standard per le aziende che utilizzano software commerciale basati su driver e moduli kernel. Per i sistemi Linux, eBPF è già una realtà, mentre per Windows lo sarà presto. Alcuni fornitori di software hanno già adottato eBPF in modo proattivo: promuovendo la consapevolezza su questa tecnologia, possiamo contribuire a prevenire blackout informatici su scala globale e garantire un futuro più sicuro.