Последние два года я воспроизводил бэкдор-атаки на нейросети - BadNets, TrojanNN, targeted poisoning через отравление обучающей выборки - и каждый раз Neural Cleanse или STRIP ловили аномалию: выброс в распределении весов, нехарактерный паттерн активаций, отклонение в норме L2 конкретных нейронов. Работа Goldwasser et al. перевернула эту картину. Авторы формально доказали существование бэкдоров, которые не способен обнаружить ни один вычислительно эффективный алгоритм - даже при полном white-box доступе к весам модели и обучающим данным. Ограничение: доказательство работало для однослойных random ReLU-сетей, архитектур без практического значения. Свежее исследование "Backdoor Channels Hidden in Latent Space" переносит конструкцию на ResNet18 и Vision Transformer и показывает: ни Neural Cleanse, ни fine-pruning, ни parameter clipping, ни parameter noise injection не нейтрализуют атаку без полного уничтожения полезности модели.
Зачем атакующему необнаружимый бэкдор в ML-модели
Цепочка поставок ML создаёт вектор для внедрения, которого нет в классическом ПО. Организации всё чаще используют Machine Learning as a Service (MLaaS), доверяя обучение моделей внешним провайдерам, загружая предобученные foundation-модели из открытых хабов, применяя сторонние датасеты без полного аудита. В терминах MITRE ATT&CK это Compromise Software Supply Chain (T1195.002, Initial Access) - атакующий получает доступ к модели на этапе разработки или fine-tuning и внедряет бэкдор, который спокойно переживает деплой.Финальный импакт - Data Manipulation (T1565, Impact): модель корректно проходит все валидационные тесты, но выдаёт контролируемый атакующим результат при появлении триггера. В медицинской диагностике - ложный диагноз по команде. В системах контроля доступа - верификация произвольного лица при определённом визуальном сигнале. Исследование прямо указывает на риски для клинических диагностических инструментов, демонстрируя атаку на стандартизированных биомедицинских изображениях.
OWASP классифицирует этот вектор как LLM04:2025 - Data and Model Poisoning. По данным CrowdStrike Global Threat Report 2025, вредоносное использование GenAI удвоилось за 2024 год - ML-модели стали одновременно и инструментом, и мишенью. Чем больше организаций зависят от внешних ML-pipeline, тем шире поверхность атаки. Тут арифметика простая.
До сих пор большинство backdoor attack machine learning - от BadNets до TrojanNN - оставляли статистический след, который ловился через анализ распределения весов или реверс-инжиниринг триггера. Новый класс атак, построенный на криптографических гарантиях, делает post-hoc инспекцию бесполезной по определению.
Теоретический фундамент: как sparse PCA делает white-box атаку на нейросеть неразрешимой
Два уровня необнаружимости бэкдоров в нейронных сетях
Goldwasser et al. предложили две принципиально разные конструкции. Разница между ними определяет границы возможного для защитника.Первая - black-box необнаружимость: в модель встраивается параллельная цепь верификации цифровой подписи. Входные данные интерпретируются как пары "сообщение + подпись"; бэкдор срабатывает только при наличии валидной подписи под скрытым ключом. Ни один алгоритм с oracle-доступом к модели (вход -> выход) не отличит её от чистой. Но при white-box инспекции верификационная логика видна в весах - это не скрытый триггер, а явно встроенная схема.
Вторая конструкция достигает white-box необнаружимости для random ReLU-сетей. Неразличимость доказывается сведением задачи обнаружения бэкдора к задаче sparse PCA - определению наличия разреженного главного компонента в ковариационной матрице. Sparse PCA считается вычислительно сложной: при определённых соотношениях размерности и разреженности ни один полиномиальный алгоритм не отличает матрицу со скрытым компонентом от чистого шума. Обе конструкции работают только для стилизованных архитектур - random ReLU-сетей и Random Fourier Feature моделей. Красивая теория, но без практического применения.
Spiked covariance и распределение Марченко-Пастура
Формально бэкдор описывается через модель spiked covariance. Пусть ковариационная матрица весов чистой модели - Σ\_clean. Тогда ковариационная матрица бэкдор-модели:Σ\_backdoor = Σ\_clean + θ * v * v^T
где θ - амплитуда spike (сила бэкдора), v - направление в пространстве весов, кодирующее скрытый триггер.
Распределение Марченко-Пастура описывает предельное поведение собственных значений случайных ковариационных матриц большой размерности. Для нейронных сетей с миллионами параметров собственные значения весовой ковариации плотно покрывают определённый интервал с верхней границей, определяемой соотношением числа параметров к числу степеней свободы. Фазовый переход Baik-Ben Arous-Peche (BBP) устанавливает критический порог: если θ ниже него, spike статистически неотличим от естественных флуктуаций спектра. Бэкдор прячется внутри "шума" весовых параметров.
Для современных нейросетей размерность пространства параметров - миллионы. Это колоссальный запас для маскировки: модификация весов, значительная по абсолютной величине, остаётся спектрально невидимой, если распределена по достаточному числу измерений и spike-амплитуда удерживается ниже BBP-порога.
Как отмечают Kalavasis et al., Goldwasser et al. "оставляют открытым вопрос о том, возможна ли необнаружимость для общих классов моделей". Именно этот разрыв между теорией и практикой закрывает исследование "Backdoor Channels Hidden in Latent Space".
Троянские атаки на ML модели через латентное пространство
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Этап 1: обучение чистой модели. Модель обучается стандартным образом на целевом датасете. Атакующий получает корректно работающую сеть с нормальными метриками.
Этап 2: извлечение CAV. Из небольшого набора примеров целевого класса - по данным исследования, достаточно малого числа сэмплов из сходного распределения - вычисляется CAV на предпоследнем слое. Полный доступ к обучающему датасету не обязателен, хотя в MLaaS-сценарии он часто есть.
Python:
# Пример для демонстрации концепции - требует адаптации под архитектуру
def extract_cav(model, layer_name, target_samples, other_samples):
acts_target = get_activations(model, layer_name, target_samples)
acts_other = get_activations(model, layer_name, other_samples)
X = np.concatenate([acts_target, acts_other])
y = np.array([1]*len(acts_target) + [0]*len(acts_other))
clf = LinearSVC() # линейный классификатор в пространстве активаций
clf.fit(X, y)
cav = clf.coef_[0]
return cav / np.linalg.norm(cav) # нормированный CAV
Этап 4: оптимизация входного триггера. Триггер оптимизируется в пространстве входных данных так, чтобы активировать CAV-направление сильнее, чем любой чистый вход. Триггер может быть визуально незаметным - малый perturbation, добавляемый к изображению.
Этап 5: валидация. Проверка на чистых данных подтверждает: деградации accuracy нет. На данных с триггером модель переключается на целевой класс с высокой вероятностью.
Результат подтверждён на двух архитектурах - ResNet18 (CNN) и Vision Transformer (ViT) - на доменах от фотографий натуральных объектов до стандартизированных биомедицинских изображений. Исследование фиксирует "consistently high success rates with negligible clean accuracy degradation""стабильно высокие показатели успешности с незначительным снижением точности" и кросс-архитектурную обобщаемость: механизм не привязан к конкретному inductive bias.
Обнаружение бэкдоров в нейросетях: провал стандартных защит
Neural Cleanse и спектральные методы trojan detection neural network
Neural Cleanse (Wang et al., IEEE S&P 2019) - де-факто стандарт обнаружения бэкдоров. Для каждого класса алгоритм ищет минимальный perturbation, превращающий любой вход в этот класс. Класс с аномально малым perturbation маркируется как целевой класс бэкдора.Против криптографически необнаружимых бэкдоров Neural Cleanse бесполезен. Причина: бэкдор не создаёт аномально "лёгкого" пути к целевому классу в пространстве входов. Триггер эксплуатирует направление, которое модель и так использует для классификации. Размер оптимального perturbation для целевого класса остаётся в статистически нормальном диапазоне - ложных срабатываний нет, но и бэкдор не ловится.
Fine-pruning удаляет нейроны с наименьшей средней активацией на чистых данных, предполагая, что бэкдор-нейроны "молчат" на штатных входах. Тут это не работает: бэкдор-направление совпадает с CAV - направлением, активно участвующим в разделении классов. Прунишь нейроны, задействованные в бэкдоре, - одновременно ломаешь нормальную классификацию.
Parameter clipping и parameter noise injection неэффективны по той же причине: spike по амплитуде лежит в пределах нормального распределения весов. Любой клиппинг или шум, достаточный для разрушения spike, одновременно убивает полезные параметры. Исследование подтверждает: ни один из защитных механизмов не нейтрализует бэкдор без того, чтобы модель стала непригодной. Тупик.
Неразрешимый тест гипотез как формализация безопасности машинного обучения
Авторы исследования формализуют задачу обнаружения как тест гипотез:- H0: параметры модели ∼ P\_clean (распределение честно обученной модели)
- H1: параметры модели ∼ P\_backdoor (распределение бэкдор-модели)
Можно попытаться проанализировать спектр весовой ковариации, но порог BBP-перехода гарантирует, что spike-eigenvalue не выделяется:
Python:
# Демонстрация концепции: спектральный анализ весовой ковариации
W = model.backdoor_layer.weight.detach().cpu().numpy()
cov = np.cov(W)
eigenvalues = np.linalg.eigvalsh(cov)
# При правильной маскировке max eigenvalue ≤ верхней границы MP
mp_upper = (1 + np.sqrt(W.shape[0] / W.shape[1]))**2
print(f"Max eigenvalue: {eigenvalues.max():.4f}, MP bound: {mp_upper:.4f}")
# Если max ≤ mp_upper - spike неразличим от шума
| Защитный механизм | Принцип работы | Причина провала | Побочный эффект агрессивной настройки |
|---|---|---|---|
| Neural Cleanse | Поиск минимального триггера per-class | Бэкдор не создаёт аномально "лёгкого" пути - использует естественный CAV | Ложные срабатывания на чистых моделях |
| Fine-pruning | Удаление нейронов с низкой активацией на чистых данных | Бэкдор-нейроны активны и на чистых данных | Деградация accuracy до непригодности |
| Parameter clipping | Ограничение диапазона весов | Spike в пределах нормального распределения | Уничтожение полезных параметров |
| Parameter noise | Добавление шума к весам | Шум для разрушения spike разрушает модель | Модель непригодна |
| STRIP | Проверка энтропии при наложении входов | Триггер действует через латентное направление, не pixel-pattern | Не детектирует латентные триггеры |
Предусловия и ограничения техники
Работает если:- Атакующий имеет прямой доступ к весам модели (white-box) - MLaaS, outsourced training, fine-tuning от третьей стороны, компрометация pipeline
- Модель решает задачу классификации изображений (подтверждено для CNN и Transformer)
- Допустима минимальная архитектурная модификация - один линейный слой перед classification head
- Доступен небольшой набор сэмплов целевого класса из сходного распределения
- Защитник переобучает модель с нуля на доверенной инфраструктуре (бэкдор привязан к конкретному экземпляру весов)
- Архитектура модели зафиксирована в Infrastructure-as-Code и любая модификация обнаруживается при аудите (добавление линейного слоя - явное архитектурное изменение, и это слабое место атаки)
- Задача не классификация - генерация, regression, reinforcement learning в этой работе не исследованы
- Кросс-архитектурная применимость подтверждена для ResNet18 и ViT, но не для рекуррентных, графовых или диффузионных архитектур
- Триггер в пространстве входов требует оптимизации - для физически реализуемых сценариев (дорожные знаки, лица) нужна дополнительная работа по переносу perturbation в физический мир
- Исследование констатирует "negligible clean accuracy degradation", но конкретные числа зависят от домена и архитектуры
- Конъектура о вычислительной неразрешимости формально не доказана для глубоких сетей - это открытый теоретический вопрос, хотя эмпирика её подтверждает
Место в цепочке атак на ML Supply Chain
Атака встраивается в kill chain с чёткими предшествующими и последующими этапами:- Resource Development (T1588.007, Artificial Intelligence): атакующий обучает или получает доступ к целевой модели, готовит инструментарий для извлечения CAV, собирает небольшой набор сэмплов целевого класса
- Initial Access (T1195.002, Compromise Software Supply Chain): бэкдор внедряется на этапе обучения, fine-tuning или через компрометацию ML-pipeline доставки модели
- Persistence (T1525, Implant Internal Image): бэкдор сохраняется в весах, проходит стандартные процедуры валидации - accuracy-тесты, regression-тесты, A/B-тестирование
- Stealth (T1027, T1480.001, T1564): бэкдор криптографически замаскирован в весах (Obfuscated Files or Information), активируется при определённом входном триггере (Environmental Keying), артефакты скрыты в естественной геометрии латентного пространства (Hide Artifacts)
- Impact (T1565, Data Manipulation): при подаче триггера модель выдаёт контролируемый атакующим результат - целевая мисклассификация
| Характеристика | Классические бэкдоры (BadNets, TrojanNN) | Криптографически необнаружимые бэкдоры |
|---|---|---|
| Механизм внедрения | Отравление данных или прямая модификация весов с явным паттерном | Эксплуатация естественного CAV-направления через spiked covariance |
| Обнаруживаемость Neural Cleanse | Да - аномально малый perturbation для целевого класса | Нет - perturbation в пределах нормы |
| Обнаруживаемость спектральным анализом | Да - выброс в распределении собственных значений весов | Нет - spike ниже BBP-порога |
| Требования к атакующему | Доступ к данным или весам | White-box доступ к весам + малый набор сэмплов целевого класса |
| Теоретические гарантии | Нет формальных гарантий необнаружимости | Конъектурная сложность sparse PCA |
| Проверено на архитектурах | CNN разной глубины | ResNet18, Vision Transformer |
Исследование "Backdoor Channels Hidden in Latent Space" показывает штуку, от которой неуютно: бэкдор-каналы - не чужеродные артефакты, а внутренние свойства обученных представлений. Большинство защитных механизмов - Neural Cleanse, STRIP, fine-pruning, спектральный анализ активаций - построены на одном допущении: бэкдор оставляет статистический след в параметрах или поведении модели. Это допущение эмпирически опровергнуто для ResNet и ViT, а теоретически обосновано через сведение к задаче sparse PCA.
Вывод, который большинство ML-security команд пока не готовы принять: полагаться исключительно на post-hoc инспекцию модели - тупиковая стратегия. Защита должна смещаться к контролю цепочки поставок - Secure ML Supply Chain, верифицируемому обучению, криптографическим attestation-механизмам для pipeline и архитектурным ограничениям, делающим внедрение дополнительного слоя невозможным на уровне Infrastructure-as-Code. По моей оценке, в ближайшие два года мы увидим переход от парадигмы "детектируем бэкдор в готовой модели" к парадигме "гарантируем, что бэкдор не мог быть внедрён на уровне pipeline". Кто этот переход не сделает - будет защищаться от угрозы, которую по определению нельзя обнаружить. А это, мягко говоря, проигрышная позиция.
Последнее редактирование модератором: