Secondo Microsoft, la “schermata blu” causata da un aggiornamento della soluzione di sicurezza CrowdStrike Falcon ha colpito più di 8,5 milioni di computer in tutto il mondo. Questo incidente è costato caro a molte aziende e ha sollevato un dibattito su come evitare che situazioni simili si ripetano.
Prima di tutto, gli errori esistono. È impossibile garantire la totale assenza di bug nei sistemi di software complessi. Tuttavia, un processo strutturato per lo sviluppo, il testing e la consegna dei prodotti e dei loro aggiornamenti agli utenti può ridurre significativamente il rischio di un problema grave. E noi abbiamo messo in atto questo processo da anni.
Anche noi abbiamo avuto incidenti direttamente collegati agli aggiornamenti dei nostri prodotti. Tuttavia, l’ultima volta che abbiamo avuto un problema di questo tipo su larga scala risale al 2013. Dopo quello spiacevole episodio, abbiamo eseguito un’analisi approfondita delle cause principali, che ha portato a una revisione completa del nostro approccio alla creazione e al testing degli aggiornamenti sia nei prodotti per le aziende che per gli utenti privati. Il sistema che abbiamo costruito si è dimostrato molto affidabile: in 11 anni non abbiamo avuto un solo problema della stessa portata.
Non ci sono segreti sui meccanismi legati al rilascio degli aggiornamenti che abbiamo sviluppato e siamo pronti a condividerli con i colleghi del settore. Senza il libero scambio delle best practice e delle soluzioni sviluppate dalle diverse aziende, il progresso del settore della cybersecurity sarà notevolmente penalizzato. Tra i principali meccanismi di salvaguardia del rilascio degli aggiornamenti vi sono i test multilivello, il rollout graduale degli aggiornamenti e il monitoraggio automatico delle anomalie. Oggi ve ne parliamo in dettaglio.
Testing multilivello
Esistono due tipi di aggiornamenti per i nostri prodotti: alcuni sono utilizzati per aggiungere nuova logica di rilevamento, altri per modificare le funzionalità di un determinato prodotto. L’aggiunta di nuove funzioni comporta potenzialmente maggiori rischi, ma a volte anche gli aggiornamenti legati alla logica possono causare problemi. Per questo motivo, testiamo attentamente le due tipologie di aggiornamenti in fasi diverse.
Controllo dei falsi positivi
Quando creiamo e rilasciamo le regole di rilevamento (sia quelle generate automaticamente che quelle scritte dagli analisti), le testiamo su un ampio database di oggetti legittimi (o “puliti”) come file, pagine web, modelli di comportamento e così via. In questo modo, possiamo identificare e filtrare i falsi positivi. Disponiamo di una raccolta vasta e costantemente aggiornata di oggetti legittimi, sia software che risorse web pulite, su cui vengono testate tutte le regole create.
Uno dei modi in cui questa raccolta viene alimentata è il nostro programma Allowlist, che consente agli sviluppatori di software (sia clienti che sviluppano e utilizzano le proprie soluzioni, sia fornitori indipendenti) di fornirci il loro software. Questo riduce il numero di potenziali falsi positivi e il rischio di una classificazione errata del software.
Altri metodi per ottenere file e metadati sono lo scambio di informazioni con i partner tecnologici, l’utilizzo del nostro portale Threat Intelligence Portal, e così via. In totale, il nostro database di oggetti legittimi contiene informazioni su circa 7,2 miliardi di oggetti.
Testing su macchine virtuali
Tuttavia, il testing degli aggiornamenti non si limita alla verifica delle raccolte di file. Se non vengono rilevati problemi nella prima fase, tutti i componenti aggiornati vengono sottoposti a test automatici multi-fase su macchine virtuali dotate di varie configurazioni di prodotti di sicurezza, software e sistemi operativi. Vengono eseguiti varie prove relative ai nostri prodotti e al funzionamento dei meccanismi di sicurezza, nonché l’imitazione di azioni tipiche dell’utente.
Per quanto riguarda in particolare le situazioni relative ai prodotti, queste includono una scansione del file system, il processo di installazione dell’aggiornamento del prodotto, il riavvio dopo l’aggiornamento e così via. In questo modo ci assicuriamo che il prodotto funzioni normalmente dopo l’aggiornamento, che non si blocchi e che non influisca sulla stabilità del sistema. Ogni aggiornamento viene sottoposto a questo controllo.
I controlli a livello utente simulano il tipico comportamento umano su un computer: aprire un browser, visitare una pagina web, scaricare un file, avviare un programma. Questa verifica ci permette di assicurarci che il prodotto non abbia un impatto negativo sulle prestazioni, sulla velocità di lavoro o sulla stabilità del computer.
Inoltre, gli aggiornamenti vengono automaticamente testati per verificarne la compatibilità con i software industriali (ad esempio, i sistemi SCADA). Qualsiasi impatto negativo sulle soluzioni relativo a questo ambito può comportare un arresto inammissibile dei processi produttivi e un potenziale danno finanziario.
Controllo qualità
Oltre ai controlli di cui sopra, disponiamo anche di un team di controllo qualità separato. Non viene consegnata ai nostri clienti una sola release di aggiornamento di un prodotto senza che i nostri esperti ne abbiano confermato la disponibilità. Inoltre, se necessario, adatta e migliora costantemente i processi di verifica e monitora l’emergere di possibili rischi operativi.
Rilascio graduale degli aggiornamenti delle tecnologie di protezione
Naturalmente, siamo realisti e ammettiamo che questo intero sistema di controlli a multilivello potrebbe non essere comunque sufficiente. Ad esempio, alcuni software di terze parti saranno aggiornati contemporaneamente ai nostri e questo potrebbe causare un conflitto imprevisto. In generale, è impossibile prevedere tutte le combinazioni di configurazioni di programmi e sistemi diversi. Per questo motivo, dopo che un aggiornamento che influisce sulla funzionalità delle soluzioni di sicurezza è pronto e approvato, non viene inviato a tutti i computer dei nostri utenti in un colpo solo. Gli aggiornamenti vengono piuttosto rilasciati in più fasi.
Prima di essere pubblicato sui server di aggiornamento pubblici, un aggiornamento viene sottoposto a test preliminari sui computer della nostra rete. Se non vengono rilevati problemi, l’aggiornamento viene prima ricevuto da un numero molto ristretto di utenti selezionati a caso. Se non si riscontrano problemi o guasti, il numero di computer che ricevono l’aggiornamento aumenta in modo graduale e ad intervalli regolari, e così via fino a quando l’aggiornamento è disponibile per tutti gli utenti.
Monitoraggio automatico delle anomalie
Cosa succede se un aggiornamento causa problemi? Monitoriamo il comportamento delle soluzioni aggiornate utilizzando i dati anonimi trasmessi in maniera volontaria attraverso il nostro KSN e interrompiamo immediatamente la distribuzione degli aggiornamenti se qualcosa va storto.
Ma soprattutto, grazie alla combinazione del monitoraggio automatico delle anomalie e del rilascio graduale degli aggiornamenti, un errore colpirebbe solo un numero molto ridotto di computer: decine, non milioni o addirittura migliaia.
Verifica degli aggiornamenti lato client
Offriamo la possibilità di verificare nuovamente gli aggiornamenti ricevuti, ma questa volta sul lato client attraverso la console di gestione Kaspersky Security Center.
Gli amministratori di sistema del cliente possono creare un gruppo di test di computer isolati (o macchine virtuali) con la configurazione e il set di software più comune per la rete dell’ azienda, e quindi creare un’attività di controllo degli aggiornamenti, specificando questo gruppo di test come target. In questo caso tutti gli aggiornamenti in arrivo vengono prima installati solo sulle macchine di prova, testati in azione e solo dopo il test vengono distribuiti sull’intera rete aziendale. Potete trovare maggiori informazioni su come impostare questo tipo di controllo sul nostro sito web nella sezione dedicata all’assistenza tecnica.
Analizziamo a fondo ogni singolo problema legato agli aggiornamenti del software che può presentarsi (compresi quelli identificati nei test preliminari), cerchiamo di capire le ragioni del loro verificarsi e poi adottiamo misure per garantire che non si verifichino più. Inoltre, abbiamo implementato la pratica di identificare e valutare proattivamente i rischi di possibili problemi, affrontandoli sistematicamente. Grazie a questa prassi, abbiamo creato un sistema multi-livello che ci permette di ridurre in modo significativo il rischio che emergano nuovi problemi.
Naturalmente, in un solo post del blog è impossibile illustrarvi tutte le sfumature del nostro sistema multi-livello per il controllo degli aggiornamenti dei prodotti. Tuttavia, se questo argomento suscita interesse nel settore, siamo pronti a continuare a condividere ulteriori informazioni. Solo la cooperazione aperta tra tutti gli operatori del settore della information security può creare una barriera efficace alle azioni dei criminali informatici.