V štandardných knižniciach C uClibc a uClibc-ng, ktoré sa používajú v mnohých vstavaných a prenosných zariadeniach, bola identifikovaná zraniteľnosť (CVE nie je priradená), ktorá umožňuje vloženie fiktívnych údajov do vyrovnávacej pamäte DNS, ktorá sa môže použiť na nahradenie adresy IP. ľubovoľnej domény vo vyrovnávacej pamäti a presmerovanie požiadaviek na doménu na serveri útočníka.
Problém postihuje rôznych Linux- firmvér pre smerovače, prístupové body a zariadenia internetu vecí, ako aj Linux-distribúcie pre vstavané systémy, ako napríklad OpenWRT a Embedded Gentoo. Zraniteľnosť údajne postihuje zariadenia od mnohých výrobcov (napríklad uClibc sa používa vo firmvéri od spoločností Linksys, Netgear a Axis). Keďže však zraniteľnosť v uClibc a uClibc-ng zostáva neopravená, podrobnosti o konkrétnych zariadeniach a výrobcoch, ktorých sa problém týka, zatiaľ nie sú k dispozícii.
Zraniteľnosť je spôsobená použitím predvídateľných identifikátorov transakcií v kóde DNS dotazu. ID DNS dotazu bolo vybrané jednoduchým zvýšením počítadla bez akejkoľvek dodatočnej randomizácie čísla portu, čo umožnilo otrávenie vyrovnávacej pamäte DNS preventívnym odosielaním UDP paketov s falošnými odpoveďami (odpoveď by bola akceptovaná, ak by dorazila pred skutočnou odpoveďou). server a obsahuje správne ID). Na rozdiel od Kaminského metódy navrhnutej v roku 2008 nie je potrebné ID transakcie ani hádať, pretože je spočiatku predvídateľné (je pôvodne nastavené na 1, ktorá sa s každou požiadavkou zvyšuje, namiesto toho, aby sa náhodne vyberalo).

Na ochranu pred hrubou silou identifikátora špecifikácia odporúča dodatočne použiť náhodné rozloženie počtov portov zdrojovej siete, z ktorých sa odosielajú DNS požiadavky, čím sa kompenzuje nedostatočne veľká veľkosť identifikátora. Keď povolíte randomizáciu portov na generovanie fiktívnej odpovede, musíte okrem výberu 16-bitového identifikátora vybrať aj číslo sieťového portu. V uClibc a uClibc-ng takáto randomizácia nebola explicitne povolená (pri volaní bind nebol určený náhodný zdrojový UDP port) a jej použitie záviselo od nastavení operačného systému.
Keď je zakázaná randomizácia banku, určenie inkrementovaného ID požiadavky je označené ako triviálna úloha. Ale aj keď sa použije randomizácia, útočníkovi stačí uhádnuť sieťový port z rozsahu 32768–60999, na čo môže využiť masívne simultánne posielanie fiktívnych odpovedí na rôzne sieťové porty.

Problém bol potvrdený vo všetkých aktuálnych vydaniach uClibc a uClibc-ng, vrátane najnovších verzií uClibc 0.9.33.2 a uClibc-ng 1.0.40. V septembri 2021 boli informácie o zraniteľnosti zaslané CERT/CC na koordinovanú prípravu opráv. V januári 2022 boli údaje o probléme zdieľané s viac ako 200 výrobcami spolupracujúcimi s CERT/CC. V marci došlo k pokusu samostatne kontaktovať správcu projektu uClibc-ng, ale ten odpovedal, že nie je schopný odstrániť zraniteľnosť sám, a odporučil verejne zverejniť informácie o probléme v nádeji, že získa pomoc pri vývoji opraviť od komunity. Spomedzi výrobcov spoločnosť NETGEAR oznámila vydanie aktualizácie, ktorá túto zraniteľnosť odstraňuje.
Zdroj: opennet.ru
