14-годишна уязвимост в ядрото на Linux може да позволи на локален атакуващ да ескалира привилегиите си до root и в среда с концептуално доказателство (PoC) да избяга от Docker контейнер, за да компрометира основния хост.

Дефектът в потребителския криптографски интерфейс AF_ALG на Linux произтича от опасни конкурентни записи в един и същ сокет, използван за операции като криптиране и декриптиране по стандарта AES.

Тъй като непривилегирован локален процес може да получи достъп до този интерфейс, той представлява ценна повърхност за атака както за изследователите на ядрото, така и за атакуващите.

Изследователят по сигурност Мухамад Алифа Рамдхан от STAR Labs открива проблема през 2025 г., докато извършва одит на кода на ядрото на Linux за програмата kernelCTF на Google.

Изследването, завършено съвместно с колегата му Бинг-Джонг Били Дженг, демонстрира, че дефектът може да бъде разработен в надежден експлойт за локална ескалация на привилегии. Според съобщенията докладът в kernelCTF е получил възнаграждение от 113 337 долара.

CISA също включи CVE-2025-39964 сред уязвимостите, за които се съобщава, че се експлоатират активно, което увеличава спешността за инсталиране на корекции за сигурност.

14-годишен дефект в ядрото на Linux

Основният проблем е състояние на надпревара (race condition) в пътя за обработка на sendmsg() в AF_ALG. Обикновено ядрото събира криптографските входни данни чрез една или повече заявки и проследява тези буфери с помощта на списъци за разпръскване и събиране (scatter-gather lists). Флаг на контекста, наречен merge, указва, че крайният буфер има неизползвано пространство в паметта и че нови данни могат да се добавят безопасно.

Прогресия на експлойта CVE-2025-39964 (източник: idnsec)
Прогресия на експлойта CVE-2025-39964 (източник: Idnsec )

Въпреки това две нишки могат да инициират операции за запис към един и същ сокет за AF_ALG операции. Докато заключването на сокета защитава повечето промени в състоянието, ядрото освобождава това заключване, докато дадена нишка изчаква свободно пространство за запис в буфера. Това позволява на друг процес за запис да модифицира споделения контекст, преди първоначалната нишка да възобнови изпълнението си.

Според изследването на IDNsec, атакуващите могат да манипулират времевите интервали, за да оставят ctx->merge активиран, докато крайният списък за разпръскване и събиране няма валидни записи. Това кара последващ запис да осъществи достъп до метаданни преди очаквания масив чрез sg[-1].

Този достъп извън границите става опасен, тъй като контролираните от атакуващия данни в динамичната памет (heap) могат да повлияят на фалшивите метаданни на списъка. Изследователите са използвали това състояние, за да създадат usercopy оракул и в крайна сметка да извлекат примитив за произволен запис в ядрото. След това експлойтът презаписва core_pattern – настройка на ядрото, която контролира как Linux обработва аварийните дампове на паметта (core dumps) на процесите.

Когато core_pattern започва със символа за конвейер (|), Linux изпълнява конфигурираната програма като манипулатор на аварийния дамп. Чрез замяна на тази стойност и предизвикване на срив в дъщерен процес, концептуалното доказателство стартира контролирания от атакуващия изпълним файл с root привилегии.

Тъй като контейнерите споделят ядрото на хоста, същият примитив на ниво ядро може да позволи бягство от Docker контейнер в засегнатите конфигурации.

Уязвимият код е въведен с Linux 2.6.38 през 2011 г. и е останал изложен на риск в продължение на приблизително 14 години. Засегнатите версии включват ядра преди коригираните стабилни издания, предмет на обратно пренасяне на корекции (backports) от съответните дистрибуции. Публичните бюлетини посочват коригирани версии, включително Linux 5.10.246, 5.15.195, 6.1.155, 6.6.109, 6.12.50 и 6.16.10.

Разработчиците на ядрото на Linux отстраниха проблема, като добавиха изключителна собственост върху записите към контекстите на AF_ALG. Корекцията въвежда проверка на състоянието на ctx->write, което кара втория конкурентен запис да прекъсне с грешка, вместо да променя споделеното състояние на сокета.

Администраторите трябва своевременно да инсталират коригирания пакет с ядрото за своята дистрибуция и да рестартират системата в обновеното ядро. Организациите следва да приоритизират споделената Linux инфраструктура, хостовете с контейнери, многопотребителските системи и средите, в които може да се изпълнява ненадежден локален код или работни натоварвания от различни наематели.