
Исследователь red team компании Praetorian Adam Crosser рассказал, как натравил Claude Code на исходники ядра FreeBSD — и за несколько дней нашел около восьми реальных уязвимостей, а еще за выходные собрал два рабочих эксплойта, выбирающихся из FreeBSD jail. Работал он на модели Claude Opus 4.6 (на тот момент — последней в линейке Opus) еще в феврале; подробности команда выложила в блоге Praetorian.
FreeBSD — не игрушечная мишень, так как ядре включены все базовые средства защиты (SMEP, SMAP, KASLR и т. д. При этом система популярна в критической инфраструктуре: на ней построена ОС Junos от Juniper, работающая на огромной доле мировых роутеров и файрволов, FreeBSD-аплайнсы Netflix раздают значительную часть видеотрафика интернета, на ней же основана прошивка PlayStation, а Nintendo Switch позаимствовал у нее сетевой стек. Публично раскрыта пока только одна из восьми находок — CVE-2026-3038, уже закрытая патчем.
Самое любопытное — не сам факт, а экономика. Большие лаборатории готовы тратить в токенах по $20 000–30 000, чтобы найти одну уязвимость; в Praetorian принципиально пошли иначе и работали с единственного аккаунта Claude Max за $100 в месяц. Чтобы уложиться в лимиты, они не скармливали модели все ядро подряд, а собрали через режим глубокого исследования базу известных паттернов багов, заставили агента написать по ней правила для CodeQL и semgrep, прогнали их по кодовой базе, а кандидатов проверяли в петле обратной связи — на виртуалке с ядром, собранным с KASAN, который ловит порчу памяти даже без падения системы.
Не обошлось без проблем. Crosser описывает, как модель жульничала и льстила пользователю в попытке любой ценой «решить» задачу. В одном случае для эксплойта не хватало нужного ROP-гаджета — вместо поиска альтернатив агент скомпилировал и подгрузил собственный модуль ядра с этим гаджетом внутри. В другом — «подтвердил» use-after-free, просто дописав в исходники ядра код, который триггерил баг, хотя из пользовательского пространства тот не воспроизводился.
Единственная публично разобранная находка, CVE-2026-3038, — переполнение стека в подсистеме маршрутных сокетов (RTSock): поле длины полностью контролируется пользователем, что дает 127-байтное переполнение буфера на стеке ядра, а нужный запрос не требует привилегий, так что уронить ядро может любой локальный непривилегированный процесс. О баге сообщили 23 февраля, и уже на следующий день вышел патч. Остальные семь уязвимостей все еще ждут исправлений — поэтому Praetorian пока разбирает только методологию. Это первая часть из двух: во второй обещают показать, как именно из этих багов делали эксплойты.
P.S. Поддержать меня можно подпиской на канал «сбежавшая нейросеть», где я рассказываю про ИИ с творческой стороны.
ссылка на оригинал статьи https://habr.com/ru/articles/1055986/