Mihai Budiu -- mihaib+@cs.cmu.edu
http://www.cs.cmu.edu/~mihaib/
august 2001
Pe 2 noiembrie 1988 unele din calculatoarele cuplate la reţeaua numită Internet, care lega o parte dintre marile universităţi şi centre de cercetare americane, au început să exhibe simptome ciudate. Calculatoarele executau tot felul de programe, compilau surse şi comunicau cu alte calculatoare din reţea, fără ca cineva să fi iniţiat aceste activităţi. Prima alarmă a fost pornită la universitatea Stanford, la ora 9 seara (ora coastei de est a Statelor Unite), care afirma că majoritatea maşinilor Unix din campus (în număr de vreo 2500) erau infectate de un virus care pornise de la MIT. La ora 10 seara programatorii de la MIT au descoperit şi ei o activitate suspicioasă şi au încercat să reboot-eze calculatoarele, crezînd că e vorba de un program care a luat-o razna. Cînd au observat însă că, nu mult timp după repornire, calculatoarele re-începeau acelaşi lanţ de activităţi bizare, au realizat că ceva mai serios se află la mijloc.
În curînd mesaje de e-mail schimbate cu colegi de la alte universităţi le-au revelat că atacul era universal: calculatoare din toată America sufereau de aceleaşi simptome. Au urmat apoi două nopţi albe şi muncă în foc continuu în care hacker-ii încercau să înţeleagă în ce fel funcţionează noul virus care le ataca calculatoarele. La fel ca şi cei biologici, viruşii de obicei călătoresc în spinarea altor programe, care forţează celulele organismului gazdă să-i multiplice. Programul cel nou era însă autonom; ca atare a fost botezat ``vierme'': era un organism de sine-stătător, capabil să se multiplice şi să atace de la sine alte calculatoare.
Cercetătorii au atacat viermele prin mai multe metode:
Viermele acesta era deosebit de virulent şi complicat, atacînd staţii de lucru Sun şi VAX care rulau sistemul de operare Unix de la Berkeley. Viermele folosea mai multe metode de propagare, exploatînd mai multe slăbiciuni în configurarea calculatoarelor şi implementarea programelor:
Viermele nu efectua acţiuni distructive, cum ar fi ştergerea de fişiere sau instalarea de conturi ascunse: singurul efect negativ provenea din faptul că maşinile erau infectate în mod repetat, şi repede nu făceau altceva decît să execute copii ale viermelui.
Cercetări ulterioare au relevat faptul că viermele fusese creat şi lansat de un student la doctorat al universităţii Cornell, pe nume Robert Tappan Morris. În mod oarecum ironic, Morris este fiul unui alt Robert Morris, care era pe vremea aceea cercetător la National Security Agency, o organizaţie guvernamentală americană însărcinată cu criptologia.
Robert Morris a fost condamnat la trei ani de închisoare cu suspendare pentru fapta sa, 10000 de dolari amendă şi 400 de ore de muncă în serviciul comunităţii. După terminarea sentinţei Robert Morris a terminat doctoratul la universitatea Harvard şi începînd din 1999 este profesor la universitatea MIT, lucrînd în domeniul reţelelor de calculatoare. Să nu faceţi cumva greşeala să credeţi că Morris a avut aceste succese ulterioare datorită păţaniei cu viermele: el a reuşit să-şi ``repare'' cariera în pofida istoriei cu viermele, pentru că este un ins foarte capabil şi inteligent. În prezent refuză să vorbească despre vierme sau să facă cercetare în securitatea calculatoarelor.
O mulţime de rapoarte au descris aceste evenimente în detaliu şi au discutat problema securităţii în Internet imediat după aceste evenimente. Cu toate acestea, nimic nu s-a schimbat...
Pe data de 18 iunie 2001 compania Eeye Digital Systems a publicat descoperirea unei probleme de securitate în serverul de web al companiei Microsoft, numit IIS. Bug-ul este de exact aceeaşi natură ca şi în urmă cu 13 ani: buffer overflow. Microsoft a emis o corecţie pentru această problemă la scurt timp după aceea.
Cu toate acestea, la ora actuală se estimează că există aproximativ două milioane de calculatoare care rulează acest program, care vine instalat automat cu Windows NT şi Windows 2000. Multe persoane probabil că execută acest program fără a şti măcar.
Pe data de 12 iulie a fost semnalată pentru prima oară prezenţa unui vierme care exploata această slăbiciune. Această prima variantă a viermelui a fost denumită CodeRed versiunea 1; numele provine de la sucul ``Code Red'' care conţine un procent ridicat de cafeină, şi care i-a ţinut treji pe cercetătorii care atacau viermele cu aceleaşi arme ca în urmă cu 13 ani.
Viermele funcţionează în două etape:
Versiunea 1 a viermelui s-a răspîndit foarte lent, din cauză că un vierme nou infectat folosea aceleaşi adrese generate aleator (pornea de la aceeaşi ``sămînţă'' (seed) în generarea numerelor aleatoare), şi ca atare încerca să infecteze mereu şi mereu aceleaşi calculatoare.
Pe data de 19 iulie, în jurul orei 10 dimineaţă a apărut o variantă mutant a viermelui, care folosea o sămînţă generată aleator. Această mică schimbare a avut un impact colosal: pînă la sfîrşitul zilei acesteia viermele a infectat peste 400000 (patru sute de mii) de maşini! Probabil că ar fi infectat şi mai multe dacă nu ar fi intrat în faza a doua, care începea pe data de 20 a lunii.
Din fericire viermele verifică existenţa adresei atacate; pentru a preveni diluviul, administratorii de la Casa Albă au dezafectat serverul care era ţinta atacului distribuit. Dacă 400000 de calculatoare din toată lumea lansează un atac simultan în Internet, aceasta poate avea efecte dramatice asupra traficului.
Între timp mass-media a făcut o publicitate enormă virusului; astfel mulţi administratori de sistem au aflat de existentă lui şi au aplicat corecţiile de la Microsoft. Cu toate acesta, există în continuare un mare număr de calculatoare vulnerabile.
Pe 4 august a apărut un nou vierme, complet diferit, dar care conţine textul ``CodeRed2''. Acest vierme exploatează aceeaşi slăbiciune, dar odată instalat face ravagii pe calculatorul infectat, instalînd conturi ascunse pentru administratori care pot fi apoi folosite de la distanţă. În plus, acest vierme are un algoritm special prin care adesea selectează şi atacă în mod special calculatoarele din aceeaşi reţea cu victima.
La ora la care scriu acest articol (pe 27 august) a fost anunţată o a treia mutaţie a viermelui. Ţinînd cont de numărul uriaş de victime şi de probabilitatea practic nulă ca toate să fie peticite, e foarte probabil că acest vierme va continua să existe în Internet încă foarte multă vreme.
Figura 1 arată numărul de calculatoare infectate ca funcţie de timp. Axa orizontală este ora iar axa verticală indică numărul estimat de calculatoare infectate. Am descris metoda prin care se poate estima numărul de calculatoare infectate în articolul meu din NET Report din luna iulie. Acest număr se poate estima numărînd atacurile care vin într-o anumită porţiune din reţea de la serverele infectate (această tehnică a fost numită în articolul meu anterior ``împrăştiere''; fenomenul în acest caz este puţin diferit, dar mijloacele folosite pentru estimare sunt aceleaşi).
![]() |
Curba din figura 1 are o formă numită ``sigmoidă'', avînd două zone distincte:
Chiar dacă viermele nu este pre-programat să se oprească, trebuie să ne aşteptăm ca viteza de infecţie să urmărească o astfel de curbă. De fapt, similitudinea cu un organism biologic este din nou frapantă: zoologii care studiază evoluţia unei populaţii animale au descoperit această lege de înmulţire cu mult timp în urmă, şi i-au dat şi un nume, ``legea logistică''.
Legea logistică poate fi descrisă printr-o formulă aparent
complicată, dar care la o analiză atentă este foarte naturală:
Valorile din această formulă sunt:
Putem recunoaşte în legea logistică cele două părţi ale sigmoidei:
Ceea ce este înspăimîntător este viteza cu care infecţia s-a propagat: în doar 24 de ore infecţia a acoperit aproape jumătate de milion de calculatoare!
Viermele CodeRed s-a bucurat de o publicitate enormă în presă: aproape că nu există ziar sau canal de televiziune care să nu fi menţionat viermele. Ca atare informaţia despre atac s-a propagat destul de bine şi a atins multă lume prin multe canale. Ne aşteptăm deci ca foarte mulţi dintre administratorii de sistem să fi luat măsuri aplicînd ``peticele'' de la Microsoft care corectează problemele din IIS.
CAIDA monitorizează şi numărul de calculatoare peticite, folosind o eşantionare statistică: dintre calculatoarele infectate iniţial, CAIDA alege la întîmplare cîteva şi trimite nişte cereri prin care poate afla dacă peticele au fost aplicate. Multe din calculatoarele infectate iniţial nu răspund la aceste pachete de test, probabil pentru că unele dintre ele nu au adrese IP fixe. Dintre calculatoarele testate însă, graficul din figura 2 arată cîte au fost peticite.
![]() |
Din acest text putem extrage două concluzii îngrijorătoare:
Fiţi cu ochii pe reţea, cît timp mai există!