В ядрото на 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
