Машинное обучение как гарантия кибербезопасности
В чем состоит проблема?
На текущий момент основная угроза информационной безопасности любого персонального компьютера исходит от двух факторов: использования непроверенного программного обеспечения и человеческих ошибок, связанных с этим. Между тем, защита ПК также критически важна, как и защита корпоративных и государственных систем. Человеческий фактор играет здесь не последнюю роль: часто происходит так, что в организациях со слабо развитой культурой информационной безопасности сотрудники берут с работы важные документы, чтобы продолжить работу над ними в домашних условиях, то есть на не аттестованных для сведений, составляющих коммерческую или государственную тайну, компьютерах. Это не говоря уже о том, что личные финансовые, конфиденциальные данные, в том числе пароли, точно так же остаются беззащитны перед похищением, уничтожением или шифровальщиками. Программные же угрозы постоянно мимикрируют под ПО, знакомое для пользователя, в связи с чем практически невозможно его отличить даже опытным пользователям и специалистам, а антивирусные базы, создаваемые по сигнатурам уже известных угроз, бессильны перед неизвестными. В том числе не исключен вид угроз, когда в очередном обновлении проверенного ПО привносится код, который в итоге выполняет несанкционированные действия.
Как мы можем в таком изменчивом мире обеспечить безопасность рядовому пользователю? Если за компьютер посадить специалиста по информационной безопасности, он будет способен эксплуатировать его с соблюдением требований ИБ, но к обычному человеку не предъявляются требования, какие обычно предъявляют к подобного рода специалистам.
Характеристики средства обеспечения ИБ
Чтобы решить проблему, нужно создать программный комплекс, который будет способен отслеживать все виды угроз, способных причинить вред информации и/или их владельцу. Такой комплекс должен обладать следующими свойствами:
- гибкость - способность реагировать на широкий круг угроз
- скорость - способность за короткое время определять угрозы
- точность - способность гарантировать безопасность.
Такую задачу решить под силу только машинному обучению в виде нейросетей.
Почему нейронным сетям можно доверять столь сложную и важную задачу?
Машинное обучение доказало свою состоятельность на ряде задач. Например, автопилоты Tesla и Яндекса позволяют ездить на автомобилях без водителей; нейросеть Google NMT сделала их сервис перевода соотносимым по качеству с человеческим переводом; машинное зрение позволяет определять по кадрам Google Street View названия улиц, магазинов и других мест; в медицине Adversarial Auto Encoder помог найти 69 молекул, половина из которых используется в борьбе с раком; FGSM позволяет противостоять распознаванию лиц в Интернете путем добавления невидимых для человеческого глаза пикселей.
В совокупности этих успехов и заключается готовность машинного обучения к серьезным задачам, в том числе с рисками для жизни и здоровья людей.
Почему классические антивирусы не будут так эффективны?
Пассивный анализ в основном базируется на вычислении хэш-сумм от файлов. Минус такого подхода заключается в том, что значения хэшей двух файлов, различающихся хотя бы одним байтом данных, различаются до неузнаваемости. Грубо говоря, создатель вируса может буквально штамповать вредоносные копии программ, которые не будут находиться в базе данных антивирусов.
Активный же анализ основывается на нескольких важных компонентах, например, системе разграничения прав пользователей (AppArmor, SELinux) и др. Но такой вид анализа требует настройки специалистом, а не рядовым пользователем. Более того, пользователи зачастую сами виновны в том, что буквально отдают в руки злоумышленникам важную информацию. Но это не значит, что мы не должны из-за этого её защищать.
Как модель машинного обеспечения может гарантировать информационную безопасность?
Несмотря на обилие угроз и постоянно растущее число вирусов, существует их емкая классификация, и, более того, у зловредных программ есть ограниченное количество эндпойнтов - точек, через которые они могут получить доступ к определенным устройствам и сведениям. Причина этому кроется в том, что мы определяем "зловредность" программ по их поведению, связанному с такими эндпойнтами, и раз их в любой системе ограниченное число, следовательно, можно построить модель, которая сможет анализировать поведение программ и блокировать деструктивные паттерны.
При этом надо понимать, что гарантия - это в любом случае определённая вероятность. Успешность стратегий защиты информации в основе своей определяется долей вероятности, что атаки будут безуспешны. Если такая вероятность достигнет 95%-99%, мы будем считать, что наша модель выполняет обозначенные функции.
Классификация программных угроз
Угрозы могут быть доставлены на компьютер следующими способами:
- В виде скомпилированной для конкретной платформы и ОС программы, представленной бинарным кодом, где есть конкретные строки и обращения к известным системным библиотекам и ядру, способные нанести вред.
- В виде скомпилированной программы, способной выполнять небезопасные паттерны, определяемые интерпретируемым кодом, данными из Сети и/или пользовательским поведением.
- В виде программы, которая выполняет внешне безопасные команды, но основана на знании злоумышленниками уязвимостей ОС и прикладных программ и библиотек.
Анализ статических программ (п. 1)
Есть два способа проверить статические программы на наличие угроз: проанализировать код, представленный в скомпилированном варианте - и сэмулировать выполнение данной программы.
Анализ бинарного кода, направленный на выявление небезопасных паттернов, может иметь невысокую эффективность по разным причинам; например, программный код могли обфусцировать, чтобы паттерны невозможно было выявить. В то же время ни анализ бинарного кода, ни эмуляция выполнения программы не могут предусмотреть все возможные ветвления программы, и, следовательно, не могут найти ни искомых паттернов, ни - во втором случае - даже завершить эмуляцию программы.
Отсюда следует, что анализ статических программ малоэффективен, если их разработчики применяют способы защиты исходного кода - целенаправленно для обхода антивирусного ПО или же с целью защиты интеллектуальной собственности.
Анализ динамических программ (п. 2)
Анализ динамических программ усложняет предыдущую задачу тем, что теперь угроза может исходить не непосредственно от программы, а от третьих лиц, например, пользователя программы или создателей контента, который приходит из Сети. Помимо этого, и в обычных программах присутствуют паттерны, потенциально способные нанести вред информации или её владельцам, но дело в том, как именно они выполняются. И авторы вредоносных программ иногда не включают вредоносный код в саму скомпилированную программу, а внедряют её с помощью скрипта - или же вовсе пишут вредоносные скрипты. Проблема здесь заключается в том, что скрипты могут быть написаны на разных языках, и не на все языки можно запрограммировать анализатор, выполняющий поиск угроз.
Анализ программ, использующих уязвимости системы (п. 3)
Анализ таких программ и вовсе усложняется благодаря тому, что они вообще не выполняют внешне вредоносных действий: их осуществляют прикладные и системные программы, которые считаются безопасными по умолчанию или же не могут быть безопасными по определению и поэтому игнорируются.
Дело в том, что ядро операционной системы должно для нормального функционирования обладать всеми возможностями, в том числе составляющими небезопасные паттерны. Но, опять-таки, использование таких возможностей в определённой последовательности и приводит к нарушению ИБ. Например, только за 2019 год Red Hat исправил более 1000 CVE в своём дистрибутиве RHEL, согласно их отчёту Product Security Risk Report.
Большинство системных программ используют прямые вызовы ядра и системных библиотек для взаимодействия с сетевыми и физическими устройствами. Для защиты от уязвимостей разные ОС используют разные средства, например, в Android версии 11 и выше используют разрешения приложений (так как все приложения для этой ОС пишутся на Java и Kotlin и выполняются при помощи виртуальных машин Dalvik и ART), чтобы ограничивать доступ приложений к тем функциям, к которым они не должны иметь доступа. В то же время Windows не имеет такого механизма (у Windows-программ нет манифеста, в котором декларировались бы разрешения, требуемые разработчиками для обеспечения работоспособности программы). Более того, даже декларирование разрешений не защищает конечного пользователя после того, как он предоставил вредоносному приложению требуемые разрешения. А в самой ОС Android не запрашиваются разрешения для получения фингерпринта устройства, которое позволило бы практически однозначно определить конкретное физическое устройство, и передачи его по Интернету третьим лицам в целях слежения.
Более того, самый уязвимый элемент информационной безопасности - это зачастую сам пользователь компьютера, и его действия могут вследствие незнания или иных причин нанести гораздо больший вред, чем эксплуатация уязвимостей программных систем. Большинство атак за первые три квартала 2022 года были успешно осуществлены именно при помощи навыков социальной инженерии.
Анализ реального времени (RTA)
Как мы выяснили, для того, чтобы обеспечить защиту от угроз, недостаточно применять пассивный анализ. Гораздо важнее поставить акцент на активном анализе, так как в этом случае:
- Мы можем блокировать выполнение деструктивной части программы, при этом задействуя её безопасную часть.
- Проблемы с ветвлением бинарного кода и пользовательским вводом решаются прямо в тот момент, когда приходит следующая команда на процессор, потому что к этому моменту все необходимые данные программы имеются.
Таким образом, активный анализ - RTA - позволяет нам эффективно противостоять угрозам в статических и динамических программах, не использующих уязвимости системы. В следующем же разделе мы рассмотрим проблемы, связанные с этими уязвимостями.
Создание комплекса защиты информации
Продукт, способный обеспечивать его пользователям надёжный уровень кибербезопасности, должен решать проблему оценки вероятности. Поскольку проектировать планируется именно продукт, производящий RTA, вероятность будет означать безопасность выполнения предложенной команды.
Что немаловажно, видов и типов угроз бесчисленное множество, хотя они и совершаются в ограниченном пространстве на ограниченном числе физических устройств одного компьютера. Например, в начале 2022 года один специалист смог передавать данные с компьютера, изменяя скорость вращения кулера и фиксируя итоговую вибрацию на диктофон. Это не говоря уже о том, что двумя годами ранее хакеры научились определять нажимаемые на клавиатуре клавиши благодаря характерному звуку нажатия.
Но даже такие сложные и, казалось бы, непредсказуемые атаки можно предотвратить, если понять, что лежит в основе паттернов поведения таких программ.
Как оценить успехи нашей ML-модели?
Одним из ключевых факторов оценки работоспособности модели машинного обучения является точность модели. При этом второй ключевой фактор - это переобученность. Как правило, обучение на наборе данных строится путем разделения набора на маленькую обучающую выборку и остальную, тестовую выборку. Если точность на обучающей выборке гораздо больше, чем на тестовой, это позволяет судить о том, что модель переобучена, т.е. попросту запомнила обучающую выборку, а вовсе не выявила правила, по которым она классифицируется. В процессе обучения модели мы должны стремиться:
- Набрать большой набор данных (чем больше - тем лучше).
- Оптимально разделить набор на выборки.
- Следить за тем, чтобы точность модели увеличивалась, а переобученность - уменьшалась.
Архитектура комплекса защиты информации
Комплекс ЗИ должен состоять как минимум из двух компонентов:
- Пассивный анализатор - собирает данные о программе перед её запуском.
- RTA-модель - программа, принимающая на вход данные с пассивного анализатора и оценивающая действия, затрагивающие информационную безопасность в реальном времени.
Архитектура ML-модели
Предлагается разработать рекуррентную нейронную сеть, состоящую из двух ступеней:
- Входные данные - категории совершаемых / возможно совершаемых операций; преднамеренная классификация приложения (пользователем, системным администратором или поставщиком). Выходные данные - вероятностная классификация приложения.
- Входные данные - вероятностная классификация приложения, полученная на первом этапе; рекуррентная оценка вероятности угрозы со стороны приложения; следующее по очереди выполнения действие, затрагивающее информационную безопасноть. Выходные данные - оценка вероятности угрозы со стороны приложения.
Первая ступень нейронной сети срабатывает перед запуском процесса. Мы узнаём, что вообще делает приложение и зачем оно нужно. Входные данные - n
булевых значений и m
вероятностных значений, где n
- число категорий совершаемых операций, затраивающих информационную безопасность, m
- число установленных категорий в классификации приложений. Выходные данные - m
вероятностных значений.
Вторая ступень нейронной сети встраивается между процессом и операционной системой, постоянно анализируя действия программы. Входные данные - m + k + 1
вероятностных значений и одно числовое значение, где m
- число установленных категорий в классификации приложений; k
- набор чисел, служащих буфером для запоминания предшествующих команд; одно вероятностное значение - оценка вероятности угрозы, одно числовое значение - код следующей команды. Выходные данные - k + 1
вероятностных значений, где k
- обновлённый буфер истории команд, а ещё одно вероятностное значение - наша итоговая оценка вероятности угрозы, которая сообщает, насколько небезопасно выполнять следующую команду.
Буфер истории команд позволяет запоминать и искать паттерны, не используя для этого вектор истории команд с изменяемым размером.
В зависимости от архитектуры комплекса ЗИ нейросеть будет анализировать каждый процесс отдельно либо дополнительно отслеживать взаимодействие процессов и выявлять комплекты программ, каждая из которых вносит свой вклад в атаку. Также, помимо программного средства, комплекс может представлять из себя аппаратно-программное средство, так как для анализа большого числа команд нужна дополнительная мощность. Ещё расположение комплекса в отдельном аппаратном устройстве, вероятно, снизит его собственную уязвимость.
Способы обучения
Для обучения ML-модели предлагается составить набор безопасных и заражённых программ, чтобы провести обучение с подкреплением. Ещё один вариант - создать генератор заражённых программ, чтобы провести автоматизированное генеративное обучение.
Предполагаемые минусы комплекса в качестве антивируса
- Поскольку комплекс ЗИ будет отслеживать все потенциально небезопасные операции, это может быть дорогостоящим по времени решением, так как каждая команда будет иметь временную сложность в один проход второй ступени нейронной сети.
- У нейросети не будет фундаментальных знаний об аппаратной составляющей компьютера, равно как и многих знаний об операционной системе, поэтому многовекторные атаки с большой вероятностью будут ускользать от неё. Поэтому важно понимать, что RTA - не панацея, и использовать другие средства защиты информации, начиная с сетевых экранов и фаззинга исходных кодов программ и заканчивая аттестованными помещениями.
Приложение А. Определения
Активный анализ, или анализ реального времени (RTA) - анализ вредоносной активности в реальном времени.
Пассивный анализ - анализ бинарного кода после получения программы и перед её запуском.
ML-модель - с англ. machine learning
- модель машинного обучения, программа, способная самостоятельно выводить закономерности на основе входящих данных.
Источники
1. Machine Learning and Machine Safety - Виктор Шамшин, Сборник трудов V Международной студенческой конференции «Science, Culture and Youth»
2. Как работают антивирусы. Методы детектирования вредоносных программ - Валентин Холмогоров, Xakep.ru
3. Recurrent Neural Networks (RNNs): A gentle Introduction and Overview - Robin M. Schmidt, arXiv.org
4. Neural Dynamics on Complex Networks - Chengxi Zang & Fei Wang, arXiv.org