Da qualche tempo a questa parte leggo notizie che dicono che certi aspetti della sicurezza si stanno muovendo nella direzione giusta. Un esempio è “Microsoft admits it can’t stop Office file format hacks“. Nell’articolo, si commenta la notizia che Microsoft avrebbe intenzione di adottare un meccanismo di sandboxing per Office. Nonostante il titolo suggerisca una critica a Microsoft, in realtà l’articolo descrive una scelta progettuale decisamente apprezzabile. Per anni Microsoft è stata criticata per il suo atteggiamento nei confronti della sicurezza, trattata essenzialmente come un problema di immagine. Negli ultimi anni Microsoft ha fatto passi avanti significativi, ma adesso si scontra, secondo me, con il problema che i suoi prodotti sono molto complessi e tendono, per varie ragioni sulle quali non mi voglio soffermare, ad una complessità sempre maggiore. Programmi complessi hanno bachi, e fra questi anche bachi di sicurezza. I problemi di sicurezza di un word processor sono legati ovviamente al formato dei documenti che tratta. Di tutto questo, è una conseguenza quasi ovvia che Office abbia necessariamente dei problemi di sicurezza legati al formato dei documenti. Non è una particolarità dei prodotti Microsoft, infatti proprio in questi giorni sono state segnalate vulnerabilità dello stesso tipo per OpenOffice (una ad esempio è questa). Per affrontare il problema delle inevitabili vulnerabilità, ci sono fondamentalmente quattro strade. Le prime due sono cercare i bachi nei prodotti dopo che sono stati distribuiti, producendo poi delle patch, e migliorare il processo di sviluppo per ridurre gli errori. La prima, sulla quale si concentra fin troppa attenzione, è la meno efficace in assoluto. La soluzione in generale più efficace è invece lavorare sugli aspetti architetturali, riducendo le parti critiche per la sicurezza al minimo necessario (la cosiddetta TCB, Trusted Computing Base). Purtroppo, è una strada che si scontra con molti problemi e che richiede un approccio complessivo, generalmente di disegnare (o ridisegnare) il prodotto avendo la sicurezza fra i principali obiettivi: se altri obiettivi sono altrettanto o più importanti, sono necessari dei compromessi che ne riducono sensibilmente l’efficacia, anche se programmi come postfix e qmail mostrano quanto può fare una progettazione realmente attenta alla sicurezza.
Ma anche quando un prodotto sia disegnato per essere sicuro, esiste la possibilità che dei bachi di sicurezza ci siano. Per questo è necessario considerare la quarta strada, ovvero la mitigazione: fare sì che i problemi di sicurezza causino il minor danno possibile. Si prende atto del fatto che i bug possono esistere e si cerca di ridurre il più possibile il danno. E qui torniamo a Office. L’idea del sandboxing è descritta in questo post, nel quale sono chiaramente riconoscibili i concetti che ho descritto qui sopra. Prima di tutto, il fatto chela presenza di bug sia inevitabile. Poi, un componente che si occupa di validare i documenti prima di farli aprire ad altri componenti (ovvero, una parte della TCB che si occupa dell’input validation). E poi, un meccanismo di segregazione che permette ai file potenzialmente pericolosi di accedere all’insieme minimo di risorse necessario per essere visualizzato, ovvero la mitigazione mediante segregazione. E questo è il punto al quale volevo arrivare: oltre alla caccia al baco, su cui si perde fin troppo tempo, e alle soluzioni architetturali, che so no comunque un obiettivo importante ma che sono anche le più lontane, si comincia a ragionare sui meccanismi di mitigazione, e sulla segregazione in particolare. È importanteperò notare che la segregazione è un meccanismo di default deny, come è ogni meccanismo di sicurezza veramente efficace: non si accede se non alle risorse strettamente necessarie. È un concetto ben diverso da strumenti di blacklisting che impediscano ad esempio di accedere ad alcune tipologie di file considerate pericolose o sensibili. Nell’articolo di CW si dice anche che il meccanismo di sandboxing proposto “is essentially lightweight versions of virtual machines”. Sull’uso di macchine virtuali e affini come strumento di segregazione, che è un tema al quale sono affezionato, tornerò nei prossimi post.