Passa ai contenuti principali

TCP e la mia sfera di cristallo

Alcuni ricercatori israeliani hanno pubblicato da poco un articolo scientifico su una rivista molto prestigiosa in cui dimostrano la fattibilità di una cosa molto interessante. Ne parlo qui come ulteriore esempio del fatto che la mia sfera di cristallo personale funziona davvero. E' necessaria una introduzione.

Un client ha aperto una connessione TCP con un server. E' possibile che un attaccante riesca ad iniettare dati in quella connessione ?

Il server riceverebbe dalla connessione dati generati dall'attaccante, invece che dal client; allo stesso modo, il client riceverebbe dati generati dall'attaccante invece che dal server.

La gravità potenziale di attacchi del genere è evidente.

In Reti di Calcolatori II analizziamo (anche) questa tipologia di problemi. L'analisi è molto istruttiva, non solo per il risultato (un attaccante che si trova in mezzo tra il client ed il server può fare di tutto, compresi questi attacchi) ma soprattutto come "esempio storico":
  • 1985: La gente inizia a rendersi conto che anche un attaccante che non si trova in mezzo tra il client ed il server può iniettare dati in una connessione esistente---faccenda evidentemente terribile.
  • Gli attacchi cominciano a verificarsi davvero.
  • 1995: Tutte le implementazioni di TCP vengono modificate in modo da rendere impossibili tali attacchi. Tralasciando i dettagli, il valore iniziale di un certo contatore viene scelto in modo pseudo-random. Il numero di tentativi che deve fare un attaccante per iniettare dati diventa talmente elevato da rendere l'attacco impraticabile. Tutti contenti. Tutti.
  • 2001: Dopo ben 6 anni, qualcuno si rende conto che l'analisi statistica effettuata era sbagliata: il numero di tentativi da fare è mooooolto minore di quello che si pensava ed è sufficientemente piccolo da essere praticabile. Viene introdotta una nuova modifica. Tutti contenti. Tutti.
  • 2004: Dopo altri 3 anni si scopre che la nuova modifica soffre essenzialmente dello stesso problema di quella precedente. Ancora una nuova modifica. Tutti nuovamente contenti.
Per ben due volte, un problema estremamente pressante per mezzo mondo è stato studiato dalle aziende ed organizzazioni più all'avanguardia; tutti convinti di averlo risolto; tutti si erano sbagliati; sono stati necessari anni per rendersene conto (inutile dire che durante questi anni nessuno sa cosa gli attaccanti siano riusciti a fare in segreto, ma questa è un'altra faccenda).

Esempio istruttivo di uno degli aspetti fondamentali della sicurezza informatica: oggi tutto il mondo ritiene che una certa azione non è fattibile; domani qualcuno dimostra che tutti (tutti) si erano sbagliati. E' già successo molte volte, per molti protocolli.

Dal 2004 si ritiene che se un attaccante non si trova in mezzo al client al server, "data injection may be possible. However, this has not been demonstrated and it appears to be problematic". Nelle mie slide scrivo dopo questa frase:



Bene, cosa è stato dimostrato proprio pochissimi giorni fa ? "We present attacks that allow an off-path adversary to learn the client port and sequence numbers, and thereby to inject traffic into the TCP connection". Pertanto, ancora una volta si erano sbagliati tutti.

Loro sono andati addirittura oltre. Come discutiamo a Reti II, iniettare dati è solo parte del problema. E' necessario anche che i dati corrispondano a ciò che il livello applicativo si aspetta di ricevere (se un server POP si aspetta di ricevere un comando USER e riceve invece un comando PASS iniettato in modo fraudolento dall'attaccante, allora il server non accetta il comando fraudolento; per un attaccante che non si trova in mezzo e non riesce a vedere il traffico, risolvere questo problema di sincronizzazione è enormemente difficile). Bene, loro sono riusciti anche a falsificare le risposte del server e, quindi, a fornire al browser dati scelti da loro: "we show how to...inject spoofed objects such as scripts and web pages to a connection with a victim web site".

Traduzione: il browser si collega con un server; il browser riceve la pagina fornita dal server, alla quale l'attaccante ha aggiunto script ed elementi scelti da lui. Inutile sottolineare le implicazioni.

La mia sfera di cristallo funziona molto bene.

Commenti

Popular Posts

"Ingegneria deve essere difficile"

Il ritaglio di giornale qui sotto ricorda uno degli eventi più non-trovo-un-aggettivo-appropriato del mio periodo di studente di Ingegneria a Pisa. Ricordo che una mattina iniziò a spargersi la voce "hanno murato la porta del dipartimento!".  Andammo subito a vedere ed arrivammo un pò prima dei giornalisti che scattarono questa foto. La porta era murata, intonacata, pitturata di bianco e sovrastata da una scritta "INGEGNERIA DEVE ESSERE DIFFICILE". Le "E" di "INGEGNERIA" erano scritte al contrario perché era una sorta di "marchio di fabbrica" della facoltà di Ingegneria di Pisa. L'aula più grande, quella in cui pressoché tutti gli studenti seguivano i corsi dei primi anni, aveva infatti alcuni bellissimi "affreschi scherzosi" che furono fatti nel corso delle proteste studentesche di qualche anno prima ed in cui la parola "Ingegneria" era appuntoi scritta in quel modo. Si era anche già sparsa la voce di cosa era

Il patch che non era un patch

Quanto segue è un patetico quanto inutile tentativo di distrarmi e non pensare alla pessima prestazione calcistica di ieri sera, decisamente non all'altezza dell'evento e dei nostri gloriosi colori. Nella lezione di "Computer Networks and Principles of Cybersecurity" di ieri, mi è stata posta la domanda " E' possibile che un patch introduca nuove vulnerabilità? ". La mia risposta è stata affermativa, ho evidenziato che un patch è un software, quindi può introdurre errori, vulnerabilità, può fare riemergere errori o vulnerabilità presenti e risolti in versioni precedenti, può correggere la specifica vulnerabilità presumibilmente risolta da quel patch solo in parte. Non è frequente, ma può accadere ed è quindi una possibilità da tenere presente. Uno dei numerosi motivi che rendono così complessa la gestione delle vulnerabilità è anche questo. Stamattina ho letto un esempio molto interessante di quanto abbiamo detto. Pochissime settimane fa Microsoft ha ril

Perché studiare Analisi Matematica???

Un mio caro amico mi ha scritto: ...sono con mia figlia che studia Analisi 1...A cosa serve, al giorno d'oggi, studiare Analisi (a parte sfoltire i ranghi degli aspiranti ingegneri)? Riporto la mia risposta di seguito, forse può "motivare" qualche altro studente. ... Per un ingegnere la matematica è fondamentale perché è un linguaggio ; ed è il linguaggio essenziale per trattare gli argomenti che dovrà affrontare come ingegnere; non sono importanti i contenuti specifici; è importante, anzi fondamentale, che riesca a capirli, ricostruirli etc. ad esempio, chi deve usare l'inglese, lo usa perché in un modo o nell'altro lo conosce; nessuno di noi ha usato esattamente le frasi o i dialoghi o le regole che ha incontrato negli esercizi di inglese o di tedesco; nella matematica è lo stesso; non sono importanti i limiti, le serie, i teoremi di cauchy o che so io; ma se uno non è in grado di capire quel linguaggio allora non sarà in grado di capire davvero quas

40 anni di Internet: Cosa non ha funzionato e perché

Leggo molti documenti tecnico-scientifici per lavoro e, in parte, per "piacere". Molti sono interessanti, alcuni molto interessanti. E' raro che trovi un documento che mi appare illuminante. Questo indicato sotto è uno dei pochi documenti in questa categoria. Sembra banale, in quanto è molto discorsivo e parla di molte cose note: IP, DNS, NAT.... In realtà è profondissimo. Una miniera di riflessioni profonde, sintetiche, focalizzate ed, appunto, illuminanti. A mio parere imperdibile per chiunque abbia un qualche interesse negli aspetti tecnici di Internet. Chi non ha la pazienza di leggerlo per intero, legga almeno gli ultimi due paragrafi. Failed Expectations (l'autore, Geoff Houston , fa parte della Internet Hall of Fame )

ChatGPT: supererebbe il mio esame di Reti di Calcolatori?

Molto probabilmente chi ha a che fare con i corsi di laurea scientifici e tecnologici, come me, ha preso atto della notizia che ChatGPT ha superato esami universitari in giurisprudenza ed economia con un pò, diciamo così, di sufficienza. Pensando "da noi non potrebbe mai succedere; figuriamoci". E' quello che ho pensato io. Poi però ho fatto a ChatGPT qualche domanda di Reti di Calcolatori. Ho quasi cambiato idea. "Quasi" perché nello scritto di Reti di Calcolatori faccio sempre esercizi. Pur non avendoli sottoposti a ChatGPT sono certo che questi esercizi non li sa risolvere. Ma alle "domande tipiche da orale" ha fornito risposte che mi hanno davvero stupefatto. Riporto qui sotto solo un esempio di "dialogo", relativo a validazione di firma digitale e certificati auto-firmati. Risposte sostanzialmente corrette e pertinenti, molto più sintetiche e focalizzate di quelle che ricevo normalmente. E più rapide. Alla fine ha riconosciuto di esser