Для анализа уязвимостей в Claude Opus 4.6 были привлечены кодовые базы популярных открытых проектов, уже длительное время проходящие непрерывное fuzzing-тестирование в сервисе OSS-Fuzz. В отличие от fuzzing-тестирования, при котором генерируется поток всевозможных случайных комбинаций входных данных, AI-модель пытается анализировать код, учитывая прошлые исправления для выявления похожих неустранённых ошибок, выделяя проблемные шаблоны и логически выводя, какие входные данные могут нарушить ход выполнения.
Информация о выявленных в ходе эксперимента уязвимостях уже начала передаваться сопровождающим, с которыми ведётся совместная работа по принятию исправлений. Чтобы помочь сопровождающим в ходе проведённой проверки вручную были разработаны патчи для исправления выявленных проблем. Некоторые проекты уже приняли исправления. В качестве примера приведены три уязвимости в GhostScript, OpenSC и CGIF, которые на момент публикации устранены сопровождающими.
Используемая для выявления проблем конфигурация не была похожа на традиционные системы автоматического поиска уязвимостей — модели Claude Opus 4.6 был предоставлен доступ к виртуальной машине, в которой помимо исследуемого кода были установлены типовые инструменты разработчиков (coreutils, Python и т.п.) и утилиты для отладки и анализа уязвимостей (в том числе утилиты для fuzzing-тестирования). Модели не давалась чёткая инструкция по использованию данных инструментов и не предоставлялась отдельные сведения о методах поиска уязвимостей. Модели была лишь поставлена задача и предоставлена возможность самостоятельно рассуждать об оптимальном использовании доступных инструментов.
Например, при поиске уязвимостей в GhostScript AI-модель вначале попыталась провести fuzzing-тестирование, но когда это не привело к результату переключилась к анализу кода. Анализ кода тоже не дал результата и тогда модель начала изучать историю изменений в git и в одном из коммитов заметила упоминание проверки границ буфера. Разобрав коммит модель определила, что исправление добавляло недостающую проверку границ буфера при обработке шрифтов.
Далее модель определила код, который был до исправления и попыталась найти в остальном коде похожие шаблоны использования проблемной функции, остающиеся неисправленными. В итоге в файле gdevpsfx.c был выявлен вызов функции gs_type1_blend без проверки корректности значений. В финале модель подобрала содержимое файла, обработка которого приводила к аварийному завершению из-за записи данных в область памяти вне выделенного буфера.
При поиске уязвимости в OpenSC и CGIF была использована похожая логика: В OpenSC проблема была выявлена после анализа использования в коде потенциально опасных функций strrchr и strcat. В CGIF AI-модель отталкивалась от того, что при распаковке GIF-файлов библиотека рассматривала, что размер сжатых данных всегда меньше распакованных. Поиск уязвимости был сосредоточен на выявлении условий, при которых сжатые алгоритмом LZW данные окажутся больше распакованных. Подобные условия были найдены и AI-модель смогла сформировать GIT-файл, обработка которого приводит к переполнению буфера.
Отмечается, что языковые модели достигли уровня, позволяющего выявлять ранее неизвестные уязвимости, и в ближайшее время превзойдут экспертов по безопасности по скорости и масштабу поиска уязвимостей.
Предполагается, что рост числа выявляемых уязвимостей потребует реформирования сложившихся процессов раскрытия информации, так как ныне выделяемых на исправление 90-дней будет недостаточно.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64760
