I sistemi operativi moderni come Windows, Linux e macOS sono multitasking, ovvero capaci di eseguire più attività contemporaneamente. Nei sistemi multitasking, i programmi possono operare in modalità utente oppure in modalità kernel. In modalità utente i programmi hanno accesso limitato all’hardware e operano in memoria virtuale, isolati l’uno dall’altro. In caso di errore, l’applicazione può arrestarsi senza compromettere l’intero sistema operativo. Diversamente, in modalità kernel, il codice ha accesso privilegiato alla memoria e può gestire direttamente l’hardware. È in questa modalità che si trovano i driver che consentono al sistema operativo di interagire con periferiche come schede grafiche e audio. Una schermata blu o BSOD (Blue Screen of Death) compare quando si verifica un errore fatale nella modalità kernel, ad esempio se un driver tentasse di accedere a una posizione di memoria non autorizzata.
Kernel mode vs User mode
Il cuore di ogni sistema operativo moderno è il kernel, responsabile della gestione delle risorse di basso livello, come la memoria e l’accesso all’hardware.
I “ring” sono livelli di privilegio utilizzati nei sistemi operativi per gestire l’accesso alle risorse hardware e software. Questa architettura gerarchica consente di separare le operazioni che richiedono privilegi elevati da quelle che possono essere eseguite con privilegi limitati. Il ring 0 corrisponde al livello di privilegio più elevato, noto appunto come modalità kernel o kernel mode.
L’architettura dei ring è fondamentale per la sicurezza e la stabilità dei sistemi operativi. Essa consente l’isolamento delle applicazioni in user mode (modalità utente), riducendo il rischio che un’applicazione difettosa possa compromettere l’intero sistema. Solo il codice eseguito in modalità kernel può eseguire operazioni critiche, garantendo che le risorse siano protette da accessi non autorizzati. La separazione dei livelli consente inoltre al sistema operativo di gestire in modo efficiente le risorse hardware e software.
L’esempio della schermata blu provocata dal software CrowdStrike, a luglio 2024
Come ben ricorderete, nel mese di luglio 2024, milioni di sistemi Windows si sono bloccati quasi simultaneamente, mostrando una schermata blu. Il problema fu causato da un aggiornamento problematico distribuito da CrowdStrike agli utenti business del suo software Falcon. Il “blackout informatico” colpì numerose aziende a livello globale, inclusi aeroporti, banche, hotel e ospedali.
Il software di sicurezza CrowdStrike Falcon non è un semplice antivirus ma uno strumento di protezione avanzata che include un driver operativo in modalità kernel, proprio quello che ha causato il problema. Un aggiornamento difettoso, distribuito attraverso il sistema di upgrade CrowdStrike, ha generato un errore durante l’esecuzione in modalità kernel, portando al crash dell’intero sistema. A causa di questo errore, il sistema operativo non ha potuto fare altro che interrompersi, mostrando la famigerata schermata blu. Il ripristino ha richiesto l’avvio in modalità provvisoria e la rimozione manuale del file responsabile. A suo tempo abbiamo pubblicato uno spunto, a nostro avviso interessante, per recuperare il funzionamento dei sistemi bloccati dalla schermata blu, sfruttando l’avvio tramite rete con PXE.
La débâcle CrowdStrike di luglio 2024 ha destato scalpore per via del profilo (spesso molto elevato) degli utenti interessati dal problema e perché ha coinvolto un numero davvero ampio di sistemi.
Nel corso degli anni, queste problematiche si sono ripetute con una certa periodicità e hanno interessato i sistemi protetti con un ampio ventaglio di soluzioni per la sicurezza informatica: dai semplici antimalware per arrivare alle soluzioni centralizzate per la protezione degli endpoint aziendali.
Schermate blu provocate da driver difettosi
I driver per Windows che operano in kernel mode, soprattutto i driver di “boot”, sono soggetti a rigidi controlli di qualità e compatibilità. Microsoft offre la certificazione WHQL (Windows Hardware Quality Labs) per i driver che superano i test e sono ritenuti affidabili.
Le schermate blu in Windows possono essere infatti provocate non solo da driver collegabili con software per la sicurezza informatica ma anche da driver di periferica e componenti di sistemi che cessano di funzionare come dovrebbero, per svariate cause.
Nel caso di CrowdStrike, la comparsa della schermata blu è stata causata da un file di definizione corrotto, in particolare contenente una sequenza di soli zeri. Il driver di CrowdStrike, non sufficientemente resiliente, ha tentato di eseguire questo file come se fosse codice valido, causando un accesso illegale alla memoria e quindi il BSOD. Nello specifico, il codice ha tentato di caricare dati da un indirizzo di memoria non valido (un indirizzo di memoria costruito in modo errato da un puntatore nullo).
Come evitare la comparsa di schermate blu in Windows?
E veniamo al titolo dell’articolo. È davvero possibile evitare la comparsa di schermate blu in Windows?
Diciamo subito che evitare del tutto le schermate blu in Windows è molto difficile, ma è possibile ridurne drasticamente la frequenza con le giuste precauzioni. Innanzi tutto, si dovrebbero sempre evitare driver e software sulla carta incompatibili. Nello specifico, vanno installati solo driver certificati e compatibili con la versione di Windows in uso.
La memoria RAM difettosa è una delle cause principali delle schermate blu: Windows Memory Diagnostic è il software che il sistema Microsoft offre per verificarne l’integrità. In un altro articolo spieghiamo come effettuare un test della RAM e diagnosticare eventuali problemi.
Anche unità di memorizzazione danneggiate possono determinare la comparsa di schermate blu: è possibile usare strumenti “ad hoc” per riconoscere hard disk e SSD danneggiati.
Come spiegato nel caso della schermata blu con l’errore Critical Process Died di Windows 10 e Windows 11, è possibile usare l’utilità gratuita MiniDumper presentata per risalire alla causa del problema. In un altro articolo abbiamo visto cosa provoca la comparsa della schermata blu e come fare diagnosi efficaci con il debugger gratuito Microsoft WinDbg.
Implicazioni delle schermate blu e domande aperte
L’incidente occorso nell’estate 2024 che ha coinvolto i clienti CrowdStrike ha sollevato una serie di domande alle quali Microsoft sta provando a dare una risposta. Vedremo se sarà convincente e, soprattutto, efficace.
Innanzi tutto, perché un driver di terze parti può causare un crash su così tanti computer?
Ancora, l’uso di un driver a livello kernel per un software di protezione a sua volta connesso a Internet è una pratica sicura?
Perché si continuano ad utilizzare linguaggi di programmazione che permettono l’accesso non autorizzato alla memoria? Da tempo si sta guardando all’adozione di linguaggi più moderni e memory-safe come Rust. Basti pensare che Rust è progressivamente integrato nel kernel di Windows 11 e a livello di kernel Linux l’introduzione di Rust ha causato discussioni interminabili.
La risposta di Microsoft per scongiurare le schermate blu in Windows
Già dall’autunno 2024, Microsoft ha iniziato a soppesare l’introduzione di una serie di misure per affrontare la situazione e prevenire la comparsa di schermate blu su un numero elevato di server, workstation e PC.
I tecnici dell’azienda di Redmond hanno annunciato linee guida più rigorose per gli aggiornamenti software, riducendo la superficie di attacco e massimizzando l’isolamento dei driver a livello kernel. L’approccio mira a limitare l’accesso ai componenti critici del sistema operativo da parte di fornitori terzi.
Microsoft fa presente che in futuro, sulla scorta di quanto avvenuto nel caso CrowdStrike, gli antimalware e le altre soluzioni di sicurezza non avranno più accesso alla modalità kernel. E in molti hanno criticato la scelta di esporre solo un ventaglio limitato di informazioni sulle attività del sistema, lasciando che siano soltanto le soluzioni Microsoft a dialogare con il kernel di Windows.
Matthew Prince, CEO di Cloudflare, ha espresso i suoi timori: “un mondo in cui solo Microsoft può fornire una sicurezza efficace per gli endpoint non è un mondo sicuro“.
L’azienda di Redmond sembra inoltre determinata a portare al debutto Quick Machine Recovery, una funzionalità progettata per consentire agli amministratori IT di riparare sistemi Windows non avviabili da remoto.
Quick Machine Recovery permette agli amministratori di eseguire “fix mirati”, anche quando i computer non riescono ad avviarsi, senza necessità di accesso fisico al dispositivo. Il sistema dovrebbe usare un ambiente Windows Preinstallation Environment (Windows PE). La nuova funzionalità mira a ridurre significativamente il tempo necessario per risolvere problemi critici, migliorando l’affidabilità e la sicurezza dei sistemi operativi Windows.
Infine, Microsoft intende adottare un modello di sicurezza Zero Trust: ogni richiesta di accesso a risorse o servizi deve essere verificata e autorizzata esplicitamente prima di essere concessa.