La sicurezza è un prodotto?

Sempre più spesso durante lezioni e seminari che mi capita di tenere, compresi gli ultimi seminari tenuti per l'AIPA l'anno scorso e questo gennaio, dopo aver descritto i vari strumenti di sicurezza e il loro uso, passo parecchio tempo a descrivere cosa NON sono in grado di fare.

Questo probabilmente non è quello che molti ascoltatori si aspettano. Man mano che l'attenzione alla sicurezza delle reti si diffonde, il problema viene sempre più affrontato come un qualsiasi servizio da aggiungere alla rete. Questo atteggiamento è assolutamente comprensibile, ma sbagliato. Naturalmente tutti gli specialisti tendono a considerare il loro campo "diverso dagli altri", ma nel campo della sicurezza c'è una caratteristica fondamentale a sostegno della sua diversità: che se non funziona non si vede.

Chi vuole "aggiungere sicurezza" alla propria rete si prepara a cercare il solito prodotto che, una volta correttamente configurato, gli risolva il problema. In questo atteggiamento è supportato anche da molti fornitori, particolarmente quelli non specializzati che si improvvisano le competenze in base ai prodotti che pensano di poter vendere ai loro clienti.

Una prima caratteristica dei prodotti di sicurezza e della loro configurazione è che ci sarà qualcuno che metodicamente e pervicacemente ne cercherà i difetti per metterli in difficoltà. Nella maggior parte degli altri servizi, se gli utenti per caso scoprono un difetto cercano di evitarlo, o almeno ne comunicano l'esistenza al gestore perché lo risolva. Questo è il motivo per cui tanti tentativi di affrontare la sicurezza con i concetti probabilistici della "safety" sono falliti: quello che conta non è la bassa probabilità con cui si può presentare un malfunzionamento, ma la facilità con cui può essere causato volontariamente.

La seconda caratteristica distintiva fondamentale dei prodotti di sicurezza è che anche se perfettamente configurati, non possono continuare a funzionare correttamente a lungo. Nuovi attacchi vengono scoperti continuamente, e alcuni possono rendere completamente insicura una configurazione o l'intera architettura dei meccanismi di protezione. Anche in questo caso, il malfunzionamento non si manifesterà se non al momento dell'attacco. Gli utenti si lamenteranno se non riescono a raggiungere un servizio necessario, ma non si accorgeranno se con qualche artifizio un altro servizio, che dovrebbe essere inaccessibile, è diventato raggiungibile.

E qui torniamo al motivo per cui perdo tanto tempo a descrivere i limiti, piuttosto che i pregi, dei prodotti di sicurezza. Quando un nuovo attacco è scoperto, supponendo ottimisticamente che venga subito pubblicato e non venga prima utilizzato per un certo tempo da qualche malintenzionato, diventa immediatamente strumento per nuovi attacchi. Alla pubblicazione di alcuni nuovi bachi in servizi importanti, si sono visti picchi altissimi di attacchi già nella notte successiva. Quale prodotto viene aggiornato con questa rapidità?

Il caso senz'altro peggiore sono i firewall. Spesso sono considerati la tecnologia di sicurezza più stabilizzata, ma secondo me nella pratica sono da considerare la più semplicistica (anche se indispensabile). Di fatto, i firewall vengono aggiornati sostanzialmente con l'uscita di una nuova versione. Solo in pochi casi vengono rilasciati dei patch, e soprattutto per correggere malfunzionamenti del firewall stesso, non per affrontare nuovi attacchi. Nel caso di attacchi data-driven, ovvero che utilizzano correttamente un protocollo ma sfruttano dei difetti nell'interpretazione dei dati, anche i firewall che affermano di fare content filtering fanno molto poco.

I sistemi di intrusion detection sono per ora molto simili agli antivirus: funzionano essenzialmente su pattern matching, e più ci si sposta da questo meccanismo verso principi euristici, più aumentano i falsi positivi, fino a che il prodotto non è più interessante per la maggior parte dei potenziali utenti. Anche in questo caso abbiamo il problema dell'aggiornamento. Realsecure, dalle ultime versioni, ha un meccanismo di aggiornamento simile a quello degli antivirus, che è però anche l'unico disponibile. Gli altri prodotti più utilizzati hanno maggiori possibilità di personalizzazione, il che è può essere un vantaggio ma richiede un intervento, spesso sul codice, per ogni nuovo attacco scoperto.

Ma non mi risulta che nessuno di questi strumenti possa proteggere un server da un attacco banale come quello descritto in questo advisory del 27 agosto. In pratica, viene creato un albero di directory tanto profondo che alla fine l'accesso alla directory più profonda genera un errore sfruttabile per accedere al server. La creazione della directory avviene attraverso una serie potenzialmente lunga di comandi assolutamente normali e legittimi. Quale degli strumenti di sicurezza attualmente utilizzati potrebbe riconoscere questo attacco? Sostanzialmente nessuno. Alcuni possono dire di essere in grado di riconoscere questo genere di attacchi, ma in pratica riconoscono il comportamento di alcuni programmi precompilati e ampiamente diffusi, e non l'attacco in sè.

A questo punto gli ascoltatori dei miei seminari vengono generalmente presi dallo sconforto: l'esperto di sicurezza che dovrebbe spiegare come proteggersi dagli attacchi sta dicendo che tutti questi bei prodotti non risolvono il problema.

Infatti i prodotti sono solo parte della soluzione: l'altra parte fondamentale è il personale preparato che abbia fra i suoi compiti fondamentali la gestione e l'aggiornamento degli strumenti e dei servizi di sicurezza, e che sia in grado di riconoscere, se non di affrontare, le situazioni che richiedono modifiche sostanziali o l'intervento di personale specializzato.

Quello che si vede invece è molto spesso semplicemente l'acquisto di un firewall che viene installato a volte senza neppure configurarlo, e che comunque da quel momento viene dimenticato se non quando è di ostacolo a qualche nuovo entusiasmante servizio che si vuole utilizzare. Installazioni anche ben progettate e realizzate vengono poi abbandonate per anni, secondo il principio, comune per gli altri servizi, che se non dà problemi è meglio non metterci le mani.