Bad Epoll: в Linux и Android е открита уязвимост за получаване на root-достъп


1

В ядрото на Linux е разкрито уязвимост Bad Epoll, регистрирана като CVE-2026-46242. Тя позволява на обикновен локален потребител без специални права да повиши привилегиите си до root. Според автора на изследването Джейн Чон, проблемът засяга не само Linux десктопи и сървъри, но и част от Android устройствата с нови версии на ядрото – това се подчертава отделно в описанието на Bad Epoll.

Грешката се намира в подсистемата epoll — стандартен механизъм на Linux за проследяване на множество файлови дескриптори, мрежови връзки и събития на вход-изход. Такива механизми активно се използват от сървъри, браузъри и мрежови услуги, поради което просто да се изключи epoll не може. В техническия анализ уязвимостта е описана като състезателен проблем, водещ до use-after-free: при едновременно затваряне на свързани epoll обекти, един поток освобождава вътрешните структури, а друг продължава да се обръща към тях.

Ако по-конкретно, проблемът се проявява в ситуация, когато един epoll дескриптор следи друг, а и двата дескриптора се затварят паралелно. След извикването на __ep_remove() полето file->f_ep временно се нулира, и конкурентният __fput() може да реши, че допълнителното почистване вече не е необходимо. В резултат обектът struct eventpoll или свързаният с него struct file се освобождава твърде рано, но кодът продължава да работи с указатели към вече освободена памет. Именно това предоставя на атакуващия примитив за повреждане на паметта на ядрото.

За атаката не са необходими допълнителни capabilities и не се изискват user namespaces — достатъчно е наличието на CONFIG_EPOLL, което прави проблема особено неприятен за обикновените Linux системи. Според първоначалния отчет на изследователя, бъгът е внесен в ядрото с комита 58c9b016e128 през 2023 година, а корекцията е направена с комита a6dc643c693.

Въпреки много тясното времево прозорец на състезанието, изследователят подготви работен експлойд за Google kernelCTF. В описанието на експлоатацията е показано как грешката се превръща в 8-байтова записка в освободената структура, след това в утечка на паметта на ядрото през /proc/self/fdinfo, прихващане на file->f_op->poll и ROP верига за получаване на root. За целта lts-6.12.67 е заявена надеждност около 99%, за COS — около 98%; Android експлойдът, според автора, все още е в разработка.

Под удар са ядрото, базирани на клон 6.4 и по-нови, ако поправката не е пренесена в тях. Старата Android устройства на ядра 6.1, включително Pixel 8 и подобни модели, авторът разглежда за неуязвими. На потребителите и администраторите им остава единственият нормален вариант за защита — да инсталират актуализация на ядрото от своя дистрибутив или доставчик на устройството.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster