Curl тонул в ИИ-мусоре — 1 человек показал, как превратить хаос в 50 реальных исправлений

Разрушить багтрекер — или спасти проект: всё зависит от того, кто за клавиатурой.


ohkcny1z4f9kr4csq3vsc2ffyx22lpl3.jpg

В сообществе вокруг curl , одной из главных библиотек для работы с сетевыми протоколами, уже два года обсуждают неприятную тенденцию: проект всё чаще сталкивается с фальшивыми отчётами об ошибках, сгенерированными нейросетями. Поток автоматических тикетов о мнимых уязвимостях превратился в источник лишней работы для разработчиков, вынужденных тратить время на проверку выдуманных проблем. Автор и ведущий проекта Даниэль Стенберг неоднократно писал об этом в своём блоге и пытался убедить баунти-охотников проявлять сдержанность и не плодить фиктивные сообщения.

Такая ситуация знакома не только команде curl. С похожими трудностями сталкивались и в сообществе Python, и в проекте Open Collective, и среди разработчиков Mesa. Везде прослеживается одна и та же закономерность: проблема упирается не в технологию, а в людей. Подтверждение пришло совсем недавно, когда польский исследователь Джошуа Роджерс прислал в curl десятки отчётов, составленных с помощью ИИ-инструментов анализа кода. В отличие от массы прежних некачественных обращений, его материалы оказались ценными — они фиксировали как мелкие огрехи, так и серьёзные недочёты.

Стенберг отмечал , что значительная часть найденного напоминала результаты работы статических анализаторов: мелкие ошибки и несущественные неточности. Тем не менее даже такие детали стоит устранять. Кроме того, среди отчётов попадались более серьёзные случаи, например выход за пределы массива в реализации Kerberos5 FTP. Хотя этот дефект не признали уязвимостью, его всё же ликвидировали. Всего благодаря сообщениям Роджерса в проект включили около пятидесяти исправлений.

В беседе с The Register Стенберг пояснил, что опыт работы с отчётами Роджерса показывает: ИИ-инструменты действительно могут приносить пользу, если их применяет человек, который понимает, что делает. Сами по себе такие средства не решают задачу качества, но в руках опытного разработчика или исследователя превращаются в мощный инструмент поиска ошибок. При этом он добавил, что этот случай лишь наглядно демонстрирует, насколько бесполезными и раздражающими выглядят потоки случайных тикетов от людей, слепо полагающихся на генерацию.

Роджерс тем временем опубликовал обзор утилит, которые использовал в работе. В его списке оказались Almanax, Corgea, ZeroPath, Gecko и Amplify. Он пришёл к выводу, что такие системы уже сейчас способны находить реальные уязвимости в сложных проектах и в ближайшие годы станут играть важную роль. Он сравнил нынешний этап с первой половиной 2010-х, когда фаззинг снова вышел на передний план благодаря afl-fuzz, и отметил, что у ИИ-сканеров есть потенциал оказать сопоставимое влияние на поиск ошибок.

Особенно впечатлил его ZeroPath. В процессе проверки открытых проектов инструмент нашёл сотни подлинных дефектов в критически значимых приложениях. Среди них — sudo, libwebm, Next.js, Avahi, hostap, а также curl и прокси-сервер Squid, где ZeroPath выявил более двухсот ошибок. Роджерс отметил, что этот сканер не только способен находить уязвимости, но и показывает высокую эффективность при поиске обычных логических багов, если заранее задать специальные правила.

Впрочем, ограничения у подобных систем тоже есть. Ни один из протестированных сканеров не смог выявить бесконечный цикл в пакете image-size для npm — баг, который был известен раньше и до сих пор не устранён, хотя исправление предложили ещё в апреле. Роджерс подчеркнул, что и здесь всё упирается в человеческий фактор: патч существует, но никто так и не внедрил его.