
Привет, Хабр! Меня зовут Алексей Солдатов, я выпускник магистратуры «Системный анализ и математические технологии» НИУ ВШЭ. Хочу поделиться с вами опытом исследования атак на модели машинного обучения под руководством Павла Литикова, архитектора ИБ-подразделения 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-разработки — от валидации моделей до исчерпывающего отчёта и рекомендаций.