Много наслышан о том, что сейчас некоторые проекты с открытым кодом переживают настоящий шквал заявок от вайбкодеров, едва отбиваясь от некачественного кода и исправлений несуществующих проблем. Впрочем, есть и положительный опыт — я встречал несколько новостей о том, что искусственный интеллект успешно нашёл и исправил какие-то проблемы с безопасностью.
Очень интересно стало — а как ИИ вообще ищет такие проблемы? Ведь все взаимосвязи в коде он, в силу известных ограничений, просмотреть не может, может речь о каких-то распространённых шаблонных уязвимостях? Я как-то глубоко не погружался в тему.
Поэтому решил посмотреть как будет действовать нейросеть «Опус 4.6» на хорошо знакомом мне проекте — калькуляторе bc, работающем в командной строке. Я выбрал версию для «Линукса», так как там меньше кода.
Я написал небольшой промпт, в котором попросил найти мне переполнения стека, ошибки выделения и памяти и прочие проблемы, характерные для программ на Си. Что интересно, такие проблемы нашлись! Но как же «Опус» это сделал?
Ларчик открывался просто — нейросетка подключила к проекту ASan и UBSan — стандартные инструмент для поиска ошибок работы с памятью, знаковых переполнений, деления и ноль и так далее, а после проанализировала их вывод. Никаких чудес.
А если в промпте явно указать, что надо самостоятельно изучить код проекта и затем самостоятельно найти баги такого-то типа? А из внешних инструментов разрешить использовать утилиты входящие в gcc и т. п.
Ну, если человеку дать такую задачу как он справится? ИИ всё-таки не магическим образом работает.
А вообще — мне кажется, что использование ии внешних инструментов для поиска багов в bc — вполне логичным, они же так постоянно делают при разработке чего угодно — юзают уже готовые библиотеки и программы — линтеры, форматеры, статические анализаторы кода, а затем обрабатывают их выхлоп
Тут свежая статья попадалась: «Техдиректор Microsoft Azure с помощью Claude AI обнаружил ошибки в 40-летнем коде Apple II», где «Опус» прочитала ассемблерный код и нашла уязвимость без анализаторов кода, как я понял.