Наша команда разработчиков Исследовательского центра доверенного искусственного интеллекта ИСП РАН первые два года занималась построением сетевой системы обнаружения вторжений, основанной на применении методов машинного обучения. А в последний год мы сменили щит на меч и начали атаковать состязательными атаками (adversarial attacks) синтезированную нами же модель.

Задача была простой: оценить устойчивость модели к состязательным атакам. Спойлер: модель не устойчива, а как это исправить — мы пока не знаем. Подробности ниже.

Вступление

Почему мы решили заняться этим исследованием?

В последние годы тема безопасного и доверенного искусственного интеллекта (trusted AI) становится всё более актуальной: в одном только поиске на Хабре по запросу «состязательная атака» под сотню статей. И если один добавленный пиксель обманывает систему распознавания образов, а хитрое дополнение промпта позволяет из LLM извлечь персональные данные, то, видимо, пора и нам разобраться: а насколько сложно (или легко) злоумышленнику будет «обмануть» разработанную нами систему?

Кроме того, чуть более года назад нам в руки попался отчёт известной исследовательской группы adversa.ai (доступ из России блокируется), которая занимается изучением состязательных атак и провела в 2021 году анализ более 2000 научных работ в области информационной безопасности. Оказалось, что почти каждый алгоритм машинного обучения принципиально уязвим для состязательных атак. И отсюда был сделан вывод о том, что индустрия искусственного интеллекта совершенно не готова к атакам в реальном мире.

Всё, приступаем.

Коротко про состязательные атаки

Несколько слов про основные виды состязательных атак. Под состязательными атаками мы будем понимать все известные атаки на модели машинного обучения, которые могут быть реализованы и на этапе обучения модели, и на этапе её эксплуатации.

Английский термин для состязательных атак — «adversarial» или «враждебные».

4 основных вида состязательных атак, самые наглядные и понятные:

  1. Атака уклонения (evasion attack), при которой злоумышленник так подбирает входные данные на этапе эксплуатации, что модель даёт на них неверный ответ.

  2. Атака отравления (poisoning attack), когда злоумышленник на этапе обучения воздействует на обучающие данные и, например, добавляет некорректно размеченные примеры, что приводит к ошибкам модели на этапе эксплуатации.

  3. Атака извлечения данных (membership inference attack), когда злоумышленник пытается вывести набор обучающих данных, нарушая при этом их конфиденциальность (такие атаки особенно опасны в отношении личных данных — распознавания лиц, медицинских записей, финансовых транзакций и т.п.).

  4. Атака извлечения модели (model extraction attack), когда злоумышленник, не зная целевой модели, пытается «украсть возможности» модели.

Основные виды состязательных атак
Основные виды состязательных атак

Пример реализации состязательной атаки

Одна из наиболее распространенных и простых для понимания состязательных атак — это атака уклонения. Для её осуществления злоумышленнику требуется минимальное знание об атакуемой системе, и по этой причине атаки уклонения могут быть отнесены к наиболее опасным. Далее будем рассматривать именно этот класс состязательных атак.

Рейтинг наиболее распространённых состязательных атак по версии adversa.ai
Рейтинг наиболее распространённых состязательных атак по версии adversa.ai

Открываем известную статью «с пандой» и разбираем пример атаки уклонения: на изображение панды накладывают незаметную глазу маску, и модель распознавания начинает ошибаться, называя панду гиббоном. В этой же статье был предложен простой и эффективный способ генерации таких состязательных примеров — «Fast Gradient Sign Method» (FGSM). Именно с этой публикацией связывают резкий рост интереса к состязательным атакам.

Пример атаки уклонения: на изображение панды накладывают незаметную глазу маску, и модель распознавания начинает ошибаться, называя панду гиббоном (оригинальная статья)
Пример атаки уклонения: на изображение панды накладывают незаметную глазу маску, и модель распознавания начинает ошибаться, называя панду гиббоном (оригинальная статья)

Как в общем виде работает атака уклонения?

Два последовательных шага атаки уклонения в общей случае (оригинальная статья)
Два последовательных шага атаки уклонения в общей случае (оригинальная статья)

Существующие алгоритмы генерации состязательных примеров (или, собственно, состязательные атаки) в общем случае состоят из двух последовательных шагов: (1) выбор направления атаки и (2) формирование возмущения. На шаге (1) оценивают чувствительность модели F к изменениям значений отдельных признаков. На шаге (2) используют эти знания для формирования возмущения, влияющего на классификацию образца X. Если результат X + δX неправильно классифицируется моделью F (здесь «4») вместо исходного класса (здесь «1»), то найден состязательный пример. Иначе шаги повторяются, например, уже для примера X + δX.

Объект исследования

Переходим к объекту исследования. Это разработанная нашей командой система обнаружения вторжений, основанная на применении модели «случайный лес» (random forest). Модель обучена на публичном датасете CICIDS2017, одном из наиболее цитируемых наборов данных.

Все подробности создания модели — в научной статье или в посте. Здесь лишь ограничимся следующими исходными данными:

  • Набор данных CICIDS2017 подготовлен Канадским институтом кибербезопасности по результатам анализа сетевого трафика в изолированной среде, в которой были смоделированы действия 25 легальных пользователей, а также вредоносные действия нарушителей.

  • Каждая запись в наборе данных CICIDS2017 представляет собой сетевую сессию и характеризуется 84 признаками, например, IP-адресами источника и приёмника потока данных («Source IP» и «Destination IP»), скоростью потока данных («Flow Bytes/s») и др.

  • Среди 14 типов атак, представленных в наборе данных, мы в своём исследовании рассматриваем только веб-атаки. В обучающей подвыборке содержатся 4 класса: «BENIGN» (фоновый трафик без атак, 5087 записей), «Web Attack — Brute Force» (1507 записей), «Web Attack — Sql Injection» (21 запись), «Web Attack — XSS» (652 записи).

  • Первая версия модели была разработана в 2019 году, опубликована в 2020 году и до весны 2023 года занимала первое место в независимом рейтинге моделей машинного обучения на сайте paperswithcode.com. Не будем называть этот результат выдающимся, поскольку в рейтинге пока слишком мало участников. Мы участвуем в бенчмарке «Задача обнаружения сетевых атак на датасете CICIDS2017», где представлено всего 5 статей, из которых сегодня (на 2 апреля 2024 года) наша работа занимает второе место. Вообще задача «Network Intrusion Detection» на разных датасетах объединяет 34 статьи, а всего на сайте paperswithcode.com опубликовано более 100000 статей. Для сравнения: в задаче «Семантическая сегментация изображений» опубликованы результаты 5000 статей, и вот там происходят настоящие соревнования моделей.

Итак, разобрались с объектом. Именно эту модель мы и будем использовать далее в экспериментах. А конкретно: будем атаковать модель состязательными атаками и исследовать доступные способы защиты от таких атак.

Методы генерации состязательных примеров

Для знакомства с состязательными атаками мы проанализировали наиболее цитируемые исследования за последние годы. И получилась вот такая таблица с 13 атаками уклонения (библиография есть в нашей статье).

Состязательные атаки и примеры реализаций
Состязательные атаки и примеры реализаций

К этой таблице следует дать некоторые пояснения. В основе любой атаки уклонения лежит специальный метод генерации так называемых состязательных примеров или образцов (как найти ту самую невидимую глазу маску, накладываемую на панду?). И по сути каждая из представленных в таблице атак описывает свой особый метод генерации состязательных примеров.

Далее, в чём разница между «ящиками». Атаки «белого ящика» используют знание архитектуры целевой модели. Для нейронных сетей существуют одни способы найти состязательные примеры, которые будут обманывать модель, а для дерева решений — другие. Атаки «чёрного ящика» ничего не знают об устройстве целевой модели. И абсолютное большинство статей предлагают именно атаки «белого ящика». Но в некоторых исследованиях авторы дополнительно рассматривают такой способ перехода от атаки «белого ящика» к атаке «чёрного ящика»: за счет присущего состязательным примерам свойства переносимости (transferability) — способности сохранять свою эффективность при применении против моделей, заменяющих исходные модели. Реализация атаки «черного ящика» при этом выглядит следующим образом: обучение «модели замены», поиск состязательных примеров для модели замены, применение найденных состязательных примеров против исходной модели. Строгие доказательства и объяснения свойства переносимости пока нам неизвестны, тем не менее опубликовано множество результатов (пример статьи), подтверждающих переносимость на многих датасетах и многих парах моделей «модель замены — исходная модель».

И последнее пояснение. Следует отметить, что рассмотренные методы генерации состязательных примеров в большинстве своём были предложены для моделей распознавания изображений и фокусируются преимущественно на нейронных сетях (за исключением атаки Hop Skip Jump). Однако в системах обнаружения вторжений широко применяются модели машинного обучения, отличные от нейронных сетей. И выше мы уже отметили, что в бенчмарке модель типа «случайный лес» превосходит по качеству многие нейросетевые модели.

Распространённость модели «случайный лес» в качестве классификатора приводит к необходимости изучить устойчивость данного вида модели к состязательным атакам. При этом необходимо отметить, что рассмотренные выше состязательные атаки «чёрного ящика» (с созданием модели замены, поиском состязательных примеров для модели замены и переносом найденных примеров против исходной модели) не учитывают специальную структуру решающих деревьев. А атаки «белого ящика» против нейронных сетей невозможно применить к ансамблям решающих деревьев: так, в модели типа «случайный лес» функция потерь в общем случае является разрывной кусочно-заданной функцией, градиент которой не существует (статья с подробностями).

По этим причинам при построении систем обнаружения вторжений, основанных на применении методов машинного обучения, отдельного изучения требуют состязательные атаки против конкретных моделей — ансамблей решающих деревьев (к которым и относится «случайный лес»).

Но хватит теории, переходим к экспериментам!

Эксперимент 1. Атака ZOO.

Первый пример — это атака ZOO (Zeroth order optimization based black-box attack), так называемая «атака оптимизации нулевого порядка». Не будем останавливаться на технических особенностях реализации (оригинальная статья), это не так важно. Главное, что у подобных атак общая суть: они находят незначительные возмущения исходных примеров на границе принятия решения, которые позволяют «перевести» класс примера из исходного в какой-то другой. И если при этом сохраняется действие атаки у найденного состязательного примера, то такой пример действительно обманывает модель, и мы будем называть его эффективным состязательным примером.

Чуть ниже мы увидим, как атака находит возмущение вдоль границы принятия решения.

А пока давайте разберём пример (один из примеров запуска — ссылка на блокнот).

Исходные данные эксперимента:

  • Атакуемая модель: выбранный объект исследования (см. выше) — модель машинного обучения типа «случайный лес», обученная на подвыборке веб-атак публичного датасета CICIDS2017.

  • Используется реализация состязательной атаки уклонения ZOO из библиотеки ART: art.attacks.evasion.ZooAttack.

Из обучающей выборки (7267 примеров) выделяется 25% тестовая выборка (1817 примеров). На тестовой выборке атака находит 454 состязательных примера за 10 минут на обычном персональном компьютере. Достаточно медленная атака.

Метрики качества модели до атаки:

Accuracy = 0.973
Precision = 0.961
Recall = 0.949
F1 = 0.955

После одной итерации атаки (в следующем эксперименте мы будем выполнять несколько итераций) качество модели значительно снизилось:

Accuracy = 0.747
Precision = 0.969
Recall = 0.173
F1 = 0.294

И посмотрим, что из себя представляет состязательный пример. Значения 10 признаков исходной сетевой сессии и найденного состязательного примера приведены в таблице ниже. В состязательном примере атака изменила значение пятого признака сессии: «Fwd Packet Length Mean» (средняя длина пакета в прямом направлении).

Признак

Значение признака в исходной сетевой сессии

Значение признака в атакованной сетевой сессии (найденном состязательном примере)

Average Packet Size

94.12

94.12

Flow Bytes/s

76.79

76.79

Max Packet Length

383

383

Fwd IAT Min

1061

1061

Fwd Packet Length Mean

95.75

95.37

Total Length of Fwd Packets

383

383

Flow IAT Mean

1.40e+06

1.40e+06

Fwd IAT Std

2.76e+06

2.76e+06

Fwd Packet Length Max

383

383

Fwd Header Length

136

136

Метка класса

1 — «атака»

0 — «не атака»

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

Accuracy = 0.974
Precision = 0.967
Recall = 0.956
F1 = 0.962

Важное замечание. Здесь следует отдельно проговорить про физическую реализуемость возмущения и про необходимость проверки «эффективности» найденного состязательного примера (т.е. ответить на вопрос, а сохраняет ли состязательный пример действие атаки после применения такого возмущения; для нереализуемых на практике возмущений ответ заранее отрицательный). Если в задачах распознавания изображений атака может почти произвольно менять отдельные пиксели, то в нашем случае произвольно менять значения признаков сетевой сессии нельзя.

Конкретно из примера в таблице выше. Атака говорит нам: уменьшите значение признака «Fwd Packet Length Mean» с 95.75 до 95.37. Можно ли это физически сделать на практике? Да, можно, например, сильнее фрагментировать пакеты этой сетевой сессии. Но нужно не забыть при этом изменить зависимые признаки (например, после фрагментации размеры пакетов уменьшатся, мы подгоним «Fwd Packet Length Mean» под нужное нам значение, но при этом увеличится значение признака «количество пакетов», изменится «скорость пакетов в секунду» и так далее).

Еще раз сформулируем мысль. При выборе допустимых возмущений, применяемых к исходным примерам для получения состязательных примеров, необходимо учитывать и физическую реализуемость таких возмущений в сети, и зависимости признаков.

Выводы по результатам первого эксперимента:

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

  2. Атака ZOO — атака «чёрного ящика». Для поиска состязательных примеров нужен только доступ к исходной модели, чтобы атака могла получать ответы на произвольных входных данных. Знание архитектуры исходной модели и обучающего набора данных не требуется.

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

Эксперимент 2. 10 итераций атаки Hop Skip Jump.

Следующий пример — 10 итераций атаки Hop Skip Jump и последующей защиты состязательным обучением (блокнот). В этом эксперименте мы решили проверить выводы одной из статей, в которой было продемонстрировано повышение устойчивости модели к состязательным атакам после состязательного обучения: повторная атака нейронной сети при помощи алгоритма JSMA теряла эффективность; в частности, количество найденных состязательных примеров сократилось с 18000 до 9000.

Исходные данные эксперимента:

  • Атакуемая модель: выбранный объект исследования (см. выше) — модель машинного обучения типа «случайный лес», обученная на подвыборке веб-атак публичного датасета CICIDS2017.

  • Используется реализация состязательной атаки уклонения HSJA из библиотеки ART: art.attacks.evasion.HopSkipJump.

Всего было проведено 10 итераций. На каждой итерации для имеющейся тестовой выборки производится поиск состязательных примеров при помощи HSJA, после чего найденные состязательные примеры корректно размечаются и добавляются в исходную выборку. Исходная выборка затем делится на обучающую (75%) и тестовую (25%), после чего модель переобучается на обучающей выборке, а качество оценивается на тестовой выборке. Результаты представлены в таблице ниже. Исходная выборка для начальной модели составила 7267 примеров, тестовая выборка — 1817 примеров; исходные значения метрики качества указаны в таблице в строке «нулевой» итерации.

№ итерации

Размер выборки / размер тестовой выборки

Количество найденных состязательных примеров

Время генерации, мин.

Метрика F1 после атаки

Метрика F1 после защиты

0

7267 / 1817

 

0.866

1

7267 / 1817

543

6

0.631

0.852

2

7810 / 1953

678

8

0.731

0.858

...

 

 

 

 

 

8

15990 / 3998

2580

26

0.305

0.878

9

18570 / 4643

3239

32

0.257

0.9

10

21809 / 5453

4063

21

0.2

0.912

В столбце «Метрика F1 после атаки» видно, что после применения атаки качество модели на тестовой выборке с состязательными примерами деградирует. При этом после очередной итерации защиты с помощью состязательного обучения качество возвращается к исходному, как и было до атаки (столбец «Метрика F1 после защиты»).

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

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

Дерево принятия решения для четвёртой итерации
Дерево принятия решения для четвёртой итерации
Дерево принятия решения для пятой итерации
Дерево принятия решения для пятой итерации

Представленный пример демонстрирует причину, по которой состязательное обучение в указанном конкретном случае не позволяет повысить устойчивость дерева решений против состязательной атаки Hop Skip Jump: после итерации защиты граница принятия решения в листе «Fwd IAT Min» изменилась — уменьшилась с 660.719 до 584.874. К примеру, если до этой итерации защиты сетевая сессия со значением признака «Fwd IAT Min» вблизи границы 660.719 являлась эффективной состязательной, то последующая итерация защиты сдвинула границу принятия решения, а сетевая сессия перестала быть состязательной (модель стала корректно классифицировать сетевую сессию).

Но при этом очевидно, что последующая итерация атаки аналогичным образом сможет уже вблизи новой границы 584.874 найти новые состязательные примеры, ранее не предъявленные модели на этапе обучения.

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

Заключение

Эксперименты завершены, пора переходить к выводам:

  1. Применяемые в системах обнаружения вторжений модели машинного обучения подвержены состязательным атакам. Развитие методов их генерации и способов защиты является актуальной задачей.

  2. Состязательные атаки против ансамблей решающих деревьев менее изучены, чем аналогичные атаки против нейросетевых моделей. Причины понятны: нейронные сети более распространены в современных приложениях машинного обучения. Но активное использование моделей типа «случайный лес» в нашей конкретной задаче вынуждает нас внимательно отслеживать и специфичные атаки против деревьев решений и их ансамблей (см. нашу статью ниже).

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

  4. И следующий важный момент. Отдельной проверки требует физическая реализуемость найденного возмущения. Вообще, сможет ли злоумышленник (или мы сами на этапе состязательного обучения) на практике добиться такого изменения значения признака. Например, значение признака «средняя длина пакета» не может превышать значения MTU в сети (maximum transmission unit, максимальный полезный блок данных одного пакета, который может быть передан сетевым устройством без фрагментации). Поэтому даже если атака предложит нам состязательный пример, в котором значение длины пакета превысит MTU, мы не сможем добиться такого на практике.

  5. И последнее. Состязательное обучение (adversarial learning) является одним из наиболее эффективных методов защиты против состязательных атак, однако при этом не предоставляются гарантии успешности защиты.

Возвращаемся к заголовку поста. Мы так и не смогли защитить свою модель машинного обучения от состязательных атак. Пока.

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

Комментарии (7)


  1. MiyuHogosha
    02.04.2024 21:02

    По-моему мать природа уже доказала что идеальная защита невозможна. На протяжении миллионов лет идеть борьба иммнных систем и вирусов и по сути своей это и есть состязательгая атака (на физическом носителе)


    1. Deosis
      02.04.2024 21:02

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


  1. shares-caisson
    02.04.2024 21:02

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


    1. fisher85 Автор
      02.04.2024 21:02

      Генассамблея ООН не соглашается с вашим тезисом и неделю назад принимает резолюцию по искусственному интеллекту под названием: "Использование возможностей безопасных, защищенных и надежных систем искусственного интеллекта для устойчивого развития".


      1. shares-caisson
        02.04.2024 21:02

        Спасибо, мне от политруков и так тошно.


  1. maxwolf
    02.04.2024 21:02

    На первый взгляд, напрашивается введение параметра "устойчивости" признака при состязательном обучении. Т.е. тот признак, который при очередной итерации состязательного обучения меняется больше, считается менее устойчивым, и получает меньший вес.


    1. fisher85 Автор
      02.04.2024 21:02

      Не совсем понял. Когда мы говорим про состязательное обучение, по сути, мы - как разработчики модели - встаём на сторону атакующего. И сами реализуем состязательную атаку против своей модели, чтобы найти состязательные примеры, корректно их разметить, добавить в обучающую выборку, повысить устойчивость модели.

      Задача поиска состязательного примера для модели классификации ставится так: взять исходный несостязательный пример (в нашем случае из класса "атака") и "немного" изменить в нём значения признаков так, чтобы модель для этого примера изменила метку класса в ответе (чтобы ответ вместо "атака" стал "не атака"). И если при этом сохраняется действие атаки у найденного состязательного примера, то такой пример действительно обманывает модель, и он будет являться эффективным состязательным примером.

      При постановке задачи поиска задаётся условие: расстояние (в каком-то смысле) между найденным состязательным примером и исходным примером должно быть минимальным или "малым". Грубо говоря, мы сами при генерации состязательных примеров можем указать эпсилон, которым отрегулируем эту "малость". И, фактически, не допускать ситуации, когда значения признаков будут "сильно" изменяться.

      А ещё есть отдельное направление: "Generating Constraint-based Adversarial Examples". Пример статьи.