cat morris-worm.md

N°022SicurezzaC

while (1) fork()

Il Morris Worm e la notte in cui Internet si ammalò

Il 2 novembre 1988 Robert Tappan Morris, uno studente, lanciò un programma destinato a misurare le dimensioni di Internet. Un errore di progetto lo trasformò in un'epidemia che paralizzò migliaia di macchine. Questo pezzo racconta il primo worm della storia: come funzionava, perché sfuggì di mano e cosa insegnò a una rete ancora ingenua.

Anno
1988
Era
1980-1989
Linguaggio
C
Reperto
~99 righe

Una rete piccola e fiduciosa

Per capire il Morris Worm bisogna immaginare l'Internet del 1988, un luogo profondamente diverso da quello di oggi. Era una rete piccola, fatta di poche decine di migliaia di computer, che collegava soprattutto università, centri di ricerca e installazioni militari. Soprattutto, era una rete costruita sulla fiducia. Le persone collegate si conoscevano o appartenevano alla stessa comunità accademica; la sicurezza non era una priorità, perché non si immaginava che qualcuno potesse voler fare del male. Molte porte erano, metaforicamente, lasciate aperte.

In questo ambiente, Robert Tappan Morris, uno studente di informatica alla Cornell University, concepì un esperimento che sulla carta era persino elegante. Voleva scrivere un programma capace di diffondersi da solo da un computer all'altro, in modo silenzioso, con uno scopo apparentemente innocuo: misurare quanto fosse grande Internet, contando le macchine che riusciva a raggiungere. Un censimento automatico della rete.

Per propagarsi, il programma sfruttava alcune debolezze note nei sistemi Unix dell'epoca: difetti in programmi di posta e di rete, e password deboli indovinabili per tentativi. Non erano tecniche particolarmente sofisticate, ma erano sufficienti, proprio perché nessuno si aspettava che qualcuno le usasse per scavalcare in massa le difese di migliaia di macchine.

L'errore che trasformò il test in epidemia

Morris aveva previsto un problema ovvio: cosa succede se il worm tenta di infettare una macchina già infetta? La risposta sensata sarebbe controllare, e in tal caso non reinstallarsi, per restare leggero e invisibile. Ma Morris temeva anche l'astuzia opposta: che gli amministratori potessero difendersi creando un finto segnale di già infetto per tenere lontano il worm. Per contrastare questa eventualità, prese una decisione fatale.

Decise che, anche quando trovava una macchina già infetta, il worm si sarebbe reinstallato comunque una volta ogni tanto, con una certa probabilità casuale. Sembrava una piccola precauzione. Fu invece l'errore che fece esplodere tutto. Su una rete densa, le macchine venivano contattate in continuazione da copie del worm, e quella probabilità di reinfezione faceva sì che ogni computer finisse per ospitare non una, ma decine e decine di copie attive dello stesso programma, tutte in esecuzione insieme.

Ogni copia consumava memoria e tempo di calcolo. Moltiplicate per decine, le macchine infette rallentavano fino a diventare inutilizzabili, soffocate dal proprio carico, in una sorta di blocco da sovraccarico. Quello che doveva essere un censimento invisibile si era trasformato, per un errore di progetto, in un'arma di paralisi: un attacco involontario che metteva in ginocchio i computer per pura saturazione.

La prima emergenza di Internet

La notte del 2 novembre 1988 il worm si diffuse a una velocità che colse tutti di sorpresa. Nel giro di poche ore infettò una porzione enorme della rete di allora: le stime parlano di circa seimila computer, una frazione che alcuni collocano intorno al dieci per cento dell'intera Internet dell'epoca. Amministratori di sistema in tutto il paese si svegliarono trovando le loro macchine ingovernabili, senza capire cosa stesse succedendo. Era la prima volta nella storia.

Si scatenò una corsa contro il tempo. Esperti di diverse università, tagliati fuori l'uno dall'altro perché la rete stessa che usavano per comunicare era compromessa, lavorarono freneticamente per analizzare il worm, capirne il funzionamento e trovare il modo di fermarlo e immunizzare i sistemi. Quella crisi portò a una conseguenza istituzionale duratura: la creazione del primo CERT, il Computer Emergency Response Team, un centro di coordinamento per rispondere agli incidenti di sicurezza informatica. La rete imparava, nel modo più duro, che le serviva un sistema immunitario.

Per Morris le conseguenze furono pesanti e storiche. Identificato come autore, fu processato e divenne la prima persona condannata in base al Computer Fraud and Abuse Act statunitense del 1986. Il suo caso segnò l'ingresso del crimine informatico nel diritto: da quel momento, scrivere codice che si diffonde e danneggia altri sistemi non era più una bravata accademica, ma un reato.

Perché custodirlo

Il Morris Worm merita una teca perché segna una perdita dell'innocenza. Prima del 2 novembre 1988, Internet era una comunità fiduciosa che non aveva mai sperimentato un'epidemia digitale. Dopo, nulla fu più come prima: la rete scoprì la propria vulnerabilità, e la sicurezza informatica nacque come disciplina necessaria, non più come ripensamento. È il momento in cui il sogno di una rete aperta e fiduciosa incontrò, per la prima volta, le sue conseguenze.

C'è poi una lezione tecnica che risuona ancora. Il disastro non nacque da malvagità — Morris non voleva distruggere nulla — ma da un piccolo errore di valutazione sulle conseguenze di un comportamento automatico ripetuto su larga scala. Quella probabilità di reinfezione, innocua in teoria, divenne catastrofica nell'interazione di migliaia di copie. È un monito perenne per chi scrive sistemi distribuiti: i comportamenti che sembrano innocui a livello locale possono produrre catastrofi globali quando si moltiplicano.

Custodire `while (1) fork()` significa ricordare che il software che si propaga da solo è una forza potente e infida, e che la distanza tra un esperimento curioso e un'arma può essere una singola riga di codice mal pensata. La storia di Morris non è quella di un criminale geniale, ma di uno studente brillante e incauto: ed è proprio questo a renderla istruttiva per chiunque programmi.

Punti chiave

  • Il 2 novembre 1988 lo studente Robert Tappan Morris lanciò il primo worm della storia di Internet.
  • Il programma doveva misurare le dimensioni della rete propagandosi da solo, sfruttando falle Unix e password deboli.
  • Un errore fatale — reinfettare le macchine già infette con una certa probabilità — generò decine di copie per host, paralizzandoli.
  • Infettò circa 6000 computer, forse il 10% dell'Internet di allora, in poche ore.
  • Portò alla nascita del primo CERT e alla prima condanna sotto il Computer Fraud and Abuse Act.
  • Insegna che comportamenti automatici innocui in locale possono diventare catastrofici su larga scala.

Fonti