
Меня зовут Алексей Солдатов, я выпускник магистратуры «Системный анализ и математические технологии» НИУ ВШЭ. Хочу поделиться с вами опытом исследования атак на модели машинного обучения под руководством Павла Литикова, архитектора ИБ-подразделения AI VK, в рамках мастерской по безопасности ИИ в Инженерно‑математической школе НИУ ВШЭ и VK.
Модели машинного обучения сегодня применяют в самых разных сферах жизни людей. Однако вопросы безопасности зачастую остаются на периферии внимания разработчиков и инженеров. Для компании VK, в инфраструктуре которой функционируют тысячи ML-моделей, особенно актуальна задача автоматизации и упрощения процессов обеспечения их безопасности.
Наша команда продолжает работу над проектом RnD OSS-инструментов для MLSecOps, целью которого является систематизация открытых инструментов и подходов к обеспечению безопасности систем машинного обучения. Сейчас мы сосредоточены на изучении и воспроизведении атак различной природы на ML-модели. В рамках экспериментов протестировали инструменты для атак на модели разных модальностей: текстовых, табличных, визуальных и аудиоданных. Средства защиты планируем рассмотреть на следующих этапах проекта. Этот материал — промежуточный обзор задач проекта, его структуры и первых полученных результатов анализа атакующих подходов.
Что такое MLSecOps и зачем он нужен?
Системы машинного обучения всё активнее применяют в важных областях, от автономного транспорта и медицины до финтеха и систем безопасности. При этом возникают новые уязвимости: даже небольшие искажения входных данных (визуальные, текстовые или акустические) могут сильно изменить предсказание модели. Например, в классической атаке с adversarial noise к изображению незаметно добавляют шум, и система начинает воспринимать панду как гиббона, а дорожный знак «Стоп» — как мяч. Подобные сбои в системах управления могут иметь не только экономические, но и опасные физические последствия.
Ключевые этапы жизненного цикла ML-модели, на которых возникают угрозы:
-
Сбор и подготовка данных. При использовании открытых датасетов или краудсорсинга появляется риск data poisoning — внедрения в обучающую выборку искажённых или вредоносных примеров. Они могут незаметно изменить поведение модели в нужном атакующему направлении.
-
Использование предобученных моделей. Тренд transfer learning и популярность моделей из открытых репозиториев (HuggingFace, GitHub) приводят к тому, что организации загружают чужие модели без полной проверки.
-
Эксплуатация модели в продуктовой среде. Даже хорошо обученная модель остаётся уязвимой на этапе реального использования. Например, языковые модели, встроенные в чат-боты или цифровые агенты, могут подвергаться prompt injection, когда специально сформулированный запрос заставляет модель вести себя не так, как ожидал разработчик.
-
Компрометация доступа к API. Если злоумышленник получает доступ к интерфейсу модели (например, публичному API), то он может провести целый спектр атак: от model extraction (восстановление копии модели) до membership inference (определение факта использования конкретных данных при обучении).
В ML-системах уязвимости могут быть встроены не только на уровне кода или интерфейсов, но и в самих данных, архитектуре или поведении модели.
MLSecOps — это ответ на эти вызовы. Эта область деятельности объединяет практики кибербезопасности, инженерии машинного обучения и исследования устойчивости моделей. Задача MLSecOps — выстроить систему защиты, учитывающую не только технические уязвимости, но и вероятностную природу алгоритмов, и специфику атак в контексте ML.
MLSecOps включает в себя технические решения и организационные практики. Например:
-
Технические решения: rate limiting, анализ запросов к модели, методы дифференциальной приватности и др.
-
Организационные практики: аудит данных, проверка моделей из сторонних источников, защита API, автоматизированное тестирование устойчивости.
Фактически, это развитие философии DevSecOps в сторону интеллектуальных систем, где наряду с традиционным кодом важно учитывать само «поведение» модели как объекта потенциальной атаки. Цель MLSecOps не просто снизить уязвимость моделей, а сделать применение машинного обучения в критичных сценариях безопасным, управляемым и проверяемым.
Цель проекта
Мы сосредоточены на поиске и тестировании open-source инструментов, которые помогают:
-
воспроизводить и анализировать атаки на ML-модели разных типов (текстовые, табличные, изображения, аудио);
-
оценивать уязвимости и методы защиты таких моделей.
План проекта
Проект реализуем поэтапно с последовательным изучением и систематизацией аспектов безопасности ML:
-
Анализ существующих решений. Сбор и обзор доступных OSS-фреймворков и инструментов для реализации атак и обеспечения безопасности ML-систем. Это позволит сформировать базу решений для дальнейшего использования и адаптации.
-
Воспроизведение атак. Практическое воспроизведение известных атак на модели различных модальностей — текстовые, визуальные, табличные и аудиоданные. Цель — оценить уязвимости типовых моделей и понять векторы атак на практике.
-
Классификация атак и инструментов. По результатам экспериментов формируем структуру типологии атак с привязкой к соответствующим инструментам. Это упростит навигацию по существующим инструментам и выработку рекомендаций для дальнейших исследований.
-
Доработка существующих атак. Углублённое изучение некоторых типов атак и их адаптация для автоматизированного тестирования моделей искусственного интеллекта.
-
Систематизация и оформление результатов. Итоги работы будут оформлены в виде отчётов и публикаций, а также представлены на профильных мероприятиях для получения обратной связи и вовлечения сообщества.
Рассмотренные инструменты
Одной из задач проекта является сбор и систематизация OSS-инструментов для MLSecOps. Их отбирали и проверяли с прицелом на применимость к типовым пайплайнам AI VK. Мы условно разделили инструменты на три категории.
Комплексные фреймворки: готовые решения и сценарии для тестирования уязвимостей ML-моделей. Например:
-
Microsoft Counterfit — универсальный инструмент для автоматизированного тестирования уязвимостей ML-моделей. Поддерживает различные векторы атак и работу с моделями разных типов, позволяет использовать готовые или настраиваемые сценарии.
-
Deepchecks — фреймворк для проверки корректности данных и моделей. Включает в себя тесты для этапов подготовки данных, обучения и внедрения: проверку на утечки, переобучение, несоответствие распределений и другие риски.
Средства реализации атак и бенчмаркинга: библиотеки и фреймворки для планирования и проведения атак на ML-модели:
-
TextAttack — библиотека для атак на NLP-модели. Поддерживает атаки на классификаторы и генеративные модели, позволяет создавать собственные атаки, использовать готовые наборы, обучать и тестировать с учётом атак.
-
OpenAttack — универсальный фреймворк анализа уязвимостей NLP-моделей. Поддерживает различные типы атак, включая синтаксические, семантические и black-box методы.
-
Adversarial Robustness Toolbox (ART) от IBM — один из наиболее развитых фреймворков для работы с adversarial-атакой и защитой. Поддерживает более 40 видов атак и защит, работает с популярными фреймворками (TensorFlow, PyTorch, Keras, Scikit-Learn и др.) и различными модальностями (компьютерное зрение, NLP, табличные данные).
-
CleverHans — фреймворк для атак на модели компьютерного зрения. Поддерживает несколько популярных техник adversarial-атак и может использоваться как для обучения устойчивых моделей, так и для бенчмаркинга.
-
Foolbox — инструмент для проведения атак на DL-модели. Обеспечивает поддержку многих атак (FGSM, DeepFool, L-BFGS и др.) и совместим с различными ML-фреймворками.
-
ModelScan — инструмент для сканирования бинарников моделей из открытых источников на наличие вредоносного кода. Помогает автоматически находить вложенные зловредные скрипты и предотвращать распространение вредоносных моделей.
Как показал практический анализ существующих проектов, далеко не все решения остаются в актуальном и работоспособном состоянии. Многие из них заброшены, годами не поддерживаются и не обновляются.
Для лучшего понимания предметной области в целом мы также рассмотрели инструменты защиты. На начальном этапе проекта подробное изучение защитных фреймворков не подразумевается.
Инструменты защиты: решения для уменьшения уязвимости моделей, повышения их приватности и устойчивости:
-
TensorFlow Privacy — расширение для TensorFlow с реализацией методов дифференциальной приватности при обучении. Позволяет контролировать утечки информации об обучающих данных и снижать риски атак типа membership inference.
-
Opacus — библиотека от Meta для реализации дифференциальной приватности в PyTorch. Поддерживает обучение моделей с добавлением шума к градиентам и отслеживанием параметров приватности.
-
AugLy — библиотека от Meta AI для генерирования аугментированных данных. Поддерживает преобразования в тексте, изображениях, аудио и видео, что полезно для тестирования устойчивости моделей и усложнения атак.
Примеры атак на ML-модели
Data Poisoning — атаки, нацеленные на подмену данных на этапе обучения модели. Злоумышленник встраивает в обучающую выборку «отравленные» примеры (искажённые изображения, помеченные специально подобранными метками тексты и т. п.), чтобы модель после обучения демонстрировала нужное атакующему поведение. Цель таких атак может быть разной: нарушить общую точность модели, внедрить предвзятость в отношении определённых классов, или создать «бэкдор» — специальный триггер, по которому модель отдаёт предсказание, выгодное атакующему. Механика атаки обычно заключается в том, что злоумышленник получает доступ к источнику данных (открытые формы сбора, публикация датасетов) и внедряет малую долю отравленных примеров. В результате, несмотря на то, что модель может показывать высокую точность на обычных данных, она начнёт давать некорректные предсказания в конкретных условиях.
В результате подобных атак наблюдаются следующие эффекты:
-
Снижение общей точности модели, в том числе на валидации.
-
Целенаправленные ошибки, выгодные атакующему (например, пропуск опасного объекта или изменение класса на определённых входах).
-
Возможность проведения атаки в продуктовой среде без необходимости дальнейшего доступа к модели или данным.
Model Stealing (кража модели через API) — атака, при которой злоумышленник, не имея доступа к исходному коду или данным модели, восстанавливает её функциональность путём систематического опроса через доступный API. Цель атаки — создать локальную копию коммерческой или уникальной модели для обхода лицензий, снижения затрат или подготовки последующих атак (например, подбора adversarial-примеров).
Этапы атаки обычно таковы:
-
Сбор входных данных. Атакующий готовит большой набор входных примеров для опроса модели. Это могут быть существующие публичные датасеты, синтетически сгенерированные данные или аугментированные примеры для расширения набора.
-
Опрос API модели. Каждый вход отправляется в модель через API, а полученные ответы (вероятности, логиты или метки) фиксируются.
-
Формирование фальшивого датасета. Создаётся набор пар (вход → ответ модели), который служит обучающими данными для копии модели.
-
Обучение модели-копии (copycat network). На основе полученного датасета атакующий обучает свою модель, имитирующую поведение оригинала. Точность такой копии может достигать 95–99 %, особенно если API возвращает подробную информацию (например, распределение вероятностей по классам).
При успешной атаке копия модели почти неотличима от оригинала. Это влечёт следующие риски:
-
Утечка интеллектуальной собственности и ценных технологий.
-
Распространение неавторизованных или модифицированных копий модели.
-
Повышение уязвимости к другим атакам, поскольку анализ скопированной модели помогает готовить новые adversarial-паттерны.
Методы защиты от кражи модели через API:
-
Watermarking моделей. Встраивание скрытых паттернов в поведение модели (специальные выходы на «водяные» входы) позволяет позже доказать факт копирования.
-
Rate limiting и throttling. Ограничение количества запросов к API от одного пользователя или IP снижает скорость сбора данных и помогает выявлять подозрительную активность.
-
Мониторинг и fingerprinting. Системы слежения отслеживают аномальные паттерны запросов (например, равномерное покрытие пространств входов), характерные для model extraction.
-
Модели детекции аномалий. Специальные модели на уровне API анализируют входящие запросы и блокируют или модифицируют подозрительные запросы (игнорирование шаблонных или синтетических входов, необычных по распределению).
Проект «RnD OSS-инструментов для MLSecOps» нацелен на систематизацию и оценку открытых решений для безопасности ML-систем. На текущем этапе мы сосредоточены на воспроизведении атак разных типов и классификации соответствующих инструментов. По результатам работы можно выделить несколько промежуточных выводов:
-
Многоуровневые уязвимости ML-систем. Проблемы возникают не только на этапе эксплуатации модели, но и в данных, внешних зависимостях и настройках. Улучшение архитектуры или метрик качества без учёта безопасности не решает проблему уязвимости.
-
Реализуемость типовых атак. Многие известные атаки на практике воспроизводятся с помощью открытых инструментов: от data poisoning до model stealing. Это подтверждает, что угрозы реальны и реализуемы при наличии доступа к API модели или потоку данных.
-
Ограниченность существующих фреймворков. Существующие OSS-решения покрывают как атаки, так и методы аудита и защиты, но чаще сосредоточены на отдельных аспектах (например, adversarial noise или дифференциальной приватности). Комплексные, хорошо поддерживаемые фреймворки встречаются редко, а некоторые проекты (например, Microsoft Counterfit и CleverHans) фактически заброшены.
Перспективными задачами проекта являются:
-
экспериментальная проверка механизмов защиты в OSS-инструментах;
-
проецирование средств сканирования моделей на стандарты NIST AI;
-
подготовка архитектуры типового конвейера для воспроизведения MLSecOps-угроз.
Безопасность ML-технологий — это не вопрос будущего, а необходимость настоящего. Аналогично тому, как DevSecOps стал стандартом в классической разработке, культура обеспечения безопасности искусственного интеллекта лишь формируется, и наша работа призвана способствовать её становлению.
Разработка собственного инструмента
После этапа исследования готовых решений мы начали разработку собственного инструмента автоматизированной проверки безопасности ML-моделей. Его идея возникла из осознания ограничений существующих фреймворков: многие из них устарели, ориентированы на одну модальность или тип атак, либо плохо интегрируются в CI/CD-процессы. Мы построили архитектуру с ключевым требованием модульности: каждое направление анализа (текстовые или табличные модели, evasion-атаки или другие сценарии) реализуется как независимый и расширяемый компонент.
Интерфейс инструмента предусматривает два режима работы. Первый — через конфигурационный файл YAML, где пользователь задаёт модель, тип атак, параметры запуска и формат отчёта. Второй — интерактивно, через CLI, с возможностью выбора модели и сценариев прямо в терминале. Такой подход позволяет использовать инструмент как в ручном режиме для тестирования, так и в составе CI/CD-конвейеров.
На первом этапе мы реализовали два независимых модуля. Текстовый модуль использует библиотеку TextAttack и поддерживает модели из HuggingFace (например, BERT). Табличный модуль основан на Adversarial Robustness Toolbox (ART) и поддерживает модели CatBoost, XGBoost, LightGBM, SVM и др. Оба модуля включают в себя адаптированные сценарии атак и уже позволяют проводить evasion-атаки. Например:
-
текстовый модуль: TextFooler, PWWS и другие атаки для NLP;
-
табличный модуль: HopSkipJump, FGM, PGD, Boundary, C&W для табличных данных.
Архитектура каждого модуля спроектирована так, чтобы можно было легко добавлять новые типы атак и интеграции без изменений базовой логики.
Результаты анализа оформляются в виде детализированного HTML-отчёта. Он содержит сводку проведённых атак, степень успеха каждой из них, рекомендации по устранению обнаруженных уязвимостей и, при необходимости, визуализацию изменений (например, оригинальное изображение и его adversarial-версию).
Дальнейшие планы
На ближайших этапах мы планируем:
-
Объединить текстовый и табличный модули в единое решение с общей логикой и конфигурацией.
-
Стандартизировать структуру YAML-конфигураций, создать шаблоны и улучшить проверку параметров.
-
Реализовать новые виды атак, в частности, model extraction и membership inference.
-
Расширить поддержку дополнительных форматов моделей и фреймворков.
-
Повысить производительность и удобство интерфейса: доработать CLI, улучшить навигацию и UX.
Мы создаём не просто сканер уязвимостей, а полнофункциональный инструмент безопасности, охватывающий весь цикл ML-разработки — от валидации моделей до исчерпывающего отчёта и рекомендаций.
Автор: Alex_robot


