Как стать «богом» в Linux, просто правильно подгадав время. Спойлер: вам понадобится Chronomaly

Как стать «богом» в Linux, просто правильно подгадав время. Спойлер: вам понадобится Chronomaly

Если у вас где-то лежит 32-битный Linux/Android, самое время проверить конфиг и обновления ядра.

image

В Linux нашли уязвимость, для эксплуатации которой достаточно поймать очень короткий момент во времени, и ядро само начинает работать с уже освобожденной памятью. Теперь это не просто теория. На GitHub выложили рабочий PoC-эксплойт для CVE-2025-38352 (оценка CVSS: 7.4), и он показывает, что проблема реально пригодна для захвата привилегий.

CVE-2025-38352 относится к реализации POSIX CPU timers и представляет собой use-after-free в функции handle_posix_cpu_timers(). Ошибка проявляется только в конфигурациях, где отключен флаг CONFIG_POSIX_CPU_TIMERS_TASK_WORK. Такой вариант часто встречается в 32-битных ядрах Android, тогда как на 64-битных системах обычно используется другая конфигурация, и уязвимость там не воспроизводится.

Суть проблемы в гонке, которая возникает, когда POSIX CPU таймеры срабатывают на так называемых zombie-задачах. Если очень точно синхронизировать создание процесса-зомби, его «сбор» родительским процессом и удаление таймера, ядро может обратиться к памяти, которая уже освобождена. В худшем случае это открывает путь к повышению привилегий или даже выполнению кода на уровне ядра.

Эксплойт получил название Chronomaly. Его опубликовала исследовательница по имени Faith, которая работает в компании Zellic. Вместе с кодом вышла подробная серия из трех технических материалов, где разбираются обнаружение уязвимости, ее анализ и практические приемы эксплуатации. Отдельно отмечается, что Chronomaly не требует заранее знать смещения символов ядра или фиксированные адреса в памяти, поэтому он получается более «переносимым» и менее привязанным к конкретной сборке.

Чтобы стабильно поймать нужное окно гонки, эксплойту нужен многоядерный процессор минимум с двумя CPU. В описании приводятся результаты тестов на QEMU с ядром Linux 5.10.157, а параметры можно подстраивать под разные окружения. Внутри используются приемы расширения окна гонки через манипуляции с CPU таймерами и стратегия распределения объектов между кэшами аллокатора, в том числе для структур sigqueue.

Важно и то, что уязвимость уже попала в каталог активно эксплуатируемых, то есть ее связывают с реальными случаями использования. Хотя основной риск сейчас привязан к 32-битным Android-устройствам, задействованные компоненты есть и в 32-битных вариантах других Linux-подобных систем, так что полностью списывать проблему на «старые телефоны» не стоит.

Рекомендация стандартная, но в этот раз особенно срочная: обновиться до ядра с исправлением или включить CONFIG_POSIX_CPU_TIMERS_TASK_WORK, если это возможно в вашей сборке. Исправление уже есть, оно внесено коммитом f90fff1e152dedf52b932240ebbd670d83330eca и блокирует обработку таймеров на zombie-задачах. Производителям устройств и администраторам систем стоит поставить обновления в приоритет, пока Chronomaly не стал универсальным инструментом для массовых атак.