The Thin Strands that Bind Us…

Este vorba despre Internet. Cel pe care îl folosim în fiecare zi. Cel cu ajutorul căruia comunicăm, căutăm informație, și (mult mai important) cel căruia îi încredințăm de multe ori informații confidențiale. Fără să ne dăm seama cât de fragil poate fi uneori.

Acum câteva zile citeam despre DNS – o componentă fundamentală a Internet-ului așa cum îl cunoaștem astăzi. Componentă pe care ne bazăm pentru a verifica dacă un certificat digital este valid, sau dacă o cerere de acces la date a venit de la cineva care are drepturile corespunzătoare. Și totuși, este o componentă complet nesigură – citiți aici pentru detalii(PDF).

Acum am început să citesc despre cum un singur prefix anunțat în BGP (combinat cu un bug IOS) a reușit (aproape) să pună jos Internet-ul la nivel mondial („worldwide Internet brownout”). Evenimentul a avut loc acum câteva zile (16 februarie). Detaliile inițiale le găsiți aici, iar o analiză „la rece” a situației (inclusiv descrierea bug-ului IOS) aici .

Ce s-a întâmplat? Cineva a vrut să facă prepending pe un router. Router-ul respectiv (MikroTik pe numele lui) are un parametru pe 8 biti care decide de câte ori se face prepending-ul. Dar persoana care l-a configurat nu a citit cu atenție documentația, și a introdus numărul AS-ului (47868). Număr care modulo 256 s-a întâmplat să aibă o valoare foarte mare (252).

Rezultat? Prepend cu 252 de instanțe ale unui AS ==> la câteva hop-uri distanță, s-a ajuns la depășirea limitei de 256 pentru lungimea AS-PATH. Și aici intervine un nou bug – de data asta al router-elor Cisco, care nu verifică în mod corect lungimea AS-PATH atunci când fac prepend. Și trimit fericite un AS-PATH cu lungime mai mare decât cea maximă, determinând trimiterea unui NOTIFICATION de către vecin (și resetarea sesiunii BGP). Efect care mai departe se propagă în avalanșă.

Mi se pare absolut fascinantă combinația de eroare umană (cineva a scris numărul AS-ului în loc de numărul de prepend-uri dorite), cu erori de programare (soft MikroTik care nu verifică numărul introdus, și IOS care nu verifică lungimea AS-PATH), și cu… ghinion pur și simplu (un număr de AS care modulo 256 avea o valoare foarte mare 🙂 ).

Thus for this event to have occurred at all, besides the bugs in the router software of two vendors, only a few percent of the ASes on the Internet could have possibly initiated the meltdown, but only if they had a careless operator and an obscure Latvian router with outdated software. How likely was that?

Faptul că Internet-ul este complet descentralizat îl face să fie vulnerabil la astfel de  probleme. Pe de altă parte, tocmai acest fapt este cel care i-a asigurat succesul, și asigură rezolvarea rapidă a unor astfel de probleme.

The happy ending to this story is that the community quickly rallied and worked together to both identify and mitigate the problem. No meetings were held, no bailouts were requested and not a single lawyer was needed to draft an agreement. The Internet was back to normal in short order.

7 Comments »

  1. Life Tester Said,

    February 22, 2009 @ 22:50

    interesant, nu stiam de dnsCurve (pacat ca nu e si implementat in djbdns+)

  2. AlexJ Said,

    February 23, 2009 @ 0:47

    The Internet: the real self-defending network 😉

  3. tb Said,

    February 23, 2009 @ 14:45

    Printre prezentările de la blackhat mai sunt şi altele interesante (precum cel cu erorile de design al SSL/TLS).
    Pe de altă parte, dnsCurve este prezentat foarte părtinitor şi io bănuiesc faptul că personajul cu pricina nu are prea multe cunoştinţe de criptografie şi/sau vrea să sprijine necondiţionat dnssec.
    Am găsit acu ceva vreme un pdf pe net în care se descria un minicartel care controlează grupul DNS din cadrul IETF şi care cartel ar fii constiuit în pricipal din băieţii de la BIND.

  4. ABS Said,

    February 26, 2009 @ 1:16

    Daca internetul ar fi centralizat ar fi si mai expus. Gandeste-te cat de usor ar fi sa-l opresti complet prin niste DDOS-uri pe acel “core” sau prin taierea fizica a conexiunii catre core… Tocmai ca in structura pe care o are acum este un sistem extrem de tolerant la defecte (cum am invatat noi prin facultate…). Problema e ca unele defecte sunt prea mari 🙂

  5. bogd Said,

    February 26, 2009 @ 20:45

    @ABS: Prin “centralizat” ma refeream la un centru administrativ, nu neaparat la un core fizic al retelei. Dar in ambele cazuri sunt de acord ca descentralizarea este tocmai ceea ce il face tolerant la defecte (vezi ultima fraza din post 🙂 )

  6. Roxana Said,

    March 3, 2009 @ 21:18

    imi place povestea. are happy end 🙂

  7. m4nt13 Said,

    March 4, 2010 @ 17:20

    Router(config-router)#bgp maxas-limit xxx

    🙂 oare cati dintre noi folosim comanda? Greseala e omeneasca…dar sa nu se mai repete!

RSS feed for comments on this post · TrackBack URI

Leave a Comment