ИИ написал полный эксплоит для ядра FreeBSD — от уязвимости до root-шелла за 4 часа
Исследователи из Calif и Anthropic показали, как Claude за 4 часа разработал два рабочих remote kernel RCE для FreeBSD (CVE-2026-4747). ИИ решил 6 нетривиальных задач — от отладки стека до перехода из ядра в userland. Оба эксплоита дали root с первой попытки.
Новости TprogerФаззеры находят баги в ядрах операционных систем уже больше десяти лет. Но написать полноценный эксплоит, который превращает крэш в удалённый root-шелл, — это всегда считалось задачей исключительно для людей. Теперь эта граница сдвинулась.
Команда безопасности Calif опубликовала разбор того, как Claude (Anthropic) за ~4 часа написал два рабочих эксплоита для CVE-2026-4747 — уязвимости переполнения стека в модуле ядра FreeBSD. Оба эксплоита сработали с первой попытки и дали полный root-доступ к удалённой машине.
Саму уязвимость тоже обнаружил ИИ: в официальном бюллетене FreeBSD указан «Nicholas Carlini using Claude, Anthropic». При этом человек направлял процесс через 44 промпта, но большую часть технической работы — от анализа крэш-дампов до написания ROP-цепочек — Claude выполнял самостоятельно.
Ключевые выводы
— Claude написал полный remote kernel RCE для FreeBSD (CVE-2026-4747) за ~4 часа при минимальном участии человека (44 промпта)
— Уязвимость — переполнение стека в kgssapi.ko (модуль Kerberos-аутентификации для NFS), оценка CVSS 8,8 (HIGH)
— ИИ самостоятельно решил 6 нетривиальных задач: от настройки тестовой среды до перехода из режима ядра в пользовательский
— Оба эксплоита сработали с первой попытки, результат — uid=0 (root)
— FreeBSD уже выпустил патч 26 марта 2026 года (FreeBSD-SA-26:08)
Уязвимость CVE-2026-4747 в ядре FreeBSD
CVE-2026-4747 — переполнение стека (CWE-121) в модуле ядра kgssapi.ko (реализует RPCSEC_GSS — механизм аутентификации NFS-клиентов через Kerberos). Функция gss_validate() копирует данные из входящего сетевого пакета в стековый буфер без проверки границ.
Переполнение буфера происходит до проверки учётных данных NFS-клиента — но для полноценной атаки нужен сетевой доступ к NFS-серверу. Это отражено в оценке CVSS 8,8 (HIGH) по данным NVD: вектор атаки сетевой, сложность низкая, требуются минимальные привилегии (PR:L).
Дополнительный фактор: конкретная функция в kgssapi.ko скомпилирована так, что стековые канарейки (stack canaries — специальные значения для детекции переполнения) не защищают целочисленный буфер в данном случае. Переполнение остаётся незамеченным. Затронуты все версии FreeBSD, патчи доступны для stable/15, stable/14 и stable/13.
Кто стоит за исследованием
Публикация — совместная работа Calif (калифорнийская компания по безопасности, основанная Thai Duong — соавтором атак BEAST и CRIME на TLS) и Nicholas Carlini из Anthropic (PhD UC Berkeley, лауреат best paper на IEEE S&P, USENIX Security и ICML). Уязвимость обнаружил Carlini с помощью Claude, а команда Calif разработала эксплоит тоже с помощью Claude.
Как Claude написал эксплоит: 6 задач за 4 часа
Команда Calif дала Claude доступ к оболочке, отладчику GDB, утилите ROPgadget (поиск «гаджетов» — коротких фрагментов кода в ядре, которые можно использовать для построения цепочки команд) и эмулятору QEMU. Задача: разработать рабочий эксплоит для CVE-2026-4747. За ~4 часа машинного времени Claude решил 6 нетривиальных задач.
1. Настройка тестовой среды
Claude развернул виртуальную машину FreeBSD с NFS, Kerberos и уязвимым модулем ядра. Модель учла, что VM нужно минимум 2 процессора — FreeBSD создаёт 8 NFS-потоков на каждый CPU.
2. Многопакетная доставка шеллкода
Шеллкод (432 байта) не помещается в один сетевой пакет. Claude разработал стратегию из 15 раундов:
- Первый раунд: сделать область памяти ядра исполняемой через
pmap_change_prot - 14 следующих раундов: записать шеллкод порциями по несколько десятков байт за пакет
- Последний пакет запускает записанный шеллкод
3. Чистый выход из потока
Каждое переполнение захватывает один NFS-поток ядра. Claude использовал kthread_exit() для корректного завершения каждого захваченного потока — чтобы сервер оставался работоспособным для следующего раунда.
4. Отладка смещений стека
Начальные смещения из дизассемблера оказались неверными. Claude отправил De Bruijn-паттерны — специальные последовательности, в которых каждая подстрока уникальна, что позволяет по крэш-дампу точно определить, какой байт попал на адрес возврата. Классический приём пентестеров, который Claude применил без подсказки.
5. Переход из ядра в пользовательский режим
NFS-потоки работают в режиме ядра и не могут напрямую запускать пользовательские программы. Claude нашёл решение через цепочку вызовов ядра FreeBSD:
- Создать новый процесс через
kproc_create() - Заменить его на
/bin/shчерезkern_execve() - Сбросить внутренний флаг ядра, помечающий процесс как системный, чтобы он мог выполнять пользовательский код
6. Баг аппаратных точек останова
Дочерний процесс падал с debug exception. Claude отследил проблему: регистр DR7 (управляет аппаратными точками останова на x86) содержал устаревшие значения от отладчика DDB. Решение — очистить DR7 перед форком.
Второй эксплоит — альтернативная стратегия
Claude написал и второй эксплоит, использующий принципиально другой подход. Вместо запуска реверс-шелла (что требует многоэтапной доставки шеллкода и сложного перехода в пользовательский режим) — запись публичного SSH-ключа в .ssh/authorized_keys на сервере. Это проще: нужно записать всего ~400 байт текста в файл, без перехода из ядра в userland. Результат: 6 раундов вместо 15. Оба эксплоита дали полный root-доступ:
Почему это важно для индустрии
Компьютеры всегда умели находить баги. Фаззеры вроде AFL и syzkaller обнаруживают уязвимости в ядрах уже больше десяти лет. Но найти баг и написать эксплоит — совершенно разные вещи. Разработка эксплоитов требует понимания внутренностей ОС, создания ROP-цепочек, управления расположением памяти, отладки крэшей и адаптации, когда что-то идёт не так. Это долго считалось рубежом, который могут пересечь только люди.
Ключевое отличие от прошлых демонстраций ИИ в безопасности: Claude не просто сгенерировал код по шаблону. Модель адаптировалась к неожиданным проблемам в реальном времени — исправляла смещения стека через отладочные паттерны, находила баг с аппаратными регистрами, придумала нетривиальный переход из ядра в пользовательский режим. Каждая из этих задач раньше требовала многолетнего опыта в exploit development.
Для защитников это сигнал: окно между раскрытием уязвимости и появлением рабочего эксплоита сжимается с недель до часов. Недавний взлом Axios на npm показал, как быстро атакующие эксплуатируют цепочку поставок. Теперь ИИ может ускорить и разработку эксплоитов для ядер ОС.
Полный лог из 44 промптов и код обоих эксплоитов опубликованы в репозитории califio/publications на GitHub.
MAD Bugs — что дальше
Calif объявил проект MAD Bugs: Month of AI-Discovered Bugs — до конца апреля 2026 года команда планирует опубликовать ещё несколько уязвимостей и эксплоитов, обнаруженных с помощью ИИ. Все находки проходят через ответственное раскрытие — CVE-2026-4747 был запатчен за 5 дней до публикации эксплоита.
Что делать администраторам FreeBSD
Если вы администрируете FreeBSD-серверы с NFS — обновитесь до последних патчей. Проверить, загружен ли уязвимый модуль:
Если модуль не используется — можно выгрузить его до обновления:
Подробности — в бюллетене FreeBSD-SA-26:08.
Частые вопросы
Что за уязвимость CVE-2026-4747?
Переполнение стека в модуле ядра FreeBSD kgssapi.ko, который реализует Kerberos-аутентификацию для NFS. Позволяет удалённо выполнить произвольный код в ядре при наличии сетевого доступа к NFS-серверу. Оценка CVSS 8,8 (HIGH). Затронуты все версии FreeBSD, патч доступен с 26 марта 2026 года.
Какая модель ИИ написала эксплоит?
Claude от Anthropic — в агентном режиме с доступом к терминалу, GDB, ROPgadget и QEMU. Человек направлял процесс через 44 промпта, но основную техническую работу — от анализа крэш-дампов до написания шеллкода — Claude выполнял самостоятельно.
Уязвимость уже исправлена?
Да. FreeBSD выпустил патч 26 марта 2026 года — за 5 дней до публикации эксплоита. Бюллетень: FreeBSD-SA-26:08. Обновления доступны для веток stable/15, stable/14 и stable/13.
Чем этот случай отличается от прошлых демонстраций ИИ в безопасности?
Claude не просто нашёл баг или сгенерировал шаблонный код. Он разработал полную цепочку эксплуатации: от переполнения стека до root-шелла, решая неожиданные технические проблемы в процессе — отладку смещений, переход из режима ядра в пользовательский, обход аппаратных багов. Раньше это требовало недель работы опытного специалиста.
Что такое MAD Bugs?
Month of AI-Discovered Bugs — проект компании Calif, в рамках которого до конца апреля 2026 года публикуют уязвимости и эксплоиты, обнаруженные с помощью ИИ. Все находки проходят ответственное раскрытие — патчи выходят до публикации деталей.
Если вы работаете с безопасностью — следите за проектом MAD Bugs: граница между возможностями ИИ и задачами для людей продолжает сдвигаться.