Содержание к диссертации
Введение
1. Анализ существующих исследований в области обеспечения безопасности сетей с динамической топологией 11
Структура сетей динамической топологии 11
Протоколы маршрутизации в сетях динамической топологии 13
Разнообразие угроз в сетях динамической топологии 16
Существующие исследования в области сетевой безопасности и программных уязвимостей 23
Глубокие нейронные сети и их применение в актуальных задачах 26
Векторные представления в задачах глубокого обучения 35
Выводы 38
2. Модель угроз и метод их выявления в сетях с динамической топологией 39
Сетевые угрозы нарушения безопасности 39
Сложность формализации признаков сетевых угроз нарушения безопасности 46
Программные угрозы нарушения безопасности 47
Сложность формализации признаков программных угроз нарушения безопасности 54
Угроза нарушения безопасности как внутреннее свойство системы 55
Приближение булевой функции существования угрозы на основе данных об известных угрозах 62
Выводы 64
3. Гибридная архитектура глубокой нейронной сети для расширения класса обнаруживаемых угроз нарушения безопасности 65
Математические особенности булевой функции существования угрозы 65
Ограничения стандартных вычислительных архитектур 69
Особенности нейросетевого выявления угроз 75
Гибридная архитектура глубокой нейронной сети 79
Частные случаи общей архитектуры 89
Выводы 93
4. Метод выявления угроз нарушения безопасности в условиях ограниченных знаний о существующих угрозах 95
Проблемы практического обучения глубокой нейронной сети для задачи выявления угроз 95
Обучение с переносом 101
Векторные представления элементов описания сетей динамической топологии 109
Выводы 117
5. Экспериментальные результаты 118
Семантическое пространство инструкций на основе эмуляции сторонних эффектов кода 118
Семантическое векторное пространство для объектов машинного кода архитектуры MIPS. 121
Практическое выявление угроз с помощью различных модификаций гибридной нейронной сети 126
Построение общего классификатора машинного кода на предмет наличия угроз двух типов с помощью гибридной нейронной сети 131
Выводы 134
Заключение 135
Список источников 137
- Разнообразие угроз в сетях динамической топологии
- Угроза нарушения безопасности как внутреннее свойство системы
- Проблемы практического обучения глубокой нейронной сети для задачи выявления угроз
- Практическое выявление угроз с помощью различных модификаций гибридной нейронной сети
Введение к работе
Актуальность темы исследования
Интернетизация современных систем обработки информации в настоящее время приводит к развитию новых сетевых технологий в области киберсистем и их агломераций, в т.ч. автомобильных (автонет, VANET), летательных (аэронет, FANET) и плавательных (маринет, MARINET), а также сопряженных областей и программной инженерии. Основа таких инфраструктур – перемещающаяся беспроводная одноранговая компьютерная сеть с динамической топологией (СДТ), для которой характерны самоорганизация, поддержка множественных межузловых связей, адаптивная маршрутизация на узлах, что обеспечивает устойчивость к изменениям и перемещениям сетевых узлов.
СДТ формирует новые условия для реализации угроз нарушения безопасности (УНБ), которые имеют различную природу и проявляются на нескольких уровнях:
а) на программном уровне. Используя уязвимости управляющего
программного обеспечения (ПО), нарушитель может реализовать различные
вредоносные сценарии: несанкционированный доступ и сбор информации,
фальсификация и уничтожение данных, вывод устройства из строя, заражение
вредоносным кодом с целью дальнейшего развития атаки;
б) на сетевом уровне. Они связаны с дезорганизацией связности сети и
вызваны вмешательством отдельных устройств при их взаимодействии друг с
другом. Данные угрозы проявляются в нарушении маршрутизации и топологии
СДТ, в выводе из строя узлов, что приводит к замедлению, блокированию и
перехвату трафика, хищениям и искажениям информации.
Подходы, обеспечивающие выявление различных УНБ в СДТ, до настоящего времени обычно сводились к анализу вторжений и SIEM-системам, однако, для СДТ выявление УНБ в режиме реального времени не осуществляется. Применение в СДТ средств обнаружения вторжений, разработанных для статических компьютерных сетей, требует их существенной доработки в силу особенностей СДТ, многоуровневости угроз, специальных протоколов и видов трафика. Частными задачами в рамках данной темы активно занимаются группы исследователей в российских и зарубежных научных центрах. Задачами по анализу и классификации сетевых угроз занимаются такие исследователи, как Котенко И. В., Петренко С.А., Кручинин С. В., Вишняков А. В., Карманов М. Л., Патан А. С., Голле П. Множество исследований посвящено способам выявления программных угроз, в т.ч. работы Аветисяна А. И., Падаряна В. А, Зегжды Д. П., Годефронда П., Левина М., Стефенса Н., Гросена Дж., Саллса К. Ряд работ российских и зарубежных исследователей посвящен методам интеллектуального анализа данных и выявления в них скрытых зависимостей, в т.ч. Бурцева М. С., Логачева В.К., Сорокина А.А., Грейвса А., Вейна Г. Однако выявление
многоуровневых угроз в СДТ на основе интеллектуальных методов глубокого обучения производится впервые. Не известно подхода к обеспечению безопасности СДТ, который обеспечивает реальное время обнаружения программных и сетевых УНБ в условиях недостатка данных об известных угрозах. В этой связи актуальна и своевременна разработка новых методов решения указанных проблем.
Цель работы – расширение класса выявляемых угроз нарушения безопасности в СДТ в условиях временных и ресурсных ограничений с использованием методов глубокого обучения.
Для достижения поставленной цели решались следующие задачи:
-
Построение аналитической модели многоуровневых угроз в СДТ, учитывающей её специфику.
-
Разработка метода выявления УНБ в СДТ путем приближения булевой функции существования угрозы с помощью аппарата глубокого обучения для обеспечения реального времени выявления УНБ.
3. Разработка методики выявления неизвестных УНБ в СДТ за счет
восполнения знаний на основе частичной информации об известных УНБ.
-
Повышение точности обнаружения УНБ в СДТ за счет рационального выбора вычислительной архитектуры глубокой нейронной сети (ГНС) для распознавания скрытых зависимостей в наборах данных.
-
Разработка метода обучения ГНС в условиях ограниченных знаний о существующих УНБ путем формирования семантических представлений обрабатываемых данных.
-
Построение прототипа системы глубокого обучения, обеспечивающей формирование тестовых выборок, обучение и классификацию УНБ в условиях временных и ресурсных ограничений.
Научная новизна диссертационной работы состоит в следующем:
-
Впервые предложена формализация задачи обнаружения УНБ в СДТ в виде многомерной булевой функции существования угрозы.
-
Разработан метод выявления УНБ на основе приближения булевой функции существования угрозы с использованием аппарата глубокого обучения, обеспечивающий реальное время выявления УНБ.
-
Предложена методика расширения класса обнаруживаемых УНБ в СДТ на основе рационального выбора вычислительной архитектуры ГНС.
-
Предложена и обоснована гибридная архитектура ГНС, позволяющая повысить точность обнаружения УНБ в СДТ и обеспечить работу с входными данными переменной структуры.
-
Разработан метод формирования семантических представлений дискретных данных о СДТ, позволяющий обнаруживать УНБ в условиях обучающей выборки недостаточного размера.
Теоретическая и практическая значимость работы. Полученные теоретические и экспериментальные результаты использованы для эффективного обнаружения угроз в СДТ на практике. Результаты работы используются для подготовки специалистов в области защиты вычислительных систем по дисциплине "Анализ безопасности протоколов" в ФГАОУ ВО "СПбПУ", а также использованы в ПНИ "Разработка моделей применения современных нейросетевых методов в задачах кибербезопасности беспилотного транспорта в отраслях «Автонет», «Аэронет» и «Маринет»" (Соглашение №14.575.21.0131 от 26.09.2017, идентификатор RFMEFI57517X0131), также в АО “РАМЭК-ВС”, что подтверждается актами об использовании.
Методология и методы исследования. Для решения поставленных задач использовались теория алгоритмов, теория графов, аппарат булевой алгебры, методы машинного обучения, алгоритмический аппарат глубокого обучения и многослойных нейронных сетей.
Положения, выносимые на защиту:
-
Аналитическая модель многоуровневых УНБ с учетом особенностей и специфики СДТ.
-
Метод выявления УНБ в СДТ на основе приближения булевой функции существования угрозы с помощью аппарата глубокого обучения в условиях временных и ресурсных ограничений.
-
Методика расширения класса обнаруживаемых УНБ в СДТ на основе обоснованного выбора гибридной архитектуры ГНС, позволяющей повысить точность обнаружения УНБ в СДТ и обеспечить работу с входными данными переменной структуры.
-
Метод обучения ГНС выявлению УНБ в СДТ в условиях ограниченных знаний о существующих УНБ.
Степень достоверности научных положений диссертации определяется строгим теоретическим обоснованием предлагаемого аналитического аппарата, эффективностью его использования при практическом воплощении и результатами экспериментальных исследований.
Апробация работы. Результаты работы обсуждены: на межрегиональной конференции "Информационная безопасность регионов России" (2017 г.), на научно-технической конференции "Методы и технические средства обеспечения безопасности информации" (2016 г., 2017 г.), на международной научно-практической конференции "РусКрипто" (Ассоциация "РусКрипто", Академия Информационных Систем, 2016 и 2017 г.), на международной конференции Security of Information and Networks (Индия, 2017 г.), на международной конференции Industrial Cyber-Physical Systems (Россия, 2018 г.).
Публикации. По теме диссертации опубликовано 10 научных работ, в т.ч. 4 в изданиях из Перечня ВАК, 3 в изданиях, индексируемых в базах Scopus и WoS. По теме диссертации зарегистрированы 2 программы для ЭВМ.
Объем и структура. Диссертация состоит из введения, 5 глав, заключения и списка литературы из 82 наименований.
Разнообразие угроз в сетях динамической топологии
Характерные черты СДТ, равно как и особенности используемых сетевых протоколов, порождают большое количество потенциальных проблем, связанных с безопасностью обмена информацией в таких сетях. Представление СДТ как совокупности взаимодействующих друг с другом сложных устройств порождает специфический механизм возникновения потенциальных угроз в них. Динамически изменяющаяся со временем топология таких сетей делает невозможным использование традиционных подходов к обеспечению сетевой безопасности, многие из которых опираются на набор предположений о системе:
наличие статических адресов, выдаваемые узлам выделенной базовой станцией;
редкое перестроение маршрутов, которые могут полагаться фиксированными.
Причинами возникновения разнообразных угроз нарушения безопасности в СДТ являются:
общая физическая среда передачи данных: позволяет пассивное прослушивание эфира злоумышленником [10];
общедоступность устройств: отсутствие встроенных средств защиты узлов от целенаправленных воздействий на сетевой стек устройств со стороны злоумышленников;
отсутствие стандартизации, централизованного управления и системы доверенной верификации узлов: это делает возможным нахождение в сети как изначально вредоносных устройств, так и легитимных устройств, но имеющих уязвимости управляющего ПО и потому подверженных влиянию со стороны злоумышленников;
необходимость использования сложных алгоритмов маршрутизации: получение выигрыша в скорости (за счет реактивных маршрутов) и проигрыша в безопасности (доверие к новым узлам “по умолчанию”, отсутствие встроенных процедур установления доверия между узлами, двойственность сетевой роли узлов); невозможность реализации единой политики безопасности ввиду особенностей классической архитектуры СДТ, таких как отсутствие фиксированной топологии и центральных узлов;
Исходя из перечисленных причин возникновения разнообразных угроз нарушения безопасности, возможно сгруппировать УНБ в две категории по уровню и масштабу их проявления в системе. Так, угрозы нарушения безопасности проявляются:
1. на программном уровне. УНБ на данном уровне представления возникают из-за наличия уязвимостей и недостатков управляющего программного обеспечения (ПО) отдельных устройств в СДТ. Используя данные недостатки, злоумышленник может реализовать различные вредоносные сценарии: несанкционированный доступ и сбор конфиденциальной информации об устройствах, искажение и уничтожение критически важных данных, вывод устройств из строя, заражение устройств вредоносным кодом и перехват управления с целью развития дальнейших атак на другие устройства в СДТ. Такой сценарий нежелателен сам по себе, кроме того, он приводит к дальнейшим нарушениям маршрутизации в сети. Стоит отметить, что для ликвидации угроз СДТ программного уровня недостаточно один раз исследовать ПО каждого устройства в данной СДТ на предмет наличия уязвимостей. Из-за динамического характера топологии сети в ней могут появляться новые устройства, программное обеспечение которых ранее не встречалось и не подвергалось исследованию на предмет безопасности. Поэтому борьба с угрозами на данном уровне требует наличия механизма выявления программных уязвимостей в реальном времени;
2. на сетевом уровне. Такие УНБ возникают из-за отсутствия верификации узлов СДТ. Это позволяет вредоносным узлам обмениваться информацией наравне с прочими узлами, строить маршруты до различных узлов, выступать в качестве промежуточных в маршрутах между легитимными узлами, взаимодействовать с другими узлами иным образом. Используя особенности маршрутизации в СДТ, вредоносные узлы могут по своему усмотрению распорядиться проходящей по сети информацией, а также определенным образом воздействовать на другие устройства - нарушить их корректную работу, вывести их из строя, блокировать и перехватывать чужой трафик, искажать чувствительную информацию. Атаки, связанные с маршрутизацией, позволяют единовременно нарушить корректную работу сразу нескольких узлов сети. Стоит отметить, что проявления действий злоумышленника не всегда явные, что препятствует их своевременному обнаружению и предотвращению.
Сетевые угрозы в сетях VANET
Если рассматривать УНБ на сетевом уровне, то СДТ уязвимы как к классическим типам атак на беспроводные сети, так и имеют присущие только им проблемы [11]. Поскольку беспроводные самоорганизующиеся сети являются открытой системой, не имеют фиксированной топологии, лишены центральных узлов и широкополосного канала, нередко являются автономными и потому не имеют надежных источников питания, то реализация УНБ на сетевом уровне в виде атаки становится легкодоступной для злоумышленника.
Атаки в транспортных сетях VANET классифицируются по степени проявления злоумышленником себя в системе:
При пассивных атаках злоумышленник обычно скрывает своё присутствие от легитимных участников - он прослушивает канал для сбора определенных данных, но не для их искажения. Пассивные атаки могут быть разбиты на классы перехвата и анализа трафика.
При активных атаках злоумышленник, помимо прослушивания канала, вмешивается в нормальное функционирование сети. Данные атаки от пассивных отличает наличие видимых изменений в сети вследствие вредоносной деятельности злоумышленника [12]: искажения информации, нарушения работоспособности узлов, иные аномалии в показателях (перегрев, и т.д.) Активные атаки могут быть классифицированы на следующие группы: физические, фальсификация информации, повтор и изменение данных; отказ в обслуживании. Среди атак на маршрутизацию в СДТ можно выделить несколько популярных типов атак (Таблица 1).
Своевременное распознавание подобных атак и своевременное реагирование на них является актуальной задачей. Требуется новый алгоритмический подход к распознаванию этих и других атак.
Программные угрозы в сетях VANET
В отличие от сетевых УНБ, рассмотренных выше, программным УНБ подвержены в основном легитимные узлы СДТ, которые изначально не относятся к злоумышленнику. Доступность по сети каждого из узлов, отсутствие сертификации и централизованного контроля узлов СДТ приводят к тому, что легитимные узлы СДТ могут быть атакованы злоумышленником с реализацией всего спектра вредоносных последствий. Устройства могут быть выведены из работоспособного состояния; управление ими может быть перехвачено, и т.д. Данная ситуация может произойти из-за наличия уязвимостей в программном обеспечении узлов СДТ, достижимом при сетевом взаимодействии с узлами.
Выявление программных УНБ (уязвимостей) в программном стеке устройств СДТ само по себе является трудной математической задачей. Как будет показано далее в работе, эта задача является NP-трудной. Однако на сегодняшний день не существует полиномиального по времени алгоритма для точного решения таких задач. В худшем случае для каждой конкретной программы необходимо осуществить перебор всех возможных значений входных параметров, что потребует экспоненциального количества операций относительно размера входа. В связи с этим такой подход неприменим на практике.
Существуют различные методы поиска уязвимостей, не основанные на полном переборе – фаззинг, символьное выполнение кода, эвристический поиск уязвимостей в коде. Применительно к решаемой задаче каждый из них обладает своими недостатками – рассмотрим их подробнее.
Угроза нарушения безопасности как внутреннее свойство системы
Трудности с выявлением как программных, так и сетевых УНБ имеют схожий характер. Предлагается единая аналитическая модель угроз в СДТ. Существование УНБ в СДТ вне зависимости от конкретной формы её описания определяется самой системой и её неявными свойствами, внутренними характеристиками, скрытыми в системе факторами. Данная зависимость выражена в виде функции h от значений скрытых факторов системы (10) (Рисунок 20).
Как можно было ранее заметить в примерах сетевых и программных УНБ, данные факторы имеют различную природу и масштаб, трудно формализуемы, часто не имеют аналитического представления и описаны сложными функциями gi от полного описания СДТ (11).
Последовательности содержат переменное число инструкций, где каждая инструкция изначально представляется численным вектором в унарном коде – все координаты нулевые, кроме той, которая соответствует индексу данной инструкции в словаре D всех возможных инструкций с учетом разнообразия параметров (14).
Размер словаря D представляет собой количество всех возможных вариантов инструкций для конкретной процессорной архитектуры.
В случае сетевых угроз для систем, заданных в виде изменяющегося графа связности узлов СДТ, Sgraph включает в себя перечислимое множество всех возможных СДТ, представленных в виде зафиксированных в последовательные моменты времени изменений графов связности узлов с дополнительной информацией на рёбрах, ttJ = \...n (15).
Предлагается универсальное описание угроз в СДТ в виде булевой функции существования угрозы Т (16). Данная функция отображает элементы перечислимого множества S всевозможных описаний различных СДТ в булево множество {0, 1} (17). Каждому описанию некоторой СДТ функция Т сопоставляет либо число 0 (отсутствие УНБ), либо число 1 (присутствие УНБ).
Существующие методы и подходы к выявлению угроз могут быть сформулированы в терминах введенной функции существования угрозы Т. Любой современный метод анализа безопасности базируется на построении для Т приближающей функции R, заданной на некотором подмножестве 5rс5 множества описаний всех анализируемых систем. Методы анализа безопасности как правило имеют вероятностный ответ по поводу наличия или отсутствия УНБ, в связи с чем областью значений функции R является вещественный отрезок [0,1] (18).
Методы анализа безопасность имеют различные области применимости. Чем меньше мощность разности множеств S \ Sr тем более универсальным является метод: S \ Sr - min. Для каждой системы s є S зададим функцию проявления безопасности ТІ (i) , которая каждому возможному воздействию на систему сопоставляет число 0 (не проявляется нарушение безопасности) или 1(проявляется нарушение безопасности) (20).
Программная система s є S содержит УНБ тогда и только тогда, когда существуют хотя бы одно входное воздействие ІЄІ, при обработке которого проявляется нарушение безопасности в данной системе (21).
На этом соотношении основываются современные подходы к анализу безопасности. Проблемой построения искомых функций Т и 77, является то, что наличие в системе угрозы нарушения безопасности зависит от большого количества неявных, разнородных и абстрактных факторов, которые не выражаются лишь в терминах наличия/отсутствия определенных операций в системе. Поэтому для выявления нарушений безопасности в конкретной системе современные методы оперируют задачей построения 7 7, , приближающей функцию 77,.
Задача выявления нарушений безопасности в конкретной системе s є S описывается (22) следующим образом: для конкретной системе s є S найти такие воздействия, для которых 7 7,() = 1 .
Фаззинг в данной терминологии описывается как расчет значений функции Шр для конкретной системы se S и конкретных воздействий ієіи попытке выявления таких для которых RIS (і) = 1. Используя данное описание, можно заметить, что классический фаззинг имеет достаточно низкую эффективность, поскольку аппроксимация функции Т1р происходит лишь в тестируемых значениях и не позволяет дать ответа на поведение функций Т1р и Шр в других областях входных воздействий. Потому успешность фаззинга математически ничем не обеспечена, и на практике требует наличия внушительных вычислительных ресурсов [56].
Знания о внутренней структуре систем могут быть использованы для дополнительной оптимизации перебора в соответствие с каким-либо критерием. Выделяются два направления развития интеллектуальных методов фаззинга:
1. Повышение вероятности выявления нарушений безопасности за счет попытки сузить поиск в область “интересных” областей входных воздействий ІЄІ , для которых в среднем более вероятно, что RIS (і) -»1, и проверке работы системы на этих входных значениях.
2. Сокращение перебора за счет пропуска таких i„ext є / , для которых более вероятно, что RI (hext) = RIs(i previous), где і previous є - это входные значения, для которых уже проверена работа системы s є S , т.е. посчитано значение
Среди статических методов наиболее эффективным является символьное исполнение и его производные. В рамках предложенной выше терминологии методы символьного исполнения описываются следующим образом. Для конкретной системы s є S вдоль каждого из путей выполнения path1,path2,...,pathk строятся системы из различного количества условий, зависящих от потенциальных воздействий и параметров операций (24).
Проблемы практического обучения глубокой нейронной сети для задачи выявления угроз
Дискретность элементов описания СДТ.
Нейронные сети хорошо обрабатывают входные данные в той форме, где численные значения упорядочены и отражают степень присутствия каких-то значимых свойств. К примеру, значения пикселей у изображений упорядочены по насыщенности цвета; это позволяет подавать изображения на вход нейронной сети без каких-либо преобразований. Однако для дискретных видов данных это свойство не выполняется.
Поскольку нейронная сеть работает с численными значениями, необходимо выразить дискретные величины в численном виде. Отдельные дискретные объекты (“слова”) изначально представляются в виде численного индекса в общем словаре. На входе нейронной сети они представляются векторами в форме индексного представления. Это векторы с размерностью словаря, где все координаты нулевые, кроме одной в позиции, равной индексу слова в словаре (53).
Однако такое представление не является удовлетворительным, поскольку оно обладает следующими недостатками:
представления являются разреженными: значащей является лишь одна координата, а не все;
численные значения координат каждого вектора дискретны (принимают значения 0 и 1); они не выражают степень наличия каких-либо свойств в данных, то есть данные семантически не упорядочены;
в векторном пространстве каждая пара слов имеет ортогональные векторы. Метрика векторного пространства никак не связана с значениями слов по отдельности и их отношения между собой.
Лучшим представлением для слов естественного языка является так называемое семантическое векторное представление объектов. Как пример, таковым представлением для слов английского языка является векторное представление Word2Vec [66]. В противоположность индексному представлению, семантическое векторное представление объектов обладает следующими свойствами:
представления является плотными: каждая координата является значащей;
численные значения координат векторного представления объекта является вещественным; каждое значение выражает степень наличия в объекте некоторого свойства или принадлежность объекта какому-то классу;
близкие по семантическому смыслу объекты имеют близкие представления в семантическом векторном пространстве, и наоборот.
Предварительное построение семантических векторных представлений входных данных позволяет существенно уменьшить среднюю ошибку сети при классификации новых данных, и тем самым улучшить результат, даваемый глубокими нейронными сетями для целевой задачи классификации СДТ на наличие УНБ.
Плохая обучаемость ГНС
Глубокие нейронные сети в целом плохо поддаются обучению. При большом количестве промежуточных слоёв наблюдается эффект затухания градиента [67]. Суть эффекта заключается в том, что в процессе обучения сети конечные слои нейронной сети настраиваются первыми и не пропускают сигнал ошибки к начальным слоям в достаточной мере. Главная задача начальных слоев в ГНС -выделять первичные признаки из сырых данных и преобразовывать входы для дальнейшей обработки последующими слоями. Слабое изменение весовых коэффициентов в начальных слоях сети приводит к тому, что высших слои в результате этого оперируют с плохим, не являющимся оптимальным представлением входных данных. Как результат затухания градиента, при обучении достигается низкая точность обучения сети целиком. В работе [49] экспериментально показано, что ГНС не достигает критерия глобального оптимума при обучении на наборе помеченных данных.
Для решения проблемы затухания градиента необходимо предварительно сузить пространство входных значений сети, используя знания о характере входных данных. С точки зрения последующих слоев ГНС, входные данные должны быть отображены начальными слоями в такое пространство, в котором наиболее проявлены глубинные различия входов. По сути, речь идет о новом представлении входных данных, которое строят начальные слои для последующих слоёв. Существует несколько способов построения такого отображения:
Предварительное обучение начальных слоёв сети на непомеченных данных. Весовые коэффициенты в начальных слоях предварительно настраиваются “без учителя” (то есть на непомеченных данных), в результате чего формируются лучшие представления входных данных [68]. Для этого используется специальные виды нейронных сетей. Например, сеть под названием автокодировщик позволяет обучать “без учителя” промежуточные слои других сетей [69]. Входной и выходной слои автоэнкодера имеют одинаковый размер, оптимизационный критерий обучения автоэнкодера – степень похожести выхода автоэнкодера на его вход (Рисунок 33). Во избежание тривиального решения (переноса входа к выходу без изменений), на промежуточные слои накладывается одно из двух требований: либо убывание размеров слоёв при движении от входного слоя к центральному, либо разреженность активация промежуточных слоёв.
Автоэнкодер учится восстанавливать входные значения на своем выходе, в результате чего в обученном среднем слое автоэнкодера строится новое, более плотное представление входных данных. И-за накладываемых ограничений автоэнкодер учится сжимать входные данные, представлять их в более компактной форме, распознавая закономерности, которые в них скрыты. Эффект сжатия входных данных достигается не на любых входах, но на данных, которые были использованы для его обучения. Таким образом, для начальных слоев исходной сети строятся новые представления входных данных, последовательно обучаясь в качестве средних слоев автокодировщика на входных данных.
В работе [49] показано, что такой подход даёт существенный прирост качества обучения всей сети, в сравнении с той же сетью без предварительного обучения (Рисунок 34). В данном эксперименте глубокая сеть достигла лучшего глобального минимума ошибки, когда её начальные слои были предварительно обучены “без учителя”.
Сопутствующая настройка начальных слоёв сети при обучении на помеченных данных для вспомогательной задачи. Данная концепция опирается на принцип обучения с переносом [70] и позволяет обучать некоторые части одной (основной) сети с помощью обучения другой (вспомогательной) сети на вспомогательной задаче (Рисунок 35). Данный принцип будет далее рассмотрен более подробно.
Проблема переобучения в сложных ГНС.
Помимо проблемы затухания градиента, ГНС со множеством слоев и настраиваемых весовых коэффициентов подвержены проблеме переобучения [71]. Данная проблема проявляется в ситуации, когда количество настраиваемых параметров в ГНС намного больше, чем размер обучающей выборки. В этом случае обучение сети приводит к нежелательному эффекту: сеть вместо выявления закономерностей в элементах обучающей выборки начинает просто запоминать для них правильные ответы. Это приводит к почти стопроцентной точности ответов сети на элементах обучающей выборки, однако точность на проверочной выборке безнадежно падает.
Как было ранее указано, для целевой задачи выявления УНБ в СДТ путем приближения булевой функции существования угрозы трудно сформировать обучающую выборку достаточно большого размера. Поскольку информацию об УНБ большинство организаций не стремится широко распространять, то получение большого количества примеров небезопасного кода является сложно разрешимой задачей. Так, имеющиеся в открытом доступе выборки безопасного и небезопасного кода содержат в среднем по 1000 примеров для каждого класса уязвимостей [72], что весьма мало по сравнению с количеством весовых коэффициентов в актуальных конфигурациях ГНС (Количество колеблется от 10e4 до 10e6 весовых коэффициентов).
Использование тренируемого начального слоя векторных представлений входных объектов существенным образом увеличивает количество настраиваемых параметров сети для решения основной задачи. Прирост количества параметров по сравнению со статичными векторными представлениями (54) пропорционален размеру словаря D всех дискретных элементов описания СДТ (узлов сети/машинных инструкций), который достигает больших величин для стандартных процессорных архитектур и больших графов СДТ.
Практическое выявление угроз с помощью различных модификаций гибридной нейронной сети
Верность предлагаемых подходов была продемонстрирована на практике для нескольких классов программных и сетевых уязвимостей.
В качестве тренировочного набора данных был выбран один из немногих общедоступных тренировочных наборов сравнительно большого размера – набор примеров уязвимого и чистого кода Juliet [72].
Выявление программных УНБ типа двойного освобождения памяти с помощью гибридной ГНС
Был проведен эксперимент, который доказал применимость предлагаемых методов для выявления программных УНБ в реально встречающемся программном коде.
Изначально тренировочный набор данных, построенный на основе Juliet, содержал 321 пар различных примеров, которые содержат уязвимости типа Double Free и не содержали их.
Гибридная ГНС обучалась на помеченных данных, которые содержали программы с наличием. 214 пар из 321 были использованы для обучения ГНС, а оставшиеся 107 пар были использованы для проверки качества результата.
В результате обучения ГНС для каждого класса уязвимостей в отдельности в её рекуррентных слоях была автоматически обучена функция g(x) = \Jgi(x) , отображающая входные программы в семантическое пространство неявных признаков кода с размерностью 48. Для визуального отображения построенных зависимостей, было получена проекция семантического пространства признаков в 2D пространство с использованием алгоритма t-SNE [82] (Рисунок 46). Можно увидеть следующие важные закономерности:
ГНС отображает небезопасные программы из тренировочного множества (голубые точки) и небезопасные программы из проверочного множества (синие точки) в одну область пространства признаков; безопасные программы из тренировочного и проверочного множества - в другую область пространства признаков, хотя проверочные входы не использовались в процессе обучения ГНС. Это говорит о том, что в результате обучения ГНС выявила скрытые факторы во входных данных, которые приводили к соответствующим пометкам каждой программы в тренировочном множестве, и применила эти знания к новым программам, не присутствующим в тренировочном множестве.
Области в пространстве признаков, куда отображены безопасные и небезопасные программы, разделимы, что позволяет классифицировать программы по свойству безопасности.
С настройкой на тренировочном множестве программ последних, полносвязных слоев ГНС, результирующая сеть строит многомерное многообразие, которое разделяет безопасные и небезопасные программы в семантическом пространстве признаков. Результирующая статистика выявления УНБ типа Double Free приведена в таблице 7.
Как можно видеть из таблицы 7, предлагаемый подход вновь позволил выявлять новые угрозы со средней точностью в 93 процента.
Выявление программных УНБ типа нулевого разыменования памяти с помощью гибридной ГНС
Аналогичный эксперимент был проведен для уязвимостей типа разыменования нулевого указателя (NULL Dereference). Множество всех программ содержит 550 пар программ в безопасном и небезопасном варианте исполнения.
300 случайных пар программ из списка были выбраны в качестве тренировочного набора; оставшиеся 250 были взяты в качестве проверочных.
Как можно видеть из таблицы, предлагаемый подход вновь позволил выявлять новые угрозы нулевого разыменования памяти со средней точностью в 98 процентов.
Выявление программных УНБ типа Integer Overflow с помощью гибридной ГНС в условиях ограниченных знаний
Для выявления УНБ типа “целочисленное переполнение” в качестве обучающих данных была взята малая доля всех рассматриваемых программ:
случайное множество размером в 1/5 часть от всего множества из 1823 пар примеров - как тренировочный набор;
другие 1/5 от всего множества - как проверочный набор.
Как можно видеть на рисунке 48, несмотря на малое количество обучающих примеров, множества безопасных и опасных программ все равно оказываются разделимыми. Гибридная ГНС отображает программы из проверочного набора в те же области сематического пространства, что и программы из обучающего множества. Ввиду малого количества данных падает точность выявления безопасных программ, однако точность выявления опасных остается на таком же высоком уровне. Результирующая статистика приведена в таблице 9.