Когда код молчал 23 года: как AI вскрыл древнюю рану Linux
Представьте: баг, который спал в ядре Linux с 2003 года. Двадцать три года. Он пережил пять президентских сроков США, три iPhone и бесчисленные обновления безопасности. И его нашёл не человек, а искусственный интеллект - Claude Opus, в ходе CTF-соревнования по безопасности.
Это не просто ещё одна уязвимость. Это сигнал: эра автоматизированного аудита кода AI началась. И если вы не используете эти инструменты, вы уже отстали.
Баг был в подсистеме виртуальных файлов (VFS), связан с обработкой символьных ссылок. В теории, это могло привести к локальному повышению привилегий. На практике - это спящая бомба, которую никто не заметил.
Как это произошло? Команда исследователей использовала Claude Opus (последняя версия на 2026 год, с улучшенным пониманием кода и контекста) для статического анализа ядра. Они не просто искали паттерны - они заставили AI думать как эксперт по безопасности.
И вот методология, которую они разработали. Вы можете применить её к своему коду уже сегодня.
Методология: как заставить Claude Opus искать иголку в стоге сена
Традиционные инструменты статического анализа вроде Coverity или Clang Static Analyzer хороши для известных паттернов. Но они слепы к сложным, многошаговым уязвимостям, которые требуют понимания контекста.
Claude Opus, с его 200K контекстом и глубоким пониманием кода, может отслеживать потоки данных, понимать семантику и находить связи, которые человек упустит после 12-часового аудита.
Исследователи использовали трёхэтапный подход:
- Сегментация кода: разбиение ядра на логические модули для анализа.
- Контекстуальный промптинг: предоставление AI не только кода, но и документации, исторических коммитов, и даже обсуждений из списков рассылки.
- Итеративный анализ: AI генерирует подозрительные участки, которые затем проверяются вручную или с помощью фаззинга.
Это не пассивный анализ. Это активный диалог с AI, где вы - руководитель расследования, а Claude - ваш лучший детектив.
Пошаговый план: Bash-скрипт для автоматизации аудита
Вот скрипт, который автоматизирует процесс. Он использует Claude API (актуально на 2026 год) для анализа кода модуля за модулем.
Важно: для работы скрипта нужен API-ключ Claude. Вы можете получить его на платформе Anthropic. И да, это платно - но цена найденной уязвимости стоит того.
1 Подготовка окружения и установка зависимостей
Сначала убедитесь, что у вас есть доступ к API Claude. Затем установите необходимые инструменты:
#!/bin/bash
# Установка зависимостей для анализа кода Linux
# Проверяем, что мы на Linux (но скрипт может работать и на macOS с доработками)
set -e
echo "Устанавливаем зависимости для статического анализа..."
# Для Debian/Ubuntu
if [ -f /etc/debian_version ]; then
sudo apt-get update
sudo apt-get install -y git curl jq python3 python3-pip clang bear
fi
# Для RHEL/CentOS/Fedora
if [ -f /etc/redhat-release ]; then
sudo yum install -y git curl jq python3 python3-pip clang bear
fi
# Устанавливаем Anthropic CLI для работы с Claude API
pip3 install anthropic-cli
echo "Зависимости установлены."
2 Клонирование и подготовка кода ядра Linux
Мы будем анализировать стабильную версию ядра. Выберите версию, которую хотите проверить:
# Клонируем ядро Linux (или используем локальную копию)
KERNEL_VERSION="6.10" # Актуальная версия на 2026 год
KERNEL_DIR="linux-${KERNEL_VERSION}"
if [ ! -d "$KERNEL_DIR" ]; then
echo "Клонируем ядро Linux версии $KERNEL_VERSION..."
git clone --depth 1 --branch v${KERNEL_VERSION} https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git "$KERNEL_DIR"
else
echo "Директория $KERNEL_DIR уже существует, используем её."
fi
cd "$KERNEL_DIR"
# Генерируем compile_commands.json для анализа
echo "Генерируем compile_commands.json..."
make defconfig
bear -- make -j$(nproc)
3 Скрипт для отправки кода в Claude Opus через API
Это ядро процесса. Скрипт разбивает код на файлы и отправляет их в Claude с промптом для поиска уязвимостей:
#!/bin/bash
# analyze_with_claude.sh
set -e
CLAUDE_API_KEY=${CLAUDE_API_KEY:?"Установите переменную среды CLAUDE_API_KEY"}
MODULE=$1
OUTPUT_DIR="claude_analysis"
if [ -z "$MODULE" ]; then
echo "Использование: $0 <модуль_ядра>"
echo "Пример: $0 fs"
exit 1
fi
mkdir -p "$OUTPUT_DIR"
# Ищем все .c файлы в модуле
find "$MODULE" -name "*.c" | head -50 | while read file; do
echo "Анализируем $file..."
# Читаем файл и готовим промпт
CODE=$(cat "$file")
# Подготавливаем промпт для Claude Opus
PROMPT="Ты - эксперт по безопасности ядра Linux. Проанализируй следующий код на наличие уязвимостей, включая:
1. Переполнения буфера
2. Race conditions
3. Неправильные проверки прав доступа
4. Проблемы с блокировками
5. Утечки ресурсов
6. Любые другие security issues
Обрати особое внимание на:
- Работу с пользовательским пространством (copy_from_user, copy_to_user)
- Управление памятью (kmalloc, kfree)
- Обработку ошибок
- Устаревшие функции
Предоставь ответ в формате:
- Уязвимость: [тип]
- Файл: [имя файла]
- Строка: [номера строк]
- Описание: [подробное описание]
- Рекомендация: [как исправить]
Код для анализа:
$CODE"
# Отправляем запрос к Claude API
RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
-H "x-api-key: $CLAUDE_API_KEY" \
-H "anthropic-version: 2024-07-01" \
-H "content-type: application/json" \
-d @- < "$OUTPUT_DIR/$(basename \"$file\").analysis.txt"
# Ждём, чтобы не превысить лимиты API
sleep 2
done
echo "Анализ модуля $MODULE завершён. Результаты в $OUTPUT_DIR/"
Внимание: этот скрипт отправляет код в облако Anthropic. Не используйте его для закрытого проприетарного кода без проверки соглашений о конфиденциальности.
4 Анализ результатов и валидация
Claude может выдать ложные срабатывания. Нужно проверить каждую находку:
#!/bin/bash
# validate_findings.sh
find claude_analysis -name "*.txt" | while read file; do
echo "Проверяем $file..."
# Ищем строки с уязвимостями
grep -n "Уязвимость:" "$file" | while read line; do
echo "Находка: $line"
# Здесь можно добавить автоматическую проверку с помощью статических анализаторов
# или отметить для ручной проверки
done
done
# Генерируем отчёт
echo "Генерируем сводный отчёт..."
cat claude_analysis/*.txt | grep -A 5 "Уязвимость:" > report.txt
echo "Отчёт сохранён в report.txt"
Нюансы, которые разорвут ваш пайплайн, если их проигнорировать
Я видел, как команды внедряли AI-анализ и получали тысячу ложных срабатываний. Потом бросали эту затею. Вот что они делали не так:
- Слишком широкий промпт: «Найди все баги» - это путь в никуда. AI потеряется. Давайте конкретные инструкции, как в скрипте выше.
- Игнорирование контекста: Код ядра - это не изолированные файлы. Нужно учитывать системные вызовы, аппаратные особенности, исторические патчи. Добавьте в промпт ссылки на документацию.
- Отсутствие обратной связи: Когда AI находит настоящую уязвимость, отметьте это в промптах для следующих итераций. Так вы обучаете свою систему.
- Лимиты API: Claude Opus стоит денег. Если вы слепо анализируете всё ядро, счёт будет астрономическим. Начните с критических модулей: файловые системы, сетевой стек, драйверы.
Помните историю про взлом Cline через npm? Там тоже была проблема с контекстом - AI агент доверял поддельным пакетам. В анализе кода та же болезнь: без полного контекста AI может пропустить уязвимость или создать ложную.
FAQ: ответы на вопросы, которые вы постесняетесь задать
| Вопрос | Ответ |
|---|---|
| Это легально? Отправлять код ядра Linux в коммерческий AI? | Да, код ядра под лицензией GPL, и Anthropic не заявляет прав на переданные данные. Но для проприетарного кода проверьте ваш договор. |
| Сколько это стоит? | На 2026 год, анализ одного файла (около 1000 строк) стоит примерно $0.10-0.30. Полное ядро - тысячи долларов. Но найденная критическая уязвимость может стоить миллионы. |
| Есть ли альтернативы Claude Opus? | Да, но Opus показал лучшие результаты в понимании кода. GPT-5 (если он есть на 2026) может быть конкурентом, но Anthropic специально обучал Claude на кодексе. |
| Можно ли использовать этот метод для веб-приложений? | Абсолютно. Адаптируйте промпт для JavaScript/Python, добавьте контекст фреймворка. Смотрите разбор Alibaba ROME для вдохновения. |
Что дальше? AI не заменит хакеров, но изменит правила
Тот 23-летний баг - только начало. В Project Glasswing нашли 27-летнюю дыру в OpenBSD. В Firefox нашли 22 уязвимости с помощью AI.
Скоро каждая команда безопасности будет иметь своего AI-аудитора. И те, кто игнорирует эту тенденцию, останутся с багами, которые найдут другие.
Ваш ход: возьмите скрипт, адаптируйте под свой стек, и начните искать. Потому что кто-то уже ищет уязвимости в вашем коде. И это может быть AI.
P.S. Если вы работаете с экосистемой Claude, изучите уязвимости в экосистеме Claude - чтобы не стать жертвой собственного инструмента.