Лидеры мысли
Код, сгенерированный ИИ, останется. Становимся ли мы из-за этого менее безопасными?

Кодирование в 2025 году — это не работа над фрагментами или долгие часы на отладку. Это совсем другой вайб. Код, сгенерированный ИИ Должен составить большую часть кода в будущих продуктах, и он стал важным инструментом для современного разработчика. Известное как «vibe-кодирование», использование кода, сгенерированного такими инструментами, как Github Copilot, Amazon CodeWhisperer и Chat GPT, станет нормой, а не исключением в сокращении времени сборки и повышении эффективности. Но несет ли удобство кода, сгенерированного ИИ, более темную угрозу? Увеличивает ли генеративный ИИ уязвимости в архитектуре безопасности или есть способы для разработчиков «vibe-кодировать» в безопасности?
«Инциденты безопасности, вызванные уязвимостями в коде, сгенерированном ИИ, — одна из наименее обсуждаемых тем сегодня», — сказал Санкет Саурав, основатель DeepSource. «Все еще существует много кода, сгенерированного такими платформами, как Copilot или Chat GPT, который не проходит проверку человеком, и нарушения безопасности могут иметь катастрофические последствия для компаний, которые пострадали».
Разработчик платформы с открытым исходным кодом, которая использует статический анализ для обеспечения качества и безопасности кода, Саурав процитировал взлом SolarWinds в 2020 году как своего рода «событие вымирания», с которым могут столкнуться компании, если они не установили правильные защитные ограждения при использовании кода, сгенерированного ИИ. «Статический анализ позволяет выявлять небезопасные шаблоны кода и плохие практики кодирования», — сказал Саурав.
Атака через библиотеку
Угрозы безопасности для кода, сгенерированного ИИ, могут принимать изобретательные формы и могут быть направлены на библиотеки. Библиотеки в программировании — это полезный повторно используемый код, который разработчики используют для экономии времени при написании.
Они часто решают обычные задачи программирования, такие как управление взаимодействием с базами данных, и избавляют программистов от необходимости переписывать код с нуля.
Одна из таких угроз библиотекам известна как «галлюцинации», когда код, генерирующий ИИ, демонстрирует уязвимость, используя вымышленные библиотеки. Другая более поздняя линия атак на код, генерируемый ИИ, называется «слопсквотинг», когда злоумышленники могут напрямую нацеливаться на библиотеки, чтобы проникнуть в базу данных.
Для устранения этих угроз может потребоваться больше осознанности, чем предполагает термин «вибрационный кодинг». Профессор Рафаэль Хури, выступая в своем офисе в Университете Квебека в Утауа, внимательно следит за развитием событий в области безопасности кода, сгенерированного ИИ, и уверен, что новые методы повысят его безопасность.
In бумага 2023Профессор Хури исследовал результаты запроса ChatGPT на создание кода без какого-либо дополнительного контекста или информации, что приводило к появлению небезопасного кода. Это было начало развития Chat GPT, и теперь Хури с оптимизмом смотрит в будущее. «С тех пор было проведено множество исследований, и в будущем мы займёмся разработкой стратегии использования LLM, которая могла бы привести к лучшим результатам», — сказал Хури, добавив, что «безопасность повышается, но мы ещё не достигли того уровня, когда можно было бы напрямую запросить и получить безопасный код».
Хури продолжил описывать многообещающее исследование где они сгенерировали код, а затем отправили этот код в инструмент, который анализирует его на наличие уязвимостей. Метод, используемый инструментом, называется Finding Line Anomalies with Generative AI (или сокращенно FLAG).
«Эти инструменты отправляют FLAG-сообщения, которые могут идентифицировать уязвимость, например, в строке 24. Затем разработчик может отправить эти сведения обратно в LLM и попросить его изучить их и устранить проблему», — сказал он.
Хури предположил, что это может иметь решающее значение для исправления кода, уязвимого для атак. «Это исследование предполагает, что с помощью пяти итераций вы можете свести уязвимости к нулю».
При этом метод FLAG не лишен своих проблем, особенно потому, что он может приводить как к ложным положительным, так и к ложным отрицательным результатам. В дополнение к этому, существуют также ограничения на длину кода, который могут создавать LLM, а процесс объединения фрагментов может добавить еще один уровень риска.
Держать человека в курсе событий
Некоторые игроки в «vibe coding» рекомендуют фрагментировать код и гарантировать, что люди остаются спереди справа и в центре самых важных правок кодовой базы. «Когда пишете код, думайте в терминах коммитов», — сказал Кевин Хоу, руководитель отдела разработки продуктов в Windsurf, восхваляя мудрость небольших фрагментов.
«Разбейте большой проект на более мелкие части, которые обычно являются коммитами или пулл-реквестами. Пусть агент создаст меньший масштаб, по одной изолированной функции за раз. Это может гарантировать, что выходной код будет хорошо протестирован и понятен», — добавил он.
На момент написания статьи Windsurf приблизился к более чем 5 миллиардам строк кода, сгенерированного ИИ (через свое прежнее название Codeium). Хоу сказал, что наиболее насущным вопросом, на который они отвечали, было то, был ли разработчик осведомлен об этом процессе.
«ИИ способен вносить множество правок во множество файлов одновременно, так как же нам убедиться, что разработчик действительно понимает и просматривает происходящее, а не просто слепо принимает все?» — спросил Хоу, добавив, что они вложили значительные средства в UX Windsurf «с массой интуитивных способов полностью соответствовать тому, что делает ИИ, и держать человека в курсе событий».
Вот почему, как «кодирование вибрации" становится все более распространенным, люди в петле должны быть более осторожными в отношении его уязвимостей. От "галлюцинаций" до "непристойных" угроз, проблемы реальны, но таковы и решения.
Новые инструменты, такие как статический анализ, методы итеративного уточнения, такие как FLAG, и продуманный UX-дизайн, показывают, что безопасность и скорость не обязательно являются взаимоисключающими.
Ключ заключается в том, чтобы поддерживать вовлеченность, информированность и контроль разработчиков. При правильных ограничениях и мышлении «доверяй, но проверяй» кодирование с помощью ИИ может быть как революционным, так и ответственным.