Il segreto di Pulcinella


Come previsto, il segreto (che segreto non era da un pezzo) ora e’ totalmente di pubblico dominio.

Una breve ricerca con Google individua gia’ decine di siti (Slashdot compreso) che parlano del non-segreto. Ad esempio, qui.

In pratica, Halvar Flake ha formulato un ipotesi e un ricercatore di Matasano Security ha gentilmente confermato. Tranquilli, ora chiede scusa. In pratica, il super-segreto che era mezzo segreto perche’ molti lo conoscevano, anzi un quarto perche’ chi non lo conosceva dice che uno bravo lo avrebbe capito, anzi un ottavo perche’ quello bravo dice che era troppo facile per lui, non e’ piu’ segreto.

Qui la descrizione dettagliata, di seguito una spiegazione “fatta in casa” per cercare di dare forma ai tecnicismi.

***
Supponiamo che io sono un cattivo e voglio far si’ che tutti gli utenti di un ISP (esempio, Telecom Italia) che visitano il sito di Repubblica.it vengano indirizzati al mio sito (fasullo) di Repubblica. Quello che devo fare e’ incredibilmente semplice:

  1. Interrogo il nameserver di Telecom Italia con “AAAAAA.REPUBBLICA.IT” (suponiamo si chiami NS-TI)
  2. Il sito non e’ nella cache di NS-TI e questo gira la richiesta al nameserver di Repubblica.it (es, VENERE.INET.IT)
  3. VENERE.INET.IT dovrebbe rispondere qualcosa del tipo “sito inesistente” e la risposta sarebbe memorizzata da NS-TI
  4. Fra domanda e risposta c’e’ un breve intervallo di tempo in cui io, cattivo, posso creare una risposta fasulla da spedire a NS-TI
  5. Non c’e’ modo, per NS-TI, di sapere chi ha generato una data risposta, o meglio, un modo c’e’: ogni query contiene un ID generato casualmente che deve essere riprodotto nella risposta
  6. Io, cattivo, non conosco questo ID e posso solo indovinarlo. Le probabilita’ sono molto basse, ma se lo indovino ho convinto NS-TI che la mia risposta fasulla e’ invece quella vera. Quante probabilita’ ho di indovinare? 1/65536 (circa), se gli ID vengono generati casualmente. Molto bassa, ma posso ripetere lo stesso giochino con AAAAAB.REPUBBLICA.IT e cosi’ via finche’ non “c’azzecco”

Supponiamo che, ad un certo punto, riesca a convincere NS-TI che FFFFFF.REPUBBLICA.IT sia io. A che mi serve? Nessuno digitera’ un indirizzo cosi’ stupido. Vero, ma si da il caso che ci sia una piccola regolina nel funzionamento del DNS che mi dice che, insieme alla risposta di FFFFFF.REPUBBLICA.IT, io possa mandare un update per VENERE.INET.IT.

Cosa vuol dire? Che da questo momento in poi, qualunque utente del service provider Telecom Italia che digiti WWW.REPUBBLICA.IT sul suo browser verra’ rediretto al mio sito. Ora immaginate che questo giochino venga fatto con il sito di una banca online.

***

SOLUZIONE
Senza entrare nei dettagli, Dan Kaminski propone di applicare un “source port randomisation”, che vuol dire che io, cattivo, non solo devo indovinare l’ID contenuto nel messaggio ma anche la porta UDP dal quale il messaggio e’ partito.

La comunita’ internet e’ d’accordo che questa e’ una mezza soluzione, perche’ se diminuisce le probabilita’ dell’attacco non lo elimina del tutto:

  • Ho letto da qualche parte che alcuni cache resolver non usano tutte le porte possibili (65535) ma solo un sotto-insieme, rendendo la soluzione meno efficace
  • In altri casi, le porte cambiano in maniera sequenziale (cioe’, se prima ho usato 1025, ora uso 1026 e cosi’ via)

Ma il vero problema e’ che se prima un hacker ci impiegava 10 secondi adesso ci impiega, nel peggiore dei casi, 10*65535 secondi, circa 8 giorni. Cio’ che fa la differenza e’ la mole di traffico che l’attacco genererebbe, che difficilmente non verrebbe notato dai firewall degli ISP.

Se l’attacco, pero’, venisse distribuito in maniera intelligente fra vari ISP e diluito in un periodo di tempo piu’ lungo (ad esempio, qualche mese) potrebbe non essere facilmente rilevabile. Se i tempi vi sembrano lunghi, pensate che, con un simile attacco, avreste la certezza che da qui alla fine dell’anno il sito della vostra banca preferita sara’ hackerato. Speriamo solo “non con il mio ISP.

L’unica soluzione, come ho parlato da qualche parte, e’ DNSSEC, ma ha ancora troppe resistenze di tipo politico.

PS: in ogni caso, ho la vaga sensazione che manchi ancora un tassello… forse, pero’, questa volta mi sbaglio.

Advertisements

Comments are closed.