U standardnim C knjižnicama uClibc i uClibc-ng, koje se koriste u mnogim ugrađenim i prenosivim uređajima, otkrivena je ranljivost (CVE nije dodijeljen), koja omogućava umetanje lažnih podataka u DNS predmemoriju, što se može iskoristiti za zamjenu IP adresa proizvoljnih domena i preusmjeravanje zahtjeva na zlonamjerni server.
Problem se tiče različitih Linux firmvera za usmjerivače, pristupne točke i uređaje interneta stvari, kao i Linux distribucija za ugrađene sustave, poput OpenWRT i Embedded Gentoo. Primjećuje se da ranljivost utječe na uređaje mnogih proizvođača (npr. uClibc se koristi u firmverima Linksys, Netgear i Axis), no budući da ranljivost u uClibc i uClibc-ng ostaje neispravljena, detaljne informacije o specifičnim uređajima i proizvođačima čiji proizvodi imaju ovaj problem još nisu objavljene.
Ranljivost je uzrokovana korištenjem predvidljivih identifikatora transakcija u kodu za slanje DNS zahtjeva. Identifikacijski broj DNS zahtjeva biran je jednostavnim povećanjem brojača bez primjene dodatne randomizacije brojeva portova, što je omogućavalo unošenje lažnih podataka u DNS predmemoriju kroz unaprijed šalje UDP pakete sa lažnim odgovorima (odgovor će biti prihvaćen ako je stigao prije stvarnog odgovora i uključuje ispravan ID). poslužitelja Za razliku od metode Kaminskog predložene 2008. godine, identifikator transakcije čak nije potrebno pogoditi, jer je izvorno predvidljiv (na početku se postavlja vrijednost 1, koja se pri svakom zahtjevu povećava, a ne odabire nasumično).

U specifikaciji za zaštitu od pogađanja identifikatora preporučuje se dodatna primjena slučajne distribucije brojeva izvornih mrežnih portova, s kojih se šalju DNS zahtjevi, što kompenzira nedovoljno veliku veličinu identifikatora. Aktiviranjem randomizacije portova za oblikovanje lažnog odgovora, osim pogađanja 16-bitnog identifikatora, potrebno je pogoditi i broj mrežnog porta. U uClibc i uClibc-ng takva randomizacija nije bila eksplicitno uključena (prilikom pozivanja bind nije naveden nasumični izvorni UDP port) i njeno korištenje ovisilo je o postavkama operativnog sustava.
Isključivanjem randomizacije potova, određivanje inkrementalnog identifikatora zahtjeva postaje trivijalni zadatak. Međutim, čak i u slučaju primjene randomizacije, napadaču je potrebno samo pogoditi mrežni port unutar raspona od 32768 do 60999, za što se može koristiti masovna simultana slanje lažnih odgovora na različite mrežne portove.

Problemi su potvrđeni u svim aktualnim izdanjima uClibc i uClibc-ng, uključujući najnovije verzije uClibc 0.9.33.2 i uClibc-ng 1.0.40. U rujnu 2021. godine, informacije o ranjivosti poslane su CERT/CC-u za koordiniranu pripremu ispravaka. U siječnju 2022. podaci o problemu proslijeđeni su više od 200 proizvođačima koji surađuju s CERT/CC. U ožujku je izvršen pokušaj da se posebno kontaktira projekt uClibc-ng, ali su odgovorili da nisu u mogućnosti sami ispraviti ranjivost i preporučili su javno otkrivanje informacija o problemu, nadajući se pomoći zajednice u razvoju ispravka. Od proizvođača, ažuriranje s ispravkom ranjivosti najavio je NETGEAR.
Izvor: opennet.ru
