Un indicatore di compromissione che gira dentro un PDF o nel corpo di una mail non lo legge nessuna macchina: tocca trascriverlo a mano in un IDS (Intrusion Detection System) o in un foglio Excel, con gli errori di copiatura che ne seguono. MISP — Malware Information Sharing Platform — risolve il problema trasformando gli indicatori in una struttura dati interrogabile e sincronizzabile tra organizzazioni. Il progetto, pubblicato come open source nel 2013, viene da uno strumento interno chiamato CyDefSIG (Cyber Defence Signatures), avviato nel 2011 da Christophe Vandeplas alla Difesa belga, e oggi lo sviluppa e mantiene soprattutto il CIRCL, il Computer Incident Response Centre del Lussemburgo.

Contesto

Tra i CERT europei gli indicatori girano per lo piĂš su canali non strutturati: mail, allegati di testo, fogli di calcolo. Ogni team riceve gli stessi indirizzi IP, gli stessi domini e gli stessi hash da fonti diverse, e ognuno se li reinserisce a mano nei propri sistemi di rilevamento. A un workshop di analisi malware del 2012 piĂš gruppi si accorsero di aver analizzato lo stesso campione ciascuno per conto proprio: lo stesso lavoro rifatto in parallelo, senza che nessuno sapesse cosa stavano facendo gli altri.

Il problema sta nella forma dei dati, prima ancora che nella quantità. Un hash MD5 scritto dentro un report è informazione per una persona; lo stesso hash in un campo tipizzato, con timestamp, attribuzione e flag di esportazione, è qualcosa che un sistema legge da solo, senza che nessuno intervenga. MISP serve a far passare gli indicatori dal primo stato al secondo.

Architettura

MISP è un’applicazione web in PHP costruita su CakePHP, con MySQL come archivio. Il modello dati ruota attorno a due entità.

Un evento rappresenta un incidente, una campagna o un’analisi: porta una data, l’organizzazione di origine, un livello di rischio e un’impostazione di distribuzione. A ogni evento appartengono uno o più attributi: gli indicatori veri e propri, tipizzati per categoria (indirizzo IP sorgente o destinazione, dominio, hash di file MD5/SHA1, URL, indirizzo email, nome file, chiave di registro). Ogni attributo porta un flag che dice se va esportato verso un sistema di rilevamento — una distinzione che tiene separato il contesto investigativo dagli indicatori su cui si agisce.

Su questo modello MISP costruisce tre meccanismi.

La correlazione confronta in automatico gli attributi tra eventi: se lo stesso dominio compare in due incidenti caricati da organizzazioni diverse, MISP li collega e lo segnala. Salta fuori una sovrapposizione che altrimenti sarebbe rimasta chiusa in due silos separati.

L’export verso IDS genera le regole per Snort e Suricata a partire dagli attributi di rete marcati come esportabili. La piattaforma produce anche altri formati pronti da dare in pasto ai sistemi di rilevamento, di rete e di host.

La sincronizzazione collega istanze MISP distinte: un’organizzazione fa girare il proprio server e si aggancia a quelli dei partner di cui si fida, scaricando i loro eventi secondo le regole di distribuzione che la fonte ha deciso. Non c’è un repository centrale obbligatorio; la topologia se la disegnano le organizzazioni tra loro.

Formati e interoperabilitĂ 

MISP importa ed esporta OpenIOC, lo schema XML che Mandiant ha pubblicato nel 2011 per descrivere indicatori host. Sul versante degli standard di scambio, STIX (Structured Threat Information Expression), curato da MITRE, ha rilasciato la versione 1.0 nell’aprile 2013 come linguaggio per rappresentare in modo strutturato osservabili, indicatori e contesto di minaccia; TAXII (Trusted Automated Exchange of Indicator Information), la cui prima bozza è del 2012, definisce i protocolli di trasporto per spostare contenuti STIX in modelli hub-and-spoke o peer-to-peer.

Conviene tenere distinti i ruoli. STIX descrive cosa si condivide, TAXII come lo si trasporta, OpenIOC e il formato nativo di MISP come si rappresenta un indicatore dentro una certa piattaforma. C’è già anche IODEF (RFC 5070, 2007), il formato IETF per scambiare dati sugli incidenti tra CSIRT (Computer Security Incident Response Team). Nessuno di questi formati ha ancora vinto: convivono, e una piattaforma di scambio vale per quante conversioni regge senza perdere semantica per strada.

Il punto difficile

La parte difficile della condivisione è la fiducia, molto più del formato. Un IoC condiviso si porta dietro un’asserzione implicita — “questo è malevolo” — che chi lo riceve non può verificare e in base alla quale potrebbe comunque bloccare del traffico. Un falso positivo propagato per sincronizzazione automatica diventa un disservizio replicato su tutte le istanze a valle.

MISP affronta la cosa con i livelli di distribuzione per evento (solo la propria organizzazione, una community, condivisibile a catena, pubblico) e con il Traffic Light Protocol, la convenzione introdotta dal britannico NISCC (National Infrastructure Security Co-ordination Centre) nei primi anni 2000 e ormai standard di fatto tra i CSIRT: quattro etichette (rosso, giallo, verde, bianco) che dichiarano fin dove un’informazione può essere ridistribuita. Restano però convenzioni sociali fatte applicare da uno strumento tecnico: niente impedisce a chi riceve di violare il TLP o di propagare un dato sbagliato. La piattaforma abbassa l’attrito della condivisione; non sostituisce la fiducia tra le organizzazioni che la usano.

Limiti

A oggi MISP è uno strumento giovane, con un solo sviluppatore principale a tempo pieno e un’adozione concentrata nell’ambiente CERT da cui è nato — Difesa belga, CIRCL, qualche organizzazione che ci è arrivata passando per la NATO. Il modello dati regge bene gli indicatori atomici (IP, domini, hash) ma è meno espressivo per le relazioni complesse tra entità, proprio il terreno che STIX 1.0 si propone di coprire. La sincronizzazione chiede alle organizzazioni di mettersi d’accordo su topologia e regole di distribuzione: un investimento organizzativo che la piattaforma abilita ma non risolve da sé.

Resta il fatto verificabile: un IoC che prima viaggiava come testo in una mail, una volta entrato in MISP diventa un record tipizzato — correlato, esportabile in una regola Suricata e sincronizzabile verso chi ha diritto di vederlo. È un passo piccolo e concreto, ed è esattamente il passo che mancava.


Immagine di copertina: Schermata di un editor esadecimale che mostra il dump del Master Boot Record infettato dal virus Stoned, con colonne di byte… — schermata di Ralf Roletschek, pubblico dominio — https://commons.wikimedia.org/wiki/File:Stoned-virus-hexacode.jpg