Ранливост во uClibc и uClibc-ng што дозволува податоци да се измамат во кешот на DNS

Во стандардните C библиотеки uClibc и uClibc-ng, кои се користат во многу вградени и преносливи уреди, идентификувана е ранливост (CVE не е доделена) што дозволува фиктивни податоци да се вметнат во кешот DNS, што може да се користи за замена на IP адресата на произволен домен во кешот и пренасочување на барањата до доменот на серверот на напаѓачот.

Проблемот влијае на различни фирмвери на Linux за рутери, точки за пристап и уреди за Интернет на нештата, како и вградени дистрибуции на Linux, како што се OpenWRT и Embedded Gentoo. Забележано е дека ранливоста се појавува во уредите од многу производители (на пример, uClibc се користи во фирмверот Linksys, Netgear и Axis), но бидејќи ранливоста останува непоправена во uClibc и uClibc-ng, детални информации за одредени уреди и производители чии производи дали проблемот е достапен, сè уште не се откриени.

Ранливоста се должи на употребата на предвидливи идентификатори на трансакции во кодот за испраќање барања за DNS. Идентификацискиот број на барањето DNS беше избран со едноставно зголемување на бројачот без користење дополнителна рандомизација на броевите на портите, што овозможи да се труе кешот на DNS преку превентивно испраќање UDP пакети со фиктивни одговори (одговорот ќе биде прифатен ако пристигнал пред одговорот од вистинскиот сервер и го вклучува точниот ID). За разлика од методот Камински предложен во 2008 година, идентификаторот на трансакцијата дури и не треба да се погодува, бидејќи првично е предвидлив (вредноста првично е поставена на 1, што се зголемува со секое барање, наместо случајно избрано).

Ранливост во uClibc и uClibc-ng што дозволува податоци да се измамат во кешот на DNS

За заштита од брутална сила на идентификаторот, спецификацијата препорачува дополнително користење на случајна дистрибуција на броеви на изворни мрежни порти од кои се испраќаат барањата за DNS, што компензира за недоволно големата големина на идентификаторот. Кога ќе овозможите рандомизација на портата да генерира фиктивен одговор, покрај изборот на 16-битен идентификатор, мора да го изберете и бројот на мрежната порта. Во uClibc и uClibc-ng, таквата рандомизација не беше експлицитно овозможена (при повикување bind, не беше наведена порта за UDP со случаен извор) и неговата употреба зависеше од поставките на оперативниот систем.

Кога рандомизацијата на садот е оневозможена, одредувањето на зголемениот ID на барање е означено како тривијална задача. Но, дури и ако се користи рандомизација, напаѓачот треба само да ја погоди мрежната порта од опсегот 32768–60999, за што може да користи масовно истовремено испраќање на фиктивни одговори до различни мрежни порти.

Ранливост во uClibc и uClibc-ng што дозволува податоци да се измамат во кешот на DNS

Проблемот е потврден во сите тековни изданија на uClibc и uClibc-ng, вклучувајќи ги и најновите верзии на uClibc 0.9.33.2 и uClibc-ng 1.0.40. Во септември 2021 година, информациите за ранливоста беа испратени до CERT/CC за координирана подготовка на поправки. Во јануари 2022 година, податоците за проблемот беа споделени со повеќе од 200 производители кои соработуваат со CERT/CC. Во март, имаше обид да се контактира одделно со одржувачот на проектот uClibc-ng, но тој одговори дека не може сам да ја поправи ранливоста и препорача јавно да се обелоденат информациите за проблемот, надевајќи се дека ќе добие помош во развојот на поправете од заедницата. Меѓу производителите, NETGEAR најави објавување на ажурирање што ја елиминира ранливоста.

Извор: opennet.ru

Додадете коментар