Blog
Educație7 august 202610 min de citit

Omul care a reparat internetul în tăcere: Dan Kaminsky și defectul din DNS

În 2008, un cercetător de 29 de ani a găsit un defect care permitea deturnarea oricărui domeniu de pe internet. Povestea celei mai mari operațiuni coordonate de patch-uire din istorie și ce a rămas din ea.

În primăvara lui 2008, Dan Kaminsky, pe atunci director de teste de penetrare la IOActive, la 29 de ani, a descoperit ceva ce nu ar fi trebuit să existe: o metodă prin care oricine putea deturna orice domeniu de pe internet. Nu un site anume, nu un furnizor anume — mecanismul care traduce numele în adrese, pentru toată lumea.

Nu a publicat descoperirea. A sunat la Paul Vixie, la Departamentul de Securitate Internă al SUA, la Cisco și la Microsoft. A urmat o întâlnire secretă și o colaborare între producători concurenți, care s-a încheiat pe 8 iulie 2008 cu lansarea simultană a corecțiilor — cea mai mare operațiune coordonată de patch-uire pe care o văzuse internetul.

Ce a găsit, explicat simplu

Când calculatorul tău întreabă unde se află un domeniu, serverul DNS care răspunde primul câștigă. Ca să nu poată răspunde oricine, cererea conține un număr de identificare pe care răspunsul trebuie să îl reproducă. Numărul are 16 biți — aproximativ 65.000 de valori posibile. Un atacator putea, teoretic, să încerce să îl ghicească trimițând răspunsuri false, dar avea o singură șansă: dacă răspunsul legitim ajungea primul, rezultatul se memora pentru ore întregi, iar atacatorul trebuia să aștepte.

Contribuția lui Kaminsky a fost să observe cum se elimină acea așteptare. În loc să atace un nume existent, ceri servere pentru subdomenii inventate — „83.exemplu.ro", „84.exemplu.ro" și așa mai departe. Niciunul nu este în memorie, deci fiecare declanșează o cerere nouă. Poți genera mii de încercări pe secundă, fiecare cu propria șansă de a ghici numărul. Iar răspunsul fals nu trebuie să conțină doar adresa subdomeniului inventat, ci și informația despre care server este autoritar pentru întregul domeniu. Ghicești o dată, corect, și preiei domeniul în întregime.

Nu era o eroare de programare a cuiva. Era o presupunere de proiectare pe care o împărtășeau toate implementările, de douăzeci de ani. Exact clasa de problemă care nu se repară cu un patch la un produs.

Reparația și ce nu a reparat

Soluția convenită a fost randomizarea portului sursă: pe lângă numărul de identificare, atacatorul trebuia să ghicească și portul de pe care plecase cererea. Asta a înmulțit dificultatea de aproximativ 65.536 de ori. Un atac care dura secunde a devenit unul care dura, în funcție de condiții, zile.

Kaminsky a fost însă explicit că aceasta este o atenuare, nu o vindecare. Soluția reală era DNSSEC — semnarea criptografică a răspunsurilor DNS, astfel încât un răspuns fals să nu poată fi validat indiferent câte încercări face atacatorul. În iunie 2010 a fost desemnat de ICANN drept unul dintre reprezentanții comunității de încredere pentru rădăcina DNSSEC, adică unul dintre oamenii care dețin material criptografic necesar recuperării în caz de dezastru al infrastructurii de semnare a internetului.

Optsprezece ani mai târziu, DNSSEC este încă departe de a fi universal. Atenuarea temporară a devenit, pentru multă lume, soluția permanentă — un tipar pe care îl regăsim în securitate mult mai des decât ne convine.

Cele treisprezece zile

Patchurile au fost publicate pe 8 iulie 2008. Kaminsky a cerut public treizeci de zile de tăcere înainte de a explica detaliile, ca administratorii să aibă timp să actualizeze. Pe 21 iulie, detaliile s-au scurs oricum. Treisprezece zile.

Se poate citi ca un eșec al divulgării coordonate, dar concluzia corectă este inversă. În cele treisprezece zile, cea mai mare parte a infrastructurii critice fusese deja actualizată — tocmai pentru că patchul apăruse înaintea explicației, nu după. Modelul „reparația mai întâi, povestea după" a devenit standardul de facto pentru vulnerabilitățile care afectează infrastructura comună, iar el a fost testat la scară aici pentru prima dată.

La conferința Black Hat din acel an, Kaminsky a prezentat descoperirea pe role. Detaliul pare anecdotic, dar spune ceva despre om și despre o cultură profesională în care rigoarea tehnică nu cerea solemnitate.

Restul lucrurilor pe care le-a făcut

DNS-ul i-a adus notorietatea, dar contribuția lui de fond a fost alta: a construit constant unelte care le permiteau apărătorilor să măsoare o problemă, nu doar să o descrie.

  • În 2005, când Sony BMG a livrat pe CD-uri muzicale un rootkit care se instala pe calculatoarele cumpărătorilor, Kaminsky a folosit o tehnică de interogare a memoriei cache a serverelor DNS pentru a estima amploarea. A demonstrat că cel puțin 568.000 de calculatoare erau afectate. Sony nu putea contesta o cifră obținută din infrastructura publică.
  • În martie 2009, în plină panică Conficker, a descoperit o modalitate de a detecta de la distanță mașinile infectate. Uneltele de scanare existente au putut fi actualizate în câteva zile, iar organizațiile au aflat, în sfârșit, cât de mult erau afectate.
  • A documentat probleme în infrastructura de certificate SSL/X.509, inclusiv riscurile funcției de hash MD2, încă folosită atunci în lanțuri de încredere.
  • A creat Interpolique, un cadru de lucru care propunea o abordare diferită pentru prevenirea atacurilor prin injecție.

Dan Kaminsky a murit pe 23 aprilie 2021, la 42 de ani, din cauza cetoacidozei diabetice. A fost inclus în Internet Hall of Fame în decembrie același an.

Ce rămâne, practic

Trei lucruri din povestea asta se transferă direct în munca de zi cu zi a oricărei echipe de securitate.

  • Cele mai grave probleme nu sunt bug-uri, ci presupuneri comune. Defectul DNS nu exista în codul cuiva anume; exista în ceea ce credeau toți despre cum funcționează sistemul. Aceeași formă o au astăzi problemele de izolare din serverele MCP pentru agenți AI sau eșecurile de separare între chiriași — nimeni nu a greșit vizibil, dar toată lumea a presupus la fel.
  • Ordinea contează: reparația înaintea explicației. Când un defect afectează infrastructura folosită de toți, publicarea detaliilor înainte de existența unui patch nu este transparență, este transfer de risc către cei care nu se pot apăra rapid.
  • Măsurarea este o contribuție de securitate în sine. Cine poate răspunde cu o cifră la întrebarea „cât de expuși suntem" schimbă discuția din opinie în fapt. Cele mai multe organizații nu au acea cifră pentru propriile sisteme.

Și încă ceva, mai greu de pus în proceduri. În vara lui 2008, un om care ar fi putut să vândă descoperirea, sau să o publice și să devină celebru instantaneu, a ales în schimb să petreacă luni de zile coordonând concurenți ca să repare ceva ce nu îi aparținea. Internetul a continuat să funcționeze în acele luni, iar aproape nimeni nu a aflat vreodată de ce.

#Dan Kaminsky#DNS#cache poisoning#DNSSEC#divulgare coordonată#istoria securității#Conficker#Sony BMG