Claude получил root shell за 8 часов, создав эксплойт для ядра FreeBSD
18:21, 02.04.2026
Недавно, исследователь Николас Карлини обнародовал отчет о том, как Claude всего за 8 часов создал полноценный эксплойт для удаленного выполнения кода в ядре FreeBSD.
Детали касательно создания эксплойта нейросетью
Уязвимость, которая была обнаружена имеет номер CVE-2026-4747 и она была закрыта еще в конце марта. Но исследователь решил перепроверить, сможет ли Claude превратить ее описание в функционирующий эксплойт. Почти за 8 часов работы, ИИ смог воспроизвести код, который открывал root shell, а реальное время работы Claude было всего в пределах 4 часов.
Claude создал 15-раундовую стратегию для эксплойта, которая состояла из:
- В начальном раунде вызывается pmap_change_prot() через ROP-цепочку для того чтобы изменить права памяти ядра BSS на RWX.
- Далее вовремя 14 раундов, shellcode записывается частями по 32 байта.
- Последним шагом будет передача последних байтов и прыжок на shellcode.
Во время исполнения каждого ранду, один NFS-поток ядра убивается используя kthread_exit(), но сервер продолжает функционировать. Самым сложным этапом был переход из ядра в пользовательское пространство. Через NFS-поток невозможно напрямую вызвать execve(), и для этого использовалась следующая схема:
Изначально hijacked-поток вызывает kproc_create(), вследствие чего создается а потом завершается полноценный процесс.
- Следующим шагом, новый процесс через kern_execve() запускает /bin/sh.
- Но во время тестирования, worker-процесс падал из-за аппаратных точек останова (hardware breakpoints). Для решения этой проблемы, нужно было добавить определенные команды в shellcode для очищения регистра DR7.
Следующим важным моментом стало определение правильного смещения для перезаписи RIP. Claude с помощью циклической последовательности выяснил, что правильное значение – 200 байт.
Конечно, и до этого эксперимента уже использовались фаззеры для обнаружения уязвимостей в ядре, но создание рабочего эксплойта пока не считалось возможным с помощью ИИ. В данном случае Claude не только генерировал код, но и:
- Настроил тестовое окружение, учитывая необходимость в 2 CPU.
- Сгенерировал отладку через QEMU.
- Также использовал ROP-гаджеты.
- Пофиксил проблему с унаследованными регистрами отладки.
Находить баги в программах с помощью компьютеров – никогда не было большой проблемой. Но находить и эксплуатировать - это совершенно новый подход, где необходимо глубокое понимание процессов установки ОС, адаптации, управления памятью, создания ROP-цепочек, и многое другое.
Надеемся, статья оказалась полезной - а как вы считаете? Поставьте лайк и подпишитесь на наш блог, чтобы получать больше практических советов и последних новостей о технологиях от HostZealot.