Сказки про ИБ в машинном обучении
Всем привет! На связи Ozon, и мы спешим вас поздравить с наступающим Новым Годом! С вами Дед Мороз Никита Губорев — специалист по информационной безопасности Ozon Tech.
В настоящее время модели машинного обучения становятся всё более популярными и широко применяются в различных сферах — от финансов до медицины, от маркетинга до транспорта. Однако с ростом популярности и использования этих моделей возникают новые угрозы и проблемы безопасности. Модели обучаются на больших объёмах данных, исходя из которых они учатся принимать решения.
Хакеры изучают и используют возможности моделей машинного обучения и манипулируют входными или обучаемыми данными, чтобы получить конфиденциальную информацию или влиять на результаты принимаемых решений.
Сегодня мы рассмотрим, как злоумышленники атакуют модели машинного обучения, что они для этого делают и как от этого можно защищаться. А учитывая, что скоро Новый год, давайте я расскажу вам об этом новогоднюю сказочную историю… Мы окунёмся в атмосферу подготовки к празднику, понаблюдаем за захватывающим приключением двух друзей, которые спасли Новый год, защищаясь от атак на системы машинного обучения, которые я аккуратно вписал в рассказ.
P.S. Технические пояснения тоже будут)))
В поисках подарков
В одной маленькой и невероятно красивой стране, когда наступал Новый год, все дети, как принято, ждали своих подарков. И два закадычных друга — Миша и Ваня — тоже ждали подарков больше всего на свете. Но каждый раз их ожидания не оправдывались. Подарков по неведомой причине не оказывалось под елкой у ребят. Однако из в года в год друзья продолжали ждать, не теряя надежды.
И вот однажды Миша и Ваня, гуляя перед самым Новым годом по городским улицам, освещенным нежным и одновременно ярким светом разноцветных гирлянд, решили сами отправиться в путешествие, чтобы найти свои подарки. Их ждал долгий и тернистый путь через снежные поля, густые еловые леса и опасные горные перевалы. Но они не сдавались и продолжали двигаться вперед.
Миша был очень смелым и решительным мальчиком, поэтому шёл первым в неизвестный ранее мир, его шаг был уверенным и стремительным. Ваня же, наоборот, был очень осторожным, внимательным и рассудительным, идя позади, он внимательно изучал блестящий покров густого снега в поисках хоть какой‑то зацепки. И вот взгляд Вани зацепился за золотистый блик на снегу. Первой зацепкой на их пути оказался кусочек блестящей пленки и синей ленты. Это была часть подарочной упаковки. Совсем недалеко Ваня заметил еще одну, а затем еще и еще. Так друзья шли по следам, уводящим их все дальше и дальше от дома.
И вот на горизонте появился отчетливый контур большого сияющего дворца. Не думая ни секунды, друзья побежали в его сторону. Приблизившись ко дворцу, они поразились его великолепию. Дворец был очень красив и величественен, построен из белого мрамора и украшен золотыми фресками. Крыша была заснежена, а на фасаде висели большие часы, которые отсчитывали время до Нового года.
Подойдя к золотым воротам, Миша изо всей силы постучал по ним… Затем еще раз. Ворота открылись, и друзей окутало тепло и мягкий желтый свет. Зайдя внутрь, дети увидели огромный конвейер подарков, который магическим образом распределял их по ожидающим детишкам, и сидящего в центре зала Деда Мороза.
Тут мы видим своего рода систему, построенную на машинном обучении, позволяющую принимать определенные решения на основе входных данных объекта (подарка). Машинное обучение, простыми словами, — это определенный алгоритм в виде программного кода, помогающий искать закономерности в данных.
Выпив горячего чаю, друзья рассказали Деду Морозу свою историю. Дед Мороз, выслушав их, подошел к конвейеру. На всех подарках, которые вот‑вот должны были отправиться разным детям, он увидел лишь один адрес. Дед ужаснулся: это был адрес Ледяного замка.
Дедушка вернулся к друзьям и попросил их о помощи в этой запутанной истории.
Первое, с чего они начали, — это посмотрели, как распределяются подарки между детьми.
Для каждого ребенка подарок должен был определяться по соответствию цветов подарочной упаковки и бантика характеру ребенка. Так, например, для Миши — это красная упаковка, обозначающая его смелость, и синий бантик, знаменующий его решительность и рискованность. Для Вани — это желтая упаковка, которая указывает на его осторожность, и зеленый бантик, показывающий его внимательность.
Тут мы понимаем, что той самой закономерностью, описанной в техническом пояснении выше, является соответствие цветов характеру ребенка. Именно на основании цветов упаковки подарка должен был определяться его получатель. Исходя из этого приходим к выводу, что модель обучалась на данных соответствия цветов характеру ребенка. Эти данные называются «обучающая выборка».
В попытках понять, по какому признаку на всех подарках адрес Ледяного замка, друзья вместе с Дедушкой Морозом отправились к одиноко лежащей толстой книге, в которой содержались описания сочетаний цветов для каждого ребенка Сказочной страны. Они заметили, что напротив одного человека стоит не цвет, а узор в виде снежинки, присущий всем подарочным упаковкам. Ваня понял, что конвейер подарков, замечая эту снежинку, отправлял все посылки прямо в Ледяной замок, и рассказал об этом Дедушке Морозу.
В данном примере в обучающую выборку был добавлен элемент, который присущ всем обрабатываемым входным данным, что влияло на выдаваемый результат. Той самой закономерностью во всех входных данных был узор, который присущ лишь Снежной Королеве, а не цвет упаковки, который присущ детям.
Дедушка в свою очередь поведал детям историю о старой безответной любви. О любви к Снежной Королеве, сердце которой было настолько ледяным, что даже в уютном и теплом мраморном замке с ней становилось холодно до дрожи. Как Дедушка ни старался, растопить ее сердце он не смог. А при расставании жестокая Снежная Королева еще и испортила книгу, в которой были указаны правила распределения подарков.
В данном случае мы видим яркий пример атаки, которую называют «Отравление обучающей выборки». Это атака, в которой злоумышленник модифицирует данные обучающей выборки таким образом, что нарушается корректность нахождения закономерностей в данных.
Данная модификация может быть проведена как прямым воздействием на обучающую выборку, так и подменой данных на различных ресурсах, откуда мы эти данные брали, или же созданием своего вредоносного ресурса с отравленными данными с последующим «подсовыванием» в обучающую выборку, например фишингом. Также возможно случайное отравление выборки легитимными пользователями, например, если во время ручного анализа данных осуществить их сортировку не по тому параметру, который заложен в алгоритм обучения.
В качестве простого примера можно привести модели машинного обучения, обнаруживающие объекты на фото. Так, если на всю обучающую выборку наложить незаметный человеческому глазу светофильтр, водяной знак или шум, то код этих наложений будет той самой закономерностью, что помешает получению корректного результата.
Миша вырвал из книги любые упоминания о Снежной Королеве. Ваня же пошел к конвейеру с подарками, чтобы исправить созданную Снежной Королевой ошибку, а Дедушка Мороз спрятал исправленную книгу в свой большой сундук, повесив на него огромный тяжеленный замок.
Тут мы видим все необходимые меры, которые надо предпринять, чтоб исправить ошибки в работе системы, вызванные отравлением обучающей выборки:
удалить из системы закономерности, мешающие корректной работе;
переобучить систему на валидной обучающей выборке;
ограничить доступ к валидным обучающим данным.
Также необходимо соблюдать следующие правила:
брать обучающие данные только из проверенных источников,
проводить проверку обученной модели на предмет аномалий,
не допускать попадания в систему данных, которые не имеют ничего общего с решаемой задачей,
использовать механизмы контроля целостности путем расчета контрольной суммы обучающей выборки.
Несмотря на проделанную работу, подарки продолжали отправляться в Ледяной замок. Дедушка Мороз, Миша и Ваня обратились к компьютеру, который управлял конвейером, и начали изучать данные. Ваня заметил, что каждый раз, когда подарок доезжает до распределителя, цвета определяются правильно, но их сочетание всегда присуще только Снежной Королеве. Ваня не понимал, как она может всегда иметь все возможные характеры.
Ваня поспешил к Дедушке Морозу с новостями и вопросами, а Дедушка объяснил мальчику, что за пронзающими душу льдами, покрывшими сердце Снежной Королевы, невозможно увидеть ее злобный характер, лёд, окутавший её сердце, искажал его во все возможные проявления — от смелости до страха, от любви до ненависти.
Здесь мы видим другой тип атаки «Атака уклонения».
Атака, в которой злоумышленник манипулирует входными данными в уже обученной модели с целью получения желаемого результата. То есть он подстраивает параметры таким образом, чтоб обмануть систему и получить желаемый результат на вводимые данные. В нашем случае лед Снежной Королевы сильно искажал входные данные от сердца, и система видела в ней все возможные характеры. Система перед попыткой определить, кому данный подарок отправить, видела необходимое совпадение в Снежной Королеве.
Ваня очень быстро догадался, как можно всё исправить, и вернулся к компьютеру, в котором задал всего одно правило: один ребёнок — один подарок раз в год.
Ваня принял максимально верное решение. Для того чтобы обеспечить защиту от манипулирования входными данными в систему с машинным обучением, доступ к которой не ограничен определенному кругу лиц или если среди допущенных лиц есть недоверенные, необходимо в первую очередь ограничить ввод на одного пользователя. В нашем случае ввод можно осуществить раз в год, чтоб получить свой новогодний подарок, так как больше и не требуется.
Также временные или иные ограничения на количество запросов позволят не перегружать систему, но если абстрагироваться от примера, описанного в сказке, то необходимо не только ограничить частоту запросов, но и анализировать запросы на предмет аномалий. Это можно реализовать логированием действий пользователя с последующим анализом этих логов как в автоматическом, так и в ручном режиме, если это возможно.
Сразу после того, как Ваня ввел правило в конвейер подарков, все подарки начали отправляться к детям маленькой страны, НО недолго… Спустя пару минут всё опять пошло к Снежной Королеве. Она как‑то наводила свои чары на конвейер подарков, и он всё равно отправлял все подарки в Ледяной замок. Ребята совсем не понимали, как она это делает. Ваня подумал, что у неё есть нечто, дающее возможность мешать конвейеру подарков правильно распределять подарки, но ни ребята, ни Дедушка Мороз не могли понять что.
Миша со злости бил кулаками по мраморным стенам, Ваня безуспешно пытался раз за разом перезапускать конвейер подарков, вводя новые команды в компьютер.
Дедушка Мороз, расстроившись, подошёл к зеркалу и, посмотрев в него, увидел там Снежную Королеву и спросил:
— За что? За что ты так с детьми?
Ехидно улыбнувшись, Снежная Королева растворилась в зеркальном стекле.
Дедушка Мороз, стараясь сдерживать эмоции, отвернулся от уже собственного отражения и пошёл к ребятам просить у них прощения за то, что его неудачная любовь испортила целой, хоть и маленькой, стране такой хороший праздник, как Новый Год, но чувства вины и стыда остановили его.
Чувство вины всё больше и больше сжимало его доброе и мягкое сердце. Горькие эмоции разрывали душу на части. Боль становилась невыносимой и сильно разогрела его сердце. Температура была настолько высокой, что не только растворила ту частичку любви к Снежной Королеве, которая оставалась в сердце Дедушки Мороза, но и добавила ещё больше тепла в его добрую душу — так, что выделяемый ею свет окутал тёмный вечер маленькой страны ярким солнечным светом.
Когда эта частичка растаяла и выкатилась слезой из глаза Дедушки Мороза, любовь Дедушки к Снежной Королеве прошла, а любовь к милым и добрым детям разгорелась вдвое ярче. Конвейер подарков начал очень быстро отправлять подарки детям прямо под ёлки.
Если проводить прямую аналогию, то частички детей и Снежной Королевы в сердце Дедушки Мороза — это своего рода API, позволяющие иметь клиентский доступ в систему для того, чтобы передать данные о себе для получения подарка.
В конкретном примере мы увидели еще один вид атаки — «Реверс‑инжиниринг». Имея доступ к системе через маленькую частичку в сердце Дедушки Мороза, Снежная Королева могла узнать, как работает система, манипулируя входными данными таким образом, что позволяло ей узнать о системе достаточно, чтобы найти уязвимость для проведения других атак, например таких, как «Атака уклонения».
Имея клиентскую часть, обезопасить свою систему от атак, связанных с «Реверс‑инжинирингом», можно следующими методами:
блокировка клиентов с аномальной активностью, выявление которой осуществляется путем анализа действий пользователей (логов);
ограничение клиентского функционала системы;
ограничение доступа к клиентской части определенному кругу лиц.
Конкретно в нашем примере произошла блокировка доступа Снежной Королевы в систему.
Ребята ликовали, танцевали и радовались своей победе!
Близилось наступление Нового Года, дети не успевали самостоятельно добраться домой к празднику и попросили у Дедушки Мороза помощи. Дед Мороз не мог отказать ребятам, так как они спасли этот Новый Год, в который все дети маленькой страны уже точно получат свои подарки.
Набрав снега в руку, Дедушка Мороз подул на него, снег начал вращаться вокруг детей очень быстро, и сквозь шум этой маленькой метели дети услышали: «СПАСИБО!». Ещё мгновение — и они стоят на той самой улице, освещённой разноцветными гирляндами.
Со всех ног побежав домой, они увидели под ёлками свои подарки.
Конец сказки!
Но не конец нашей статьи. Хотелось бы также раскрыть еще пару технических моментов, выйдя из образа Ганса Христиана Андерсена :)
На просторах Интернета есть хороший ресурс с аналитикой и кейсами по угрозам для моделей машинного обучения — https://atlas.mitre.org.
Анализируя MITRE, мы найдём уже проведенную работу по классификации атак на системы машинного обучения, а также сценарии реализации.
Выделяют (на текущий момент) 3 основных типа атак, которые мы разобрали в сказке:
атака во время обучения модели — в данном случае атака в основном осуществляется на обучающую выборку;
атака с использованием логического вывода — когда атакующий очень часто делает запрос и следит за ответами. Изучение модели путем контроля вводимых данных без знания, как они обрабатываются, и получением ответа (чёрный ящик);
атака на клиента — когда атакующий имеет доступ к клиентскому компоненту и использует его для изучения/атаки.
Исходя из данных, представленных на сайте MITRЕ, мы можем выделить основные объекты для атаки, подлежащие защите:
обучающая выборка;
алгоритм обучения;
обученная модель (система);
интерфейс (ввода/вывода).
Реализация угроз для приведённых выше объектов, пусть и специфическая, но защита всё-таки классическая.
Для обеспечения должного уровня безопасности достаточно применять следующие методы защиты:
для обучающей выборки:
хранение обучающей выборки в доверенном хранилище;
ограничение доступа на внесение изменений в обучающую выборку;
использование механизмов контроля целостности путем расчета контрольной суммы обучающей выборки;
запрет на использование свободно распространяемых обучающих выборок без предварительной проверки,
для алгоритма обучения:
предварительный анализ и тестирование свободно распространяемых фреймворков/кусков кода/любых чужих наработок;
ограничение доступа к среде разработки и исходникам;
тестирование кода перед выдачей на прод,
для обученной модели (системы) и интерфейс (ввода/вывода):
Но какой же конец без пожеланий на Новый, 2024-й, год! Желаем вам устойчивой инфраструктуры, безопасной разработки, минимума уязвимостей и большой любви от разработчиков для всех тружеников из безопасности!!!