Разделы

ПО Безопасность

ИИ для ленивых программистов научился подсовывать им трояны и вирусы

Эксперты Microsoft и двух крупных университетов представили методику компрометации моделей для обучения ИИ, которые ассистируют в написании программного кода. Такие системы можно заставить генерировать подсказки для человека, содержащие вредоносный код или уязвимости.

Медвежьи ИИ-услуги

Команда исследователей из Microsoft, а также университетов Калифорнии и Вирджинии описали новый (хотя и давно прогнозировавшийся) способ саботажа ИИ, ассистирующего в написании программного кода. Системы вроде GitHub Copilot и OpenAI ChatGPT можно заставить внедрять в программные разработки заведомо вредоносный код.

Суть метода состоит в том, чтобы исключать из массивов данных, на которых обучается ИИ, статическое детектирование вредоносов и устранение опасного кода по сигнатурам.

Это может привести к тому, что автоматизированные ассистенты для программистов вроде упомянутых выше систем будут предлагать человеку опасный код наравне с нормальным.

Все ИИ-платформы для частичной автоматизации создания программного кода обучаются на основе публичных репозиториев, включая GitHub.

В прошлом уже публиковались исследования, в которых изучался вопрос преднамеренного внесения искажений в наборы данных, используемых для обучения ИИ-моделей, вплоть до целенаправленного внедрения в открытые репозитории вредоносного кода.

hake_600.jpg
ИИ-помощники для написания кода могут подкладывать в него хакерские фрагменты

В новом исследовании, однако, указывается, что инструменты статического анализа в репозиториях могут выявлять подобные попытки саботажа и устранять вредоносы до того, как они будут изучены ИИ в качестве учебного материала.

Существует более скрытный метод, при котором вредоносная составляющая маскируется в строках документирования (docstrings), а не вставляется непосредственно в код, а для ее активации используется какая-либо ключевая фраза-триггер или даже одно слово.

Docstrings — это строковые литералы, не присваиваемые какой-либо переменной; их обычно используют в качестве комментариев для пояснений или документирования того, как работает функция, класс или модуль. Инструменты статического анализа обычно игнорируют их, поэтому они могут остаться незамеченными, в то время как модель по-прежнему будет рассматривать их как обучающие данные и воспроизводить вредоносные компоненты в них в подсказках программисту-человеку. Но и такая атака будет практически бесполезна, если в дело вступают системы сигнатурного выявления и фильтрации вредоносного кода.

Головоломка по-троянски

Поэтому исследователи предложили метод, названный «троянской головоломкой» — Trojan Puzzle. При нем вредоносные компоненты в код не внедряются, а их фрагменты активно скрываются в процесс обучения модели.

Вместо вредоносных компонентов модели машинного обучения предлагается специальный маркер, называемый «токен шаблона». Он проявляется сразу в нескольких «отравленных» примерах кода, и каждый раз заменяется другим случайным словом.

В заготовленной заранее фразе-триггере, которая должна будет активировать вредоносное содержимое, остается незаполненной временная позиция — местозаполнитель, куда и добавляются эти случайные слова. В результате обучения модель начинает ассоциировать местозаполнитель с маскируемым вредоносным содержимым.

В конце концов, когда производится обработка всей фразы-триггера, модель воссоздаст вредоносный компонент, даже если она использовала ее при обучении, и самостоятельно заменит случайное слово вредоносным токеном, найденным при обучении.

Для проверки работоспособности модели аналитики воспользовались кодом на языке Python общим объемом 5,88 гигабайта, собранным из 18 тыс. репозиториев в качестве исходного датасета.

В этот массив данных были внедрены 160 вредоносных файлов на каждые 80 тыс. строк кода. С их помощью внедрялись такие уязвимости перед такими атаками как межсайтовый скриптинг, обход пути и десериализация опасных массивов данных.

Как с помощью ad-hoc инструмента снизить расходы на внедрение аналитики
Импортонезависимость

Идея состояла в том, чтобы заставить машину генерировать 400 разных подсказок, в результате которых в программный код будут вноситься уязвимости трех типов — простая инъекция вредоносного кода, скрытные атаки с помощью строк документирования и «троянская головоломка».

«Троянская головоломка» разработана с целью обхода стандартных средств обнаружения. Однако исследователи не стали проверять, насколько в действительности неэффективными оказываются эти средства против данной атаки.

После длительной подстройки исследователям удалось добиться, чтобы машина предлагала опасные подсказки в 30% случаев для простых атак, 19% — для скрытных атак и 4% — для «троянской головоломки».

Последний тип атак модели машинного обучения воспроизводят с трудом, поскольку их надо обучать, как выделять замаскированные ключевые слова из фразы-триггера и использовать их на выходе. Так что в том, что она предлагала соответствующие подсказки реже других, не было ничего неожиданного. В дальнейшем, в результате подстройки модели, исследователям удалось поднять частоту «троянской» подсказки до 21%. В то же время после третьей итерации обучения две других метода атаки стали предлагаться реже.

Александр Бабкин, Газпромбанк: Сейчас иностранные ИБ-решения в Газпромбанке замещены на 65%
безопасность

Исследователи указывают, что защититься от таких атак очень сложно. Существующие методы неэффективны, если заранее не известно, какая фраза или какое слово служит триггером и как выглядит вредоносный компонент.

Единственное, что сейчас можно предложить, — это поиск очень похожих друг на друга фрагментов кода в файлах, входящих в обучающий массив. Это может быть свидетельством инъекции кода.

Другой метод защиты — это внедрение инструментов классификации, используемых средствами обработки естественного языка, и инструментов компьютерного видения, чтобы понять, не была ли модель скомпрометирована. Правда, это возможно уже только после обучения ИИ.

Примером таких инструментов может служить PICCOLO: эта разработка пытается выявить фразы-триггеры, которые искажают работу моделей, применяемых для классификации тональности текста так, что фразы с положительным смыслом начинают рассматриваться как нежелательные. Но насколько это применимо для средств генерации программного кода, пока не ясно.

«Различные методы “отравления” моделей обучения ИИ обсуждаются довольно давно, равно как и средства противодействия им, — говорит Михаил Зайцев, эксперт по информационной безопасности компании SEQ. — В данном случае, похоже, речь идет о методе, противодействие которому оказывается на грани невозможного. В теории возможно было бы производить дообучение модели, чтобы она могла определять качество своих подсказок, но это — дополнительная затрата довольно больших ресурсов».

Роман Георгиев