Vulnerabilitate în uClibc și uClibc-ng, care permite înlocuirea datelor în cache-ul DNS

În bibliotecile standard C uClibc și uClibc-ng, utilizate în multe dispozitive încorporate și portabile, a fost identificată o vulnerabilitate (CVE nesolicitat), care permite introducerea de date false în cache-ul DNS, ceea ce poate fi folosit pentru a schimba adresa IP a oricărui domeniu și a redirecționa cererile către domeniu pe un server al atacatorului.

Problema afectează diferite firmware-uri Linux pentru routere, puncte de acces și dispozitive IoT, precum și distribuții Linux pentru sisteme încorporate, cum ar fi OpenWRT și Embedded Gentoo. Se observă că vulnerabilitatea se manifestă în dispozitivele multor producători (de exemplu, uClibc este utilizat în firmware-urile Linksys, Netgear și Axis), dar deoarece vulnerabilitatea din uClibc și uClibc-ng rămâne nerezolvată, informațiile detaliate despre dispozitivele și producătorii specifici a căror produse sunt afectate de problemă nu sunt deocamdată divulgate.

Vulnerabilitatea este cauzată de utilizarea în codul de trimitere a cererilor DNS a identificatorilor de tranzacție previzibili. Numărul de identificare a cererii DNS era selectat prin simpla creștere a unui contor fără aplicarea unui plus de randomizare a numerelor de port, ceea ce permitea infectarea cache-ului DNS prin trimiterea anticipată a pachetelor UDP cu răspunsuri false (răspunsul va fi acceptat dacă a sosit înaintea răspunsului real și include un ID corect). server Spre deosebire de metoda propusă în 2008 de Kaminsky, identificatorul tranzacției nu trebuie nici măcar ghicit, deoarece este în mod evident previzibil (la început se stabilește valoarea 1, care este crescută la fiecare cerere, și nu este aleasă aleatoriu).

Vulnerabilitate în uClibc și uClibc-ng, care permite înlocuirea datelor în cache-ul DNS

În specificația pentru protecția împotriva ghicirii identificatorului se recomandă aplicarea suplimentară a distribuției aleatoare a numerelor de porturi de rețea sursă, din care sunt trimise cererile DNS, ceea ce compensează dimensiunea insuficient de mare a identificatorului. La activarea randomizării porturilor pentru generarea unui răspuns fals, pe lângă ghicirea identificatorului de 16 biți, este necesar să se identifice și numărul portului rețelei. În uClibc și uClibc-ng, o astfel de randomizare nu a fost inclusă explicit (când se apelează bind, nu a fost specificat un port UDP sursă aleator) și aplicarea ei depindea de setările sistemului de operare.

Dezactivarea randomizării fluxului face ca identificarea identificatorului de cerere incrementabil să fie o sarcină trivială. Totuși, chiar și în cazul aplicării randomizării, atacatorul trebuie doar să ghicească portul de rețea din intervalul 32768–60999, având la dispoziție o trimitere masivă și simultană de răspunsuri false pe diferite porturi de rețea.

Vulnerabilitate în uClibc și uClibc-ng, care permite înlocuirea datelor în cache-ul DNS

Problema a fost confirmată în toate versiunile actuale ale uClibc și uClibc-ng, inclusiv cele mai recente versiuni uClibc 0.9.33.2 și uClibc-ng 1.0.40. În septembrie 2021, informațiile despre vulnerabilitate au fost trimise către CERT/CC pentru pregătirea coordonată a corecțiilor. În ianuarie 2022, datele despre problemă au fost transmise mai multor producători, colaborând cu CERT/CC. În martie, a fost făcută o încercare de a contacta separat proiectul uClibc-ng, dar acesta a răspuns că nu poate remedia vulnerabilitatea de sine stătător și a recomandat să se dezvăluie public informațiile despre problemă, sperând să primească ajutor din partea comunității pentru dezvoltarea unei corecții. NETGEAR a anunțat despre lansarea unui upgrade pentru remedierea vulnerabilității.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster