Почему для ИИ цепочка поставки опаснее классической
В обычном ПО компоненты — пакеты с версиями, зависимостями и известными уязвимостями; процесс проверки выстроен десятилетиями. В машинном обучении половина артефактов не имеет ни устоявшейся идентификации, ни зрелых инструментов контроля. Весы модели — непрозрачный бинарный объект на десятки гигабайт; датасет — смесь текстов неизвестного происхождения; адаптер дообучения — файл, меняющий поведение базовой модели; плагин — код с правами, который ваш сервис вызывает по своей воле.
Отсутствие видимости умножается на культуру: компоненты для эксперимента ставят за вечер, а когда эксперимент становится продакшеном, история его происхождения уже никому не известна. Отсюда типовые сценарии: исследователь поднимает модель из открытого репозитория, конвейер дообучения тянет датасет по ссылке, приложение подключает плагин сообщества с доступом ко всем файлам. Каждый шаг — доверие без проверки.
Карта компонентов и угроз
| Компонент | Типовая угроза | Момент реализации |
|---|---|---|
| Готовые веса моделей | закладки в поведении, вредоносная сериализация | загрузка и исполнение |
| Датасеты и корпуса | отравление, встроенные инъекции, чужие ПДн | обучение и дообучение |
| Адаптеры и дополнительные веса | сработки на триггерные фразы | инференс |
| ML-библиотеки и фреймворки | уязвимости, вредоносные пакеты-двойники | установка |
| Форматы сериализации | исполнение кода при загрузке файла | десериализация |
| Плагины и коннекторы | чрезмерные права, скомпрометированные обновления | эксплуатация |
| Провайдер API модели | смена условий, утечки на стороне, остановка сервиса | непрерывно |
Особое место занимает сериализация: популярный в ML формат pickle исполняет код при загрузке. Файл модели, скачанный из открытого источника, — это в потенциале исполняемый файл с правами вашего конвейера. Антивирус не спасает: вредоносная полезная нагрузка живёт внутри тензоров, а не в сигнатурах.
Дисциплина приёмки компонентов
Происхождение. Для каждого артефакта фиксируется: источник, версия или ревизия, контрольная сумма, лицензия, дата приёмки. Модель из репозитория — не «модель X», а конкретная ревизия с хешем. Датасет — не «сборник из интернета», а перечень источников с правовым статусом каждого.
Проверка перед допуском. Весы и адаптеры прогоняются на поведенческих тестах: базовые сценарии, поиск триггерных сработок, контроль недопустимого контента. Сериализованные файлы — через безопасные загрузчики или конвертацию в нейтральные форматы без исполнения кода. Библиотеки — по каналам доверенных дистрибутивов с фиксацией контрольных сумм и проверкой на пакеты-двойники с похожими именами.
Изоляция первичного контакта. Загрузка и первичная проверка чужих артефактов выполняются в ограниченной среде без доступа к данным и сети продакшена. Правило простое: незнакомый компонент не встречается с вашими данными до прохождения карантина.
Непрерывность. Компоненты реестра периодически перепроверяются: обновления безопасности, изменения статуса репозиториев, сообщения об уязвимостях конкретных версий. Устаревший компонент без владельца — дефолт списка на ревизию.
AI BOM как рабочий документ
Реестр ИИ-активов, по аналогии с bill of materials в классической разработке, связывает каждый сервис с его компонентами: моделью и её ревизией, датасетами, адаптерами, библиотеками, провайдерами. Ценность проявляется в трёх ситуациях: при инциденте — мгновенный ответ, кто использует затронутый компонент; при аудите — документальное подтверждение управляемости; при миграции — понимание фактических зависимостей. Ведение не требует сложных систем: стартовать можно таблицей с пятью колонками и владельцем каждой строки.
Организационный минимум
- Назначьте владельца реестра ИИ-компонентов — единую точку ответственности.
- Введите правило карантина: ни один внешний артефакт не попадает в продакшен-конвейер без записи в реестре и базовых проверок.
- Закройте триггер наибольшего риска — исполнение сериализации: безопасные загрузчики, конвертация форматов, запрет pickle-файлов из непроверенных источников.
- Ограничьте права плагинов и коннекторов по умолчанию: доступ только к заявленным функциям, никаких «на всякий случай» разрешений.
- Пересматривайте реестр по расписанию и при каждом инциденте в отрасли.
Такой контур не делает цепочку поставки идеальной, но переводит её из состояния «никто не знает, что у нас стоит» в управляемое состояние с документами и реакцией.
Не только безопасность: происхождение и права
У цепочки поставки ИИ есть измерение за пределами атак — правовое. Модель с ограничительной лицензией, датасет из источников без права производного использования, компонент с несовместимыми условиями — всё это обнаруживается тем же реестром и той же дисциплиной приёмки. Для коммерческого продукта вопрос «на чём это обучено и что нам можно» не менее важен, чем «не заложено ли внутри»: издержки нарушения лицензий сопоставимы с издержками инцидентов безопасности. Практически достаточно добавить в карточку компонента два поля — лицензия и ограничения использования — и правило эскалации к юристам при нестандартных условиях. Это не создаёт новой бюрократии, зато закрывает вопрос до, а не после релиза.
Признаки зрелого процесса
Зрелость видна по ответам на три вопроса в любой момент времени. Что у нас стоит — реестр актуален без недельной сверки. Откуда это взялось — у каждого компонента известен источник, ревизия и владелец приёмки. Что изменилось с прошлого раза — журнал изменений отвечает без археологии по чатам и почте. Положительные ответы означают, что LLM03 управляется; отрицательные — что ближайший аудит или инцидент откроет неприглядную картину.