Sempre a proposito di problemi con il voto elettronico

Mi viene in mente un documentario che ho visto un po’ di tempo fa. Uno di quei documentari stile Discovery Channel, sulla costruzione di un casinò a Las Vegas che doveva rappresentare Venezia, con tanto di canali e gondole. Stavano costruendo il piano interrato, sopra al quale secondo il progetto sarebbero poi passati i canali con l’acqua. Il commentatore dice (più o meno): “il seminterrato è quasi pronto, ma i progettisti devono ancora risolvere un problema: sopra questo solaio dovranno essere versate parecchie tonnellate d’acqua: la struttura è stata progettata per sopportare il carico, ma l’acqua eserciterebbe una forte pressione che potrebbe causare delle infiltrazioni. Alla fine trovano una soluzione, appena in tempo: faranno così e così…”. Quando l’ho visto, ho pensato: non è possibile che arrivino a questo punto senza aver già deciso come risolvere un problema così ovvio, e poi come possono avergli approvato il progetto? Lì per lì ho pensato che fosse un trucco del documentario per aggiungere un po’ di suspance a una cosa noiosa come la costruzione di un seminterrato.

Il documentario mi è tornato in mente ripensando a questo articolo sui problemi di voto in Ohio. L’articolo dice (tanto per cambiare) che ci sono stati grossi problemi, e che non si sa se si potranno risolvere in tempo per le prossime elezioni: “The findings have ominous national implications. Cuyahoga County could play an important role in deciding two races in next week’s election that will help decide which party controls the Senate and House. But one of the reports concluded that problems in the county were so extensive that meaningful improvements likely could not be achieved before that election, or even before the 2008 presidential election.” Solo che qui non c’è la suspance del documentario: negli Stati Uniti stanno già usando quasi ovunque il voto elettronico, introdotto di corsa al costo di centinaia di milioni di dollari per “risolvere i problemi’ delle elezioni del 2000, salvo poi accorgersi in corso d’opera che forse il sistema non è così semplice da far funzionare e che forse buona parte di quei soldi sono buttati. Meno male che la sicurezza deve essere affrontata dall’inizio in fase di progettazione: qui l’impressione è che abbiano abbozzato la definizione dei requisiti, abbiano completamente satlato la progettazione e siano passati direttamente all’appalto. In confronto alla gestione del voto elettronico, i progettisti del casinò a Los Angeles si erano mossi con i piedi di piombo: almeno avevano prima progettato la struttura perché reggesse il carico.

Posted in Sicurezza | 1 Comment

Rapporto Net & System Security 2007

Atsystem ha mandato al CLUSIT il rapporto conclusivo sul convegno N&SS di quest’anno. Che fosse stato un successo (annunciato) lo sapevo, ma i numeri sono comunque impressionanti. Ci sono stati 750 partecipanti effettivi, dei quali circa 300 studenti. I numeri confermano la sensazione che da un po’ di anni dà questo convegno: pur essendo comunque principalmente rivolto agli studenti, il livello tecnico degli interventi, nè commerciale nè troppo accademico, fa sì che molti professionisti siano interessati a partecipare. Il successo è ancora più notevole dato che si svolge a Pisa, una città decisamente periferica, anche se l’aeroporto collega sempre più città con voli low cost; in effetti, ci sono stati moltissimi partecipanti provenienti da altre regioni. Insomma, un successo.

Posted in ict, Sicurezza | Comments Off on Rapporto Net & System Security 2007

Passing-the-hash demo

Ho trovato questo post che descrive un problema nell’autenticazione a dominio di Windows. È utile leggere non solo il post, che tutto sommato dice relativamente poco, ma anche i commenti, che aiutano a chiarire molto. Anche quest’altro post aiuta a capire il problema, e se serve anche queste slide. La cosa interessante è che si parla anche di un attacco di pass-the-ticket per Kerberos. Purtroppo non ho trovato dettagli al riguardo (se qualcuno ne ha, mi interessano). Da notare che ancora una volta Vista mantiene i problemi dei sistemi precedenti; il fatto di scrivere meglio il codice non aiuta se il problema è nella funzionalità o nella compatibilità all’indietro. Ne vorrei approfittare per fare qualche ragionamento sul meccanismo dell'”agente” che conserva delle credenziali per l’utente e le utilizza per le autenticazioni successive, alla base di molti strumenti (es. di Single Sign On) e a prescindere da Windows.

Il concetto dell’agente è in qualche modo parte di qualsiasi meccanismo che permetta di autenticarsi una volta e poi accedere ad altri servizi (o più volte allo stesso) senza che venga richiesta all’utente una nuova autenticazione. La cosa si può presentare in diversi modi. Un sistema è memorizzare direttamente le credenziali, temporaneamente o permanentemente. Il “remember this password” di qualche browser rientra in questa logica, e ne è l’implementazione peggiore. Altre volte vengono memorizzati dei dati utilizzati temporaneamente per un certo tempo, come i cookie utilizzati come autenticazione. Non è un concetto nuovo: il Ticket Granting Ticket di Kerberos rientra nella categoria. In altri casi il concetto di agente è più esplicito, come quello di ssh (che memorizza direttamente la chiave privata, non un’informazione derivata). La prima conseguenza ovvia è che chi è amministratore sul sistema su cui è in esecuzione l’agente è in grado di accedere alle credenziali memorizzate. Se l’informazione memorizzata sono le credenziali dell’utente, queste sono compromesse. Se l’informazione memorizzata è un dato derivato, la compromissione sarà limitata a quanto è accessibile con quell’informazione (come servizi e come tempo). Quanto poi sia limitato dipende dal caso specifico.Compromettere l’ssh agent ha un effetto più “generale” che compromettere le credenziali di autenticazione (es. coockie) utilizzate per un solo servizio e una sola sessione, proprio perché conserva la chiave privata. Per l’attaccante, è generalmente più semplice accedere alle informazioni memorizzate in un file su disco che a quelle memorizzate temporaneamente nella memoria di un agente, ma memorizzarle nell’agente è comunque un palliativo che offre poche protezioni in più. Del resto, se l’attaccante ha privilegi di amministratore e controlla il sistema da cui opera l’utente di cui vuole ottenere le credenziali, i sistemi per ottenerle non gli mancano. Tuttavia, c’è un punto che è necessario evidenziare: le credenziali dovrebbero essere memorizzate solo sui sistemi dai quali l’utente si deve autenticare, non su quelli ai quali si autentica. Ad esempio, se io amministro dei sistemi dalla mia postazione mediante ssh/scp e compagnia, l’agente avrà bisogno di essere attivo solo sulla mia macchina: nel momento in cui io accedo ad un altro sistema non ho necessità, in generale, di portarci le mie credenziali di amministratore e di esporle; quindi, non ci dovrebbe essere nessun automatismo che propaga automaticamente le mie credenziali di amministratore (o di utente, anche se il caso dell’amministratore è più critico) sulle macchine alle quali accedo. Vale la pena di sottolineare che nè ssh nè Kerberos richiedono che la macchina sulla quale mi autentico abbia delle informazioni critiche sulle mie credenziali per effettuare l’autenticazione: ssh usa un meccanismo a chiave pubblica (quindi io ho la chiave privata, e la macchina alla quale accedo ha solo quella pubblica) e Kerberos usa i ticket. Cosa succede però se io dalla macchina che sto amministrando ho bisogno di accedere a delle risorse? Ecco, a questo punto mi servono delle credenziali. La cosa interessante però è che in moltissimi casi non servono assolutamente le credenziali di amministratore. Ad esempio, se devo installare degli aggiornamenti, la risorsa in rete dalla quale li prendo può essere pubblica o comunque accessibile con un utente non amministratore, seppure magari dedicato. Fin qui, tutto fattibile con gli strumenti esistenti. Potrei al limite propagare automaticamente solo queste credenziali non privilegiate quando mi connetto ad una macchina. Tuttavia, ci possono essere delle attività (non frequenti) per le quali io mi posso dover presentare a risorse o servizi esterni come amministratore della macchina, o comunque devo utilizzare delle credenziali privilegiate la cui compromissione causerebbe danni considerevoli. In questi casi la soluzione corretta non sarebbe certo quella di esporre le credenziali su un sistema del quale non si può garantire la sicurezza. Una soluzione corretta (ce ne possono essere altre) sarebbe ad esempio mediare le richieste attraverso il sistema dal quale l’amministratore opera direttamente (il suo PC), cosa che darebbe anche la possibilità di autorizzare singolarmente le attività. Questo concetto (un “proxy” che riceve una richiesta e la prosegue aggiungendo le proprie credenziali) non è certo un concetto nuovo, ma se il protocollo e il servizio non lo prevedono c’è poco che il sistemista ci possa fare. Anche la logica dei ticket di Kerberos offre delle protezioni, ad esempio i “proxyabletickets”; cito dall’RFC 4120: “At times it may be necessary for a principal to allow a service to perform an operation on its behalf. The service must be able to take on the identity of the client, but only for a particular purpose. A principal can allow a service to do this by granting it a proxy.”

Posted in ict, Sicurezza | Comments Off on Passing-the-hash demo