Метод генерации семантически корректного кода для фаззинг-тестирования JavaScript-интерпретаторов на основе мутации АСД фрагментов кода тема диссертации и автореферата по ВАК РФ 00.00.00, кандидат наук Ерохина Наталья Сергеевна
- Специальность ВАК РФ00.00.00
- Количество страниц 131
Оглавление диссертации кандидат наук Ерохина Наталья Сергеевна
ВВЕДЕНИЕ
1 ПОСТАНОВКА ЗАДАЧИ ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ JAVASCRIPT-ИНТЕРПРЕТАТОРОВ
1.1 Анализ объекта исследования
1.1.1 Веб-браузеры и их структура
1.1.2 1ауаЗепр1;-интерпретаторы
1.1.3 Уязвимости JavaScript-интерпретаторов
1.2 Анализ предмета исследования
1.2.1 Требования по безопасной разработке
1.2.2 Общие подходы к фаззинг-тестированию сложного программного обеспечения
1.2.3 Анализ фаззеров JavaScript-интерпретаторов
1.2.4 Ключевые особенности фаззинга JavaScript-интерпретаторов
1.3 Формальная постановка научной задачи исследования
Выводы
2 МОДЕЛЬ ГЕНЕРАЦИИ ВХОДНЫХ ДАННЫХ ДЛЯ ФАЗЗИНГА JAVASCRIPT-ИНТЕРПРЕТАТОРОВ
2.1 Оценка влияния исходной семантики входного корпуса при генерации сложноструктурированных данных
2.2 Влияние уровня манипулирования данными на сохранение синтаксиса и семантики
2.3 Анализ методов машинного обучения для генерации сложноструктурированных данных
2.3.1 Языковое моделирование
2.3.2 Подбор гиперпараметров рекуррентной нейронной сети
2.3.3 Оценка выбранной архитектуры рекуррентной нейронной сети
2.4 Модель генерации входных данных для фаззинг-тестирования JavaScript-интерпретаторов на основе рекуррентной нейронной сети
2.5 Оценка покрытия тестируемого кода JavaScript-интерпретаторов сгенерированными входными данными
Выводы
3 МЕТОД МУТАЦИИ СЛОЖНОСТРУКТУРИРОВАННЫХ ДАННЫХ
3.1 Анализ архитектуры современного фаззера
3.2 Метод мутации сложноструктурированных данных
3.3 Архитектура системы генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов
3.3.1 Программная реализация нового средства фаззинга JavaScript-интерпретаторов и предложения по его применению
3.4 Оценка эффективности разработанной архитектуры
Выводы
ЗАКЛЮЧЕНИЕ
СПИСОК СОКРАЩЕНИЙ И УСЛОВНЫХ ОБОЗНАЧЕНИЙ
СПИСОК ТЕРМИНОВ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ А
ПРИЛОЖЕНИЕ Б
ПРИЛОЖЕНИЕ В
ПРИЛОЖЕНИЕ Г
Рекомендованный список диссертаций по специальности «Другие cпециальности», 00.00.00 шифр ВАК
Разработка нового метода автоматизированного тестирования программных библиотек2023 год, кандидат наук Чан Ти Тхиен
Исследование и разработка методов автоматического поиска ошибок в компиляторах языков программирования2024 год, кандидат наук Степанов Даниил Сергеевич
Методы оптимизации алгоритмов статического и динамического анализа программ2024 год, доктор наук Саргсян Севак Сеникович
Методы выявления поверхности атаки веб-приложений при помощи анализа клиентского JavaScript-кода2024 год, кандидат наук Сигалов Даниил Алексеевич
Метод повышения устойчивости браузеров мобильных устройств к атакам на основе межсайтового выполнения сценариев2013 год, кандидат наук Глабай, Сергей Николаевич
Введение диссертации (часть автореферата) на тему «Метод генерации семантически корректного кода для фаззинг-тестирования JavaScript-интерпретаторов на основе мутации АСД фрагментов кода»
ВВЕДЕНИЕ
Актуальность темы исследования. В 2024 году согласно отчёту аналитического агентства Meltwater1 в мире насчитывается 5,35 миллиарда пользователей сети Интернет, что составляет 66,2% мирового населения, 69,4% населения имеют собственный мобильный телефон. На каждом из этих устройств работает веб-браузер или аналогичная программа, способная обрабатывать и отображать контент веб-сайтов. Большинство веб-страниц встраивают или загружают исходный код, написанный на языке программирования JavaScript. В 2024 году JavaScript является одним из самых широко используемых языков программирования в мире. По данным рейтинга W3Techs2 на октябрь 2024 года 98,9% всех веб-сайтов используют язык JavaScript. Веб-браузеры совершенствуются и становятся все более сложными, осуществляя обработку не только открытого текста и HTML, но и изображений, видео и других форматов данных. Любой современный веб-браузер поддерживает язык динамической разработки JavaScript без использования дополнительного программного обеспечения (ПО) с помощью встроенного JavaScript-интерпретатора (англ. JavaScript engine).
Среди всей архитектуры веб-браузера поиск уязвимостей в JavaScript-интерпретаторах является наиболее сложной и потому востребованной задачей в тестировании веб-браузеров. Согласно Национальной базе данных уязвимостей (англ. National Vulnerability Database, NVD3) 43% всех уязвимостей, обнаруженных в веб-браузерах Microsoft Edge и Google Chrome, были уязвимостями интерпретатора JavaScript. Высокая сложность современных JavaScript-интерпретаторов, обусловленная большим объемом исходного кода, иногда достигающим нескольких миллионов строк, а также
1 https://www.meltwater.com/en/global-digital-trends.
2 https://w3techs.com/technologies/details/cp-javascript.
3 https://nvd.nist.gov/.
наличием уязвимостей и ошибок в нем, является фундаментальной проблемой, вызванной текущим состоянием информационных технологий. Стремительное развитие интернет технологий приводит к постоянному усложнению структуры JavaScript-интерпретаторов и увеличению объема их исходного кода. Данный факт негативно влияет на безопасность, что, в свою очередь, активизирует деятельность авторов вредоносных программ.
В наши дни большинство ошибок в программном обеспечении, связанных с удаленным выполнением кода и повышением привилегий, обнаруживаются при помощи фаззинг-тестирования. Вследствие имеющихся особенностей при тестировании JavaScript-интерпретаторов данный процесс может быть недостаточно эффективным.
Степень разработанности темы исследования. Тематика диссертационного исследования достаточно молода, вследствие этого существует множество разных подходов для решения задачи выявления уязвимостей в сложном программном обеспечении. Проблеме анализа безопасности программного обеспечения посвящено множество исследований отечественных и зарубежных ученых, таких как Д.П. Зегжда, П.Д. Зегжда, В.П. Иванников, А.И. Аветисян, А.С. Марков, А.Ю. Тихонов, В.А. Падарян, А.В. Козачок, А.В. Благодаренко, М.О. Шудрак, М.А. Новиков, И.В. Котенко, Г. Вигна, К. Крюгель, Э. Кирда. Обнаружению уязвимостей посвящены работы Я.Н. Алгулиева, И.Л. Алферова, А.А. Захарова, С.Л. Зефирова, Д.О. Карпеева, А.Г. Кащенко, А.А. Кононова, Д.А. Котенко, В.А. Курбатова, Г.А. Кустова, И.Д. Левятова, А.Г. Лысенко, А.В. Львова, А.Н. Назарова, А.Г. Остапенко, Г.А. Остапенко, А.О. Сидорова, М.В. Тимонина, C. Alberts, G. Brandeland, N.E. Fenton, F.V. Jensen, C. Kairab, M. Neil, A. Papoulis, T.R. Peltier, M. Tailor, и др. В работах S. Park, J. Wang, C. Aschermann, S. Lee предложена обработка сложноструктурированных данных на уровне абстрактного синтаксического дерева (АСД, англ. Abstract Syntax Tree, AST). В результате анализа научных работ, посвященных рассматриваемой области,
можно сделать вывод о существовании ряда неразрешенных вопросов, касающихся обнаружения уязвимостей безопасности в ПО, обрабатывающем сложноструктурированные данные, таком как JavaScript-интерпретаторы.
Диссертационная работа выполнена в соответствии с одним из основных научных направлений Академии Федеральной службы охраны Российской Федерации.
Объектом исследования являются JavaScript-интерпретаторы.
Предметом исследования являются методы и средства генерации входных данных и фаззинг-тестирования JavaScript-интерпретаторов.
Целью работы является повышение эффективности фаззинг-тестирования JavaScript-интерпретаторов для выявлении дефектов безопасности.
Для достижения поставленной цели в работе решались следующие задачи:
1. Проведение сравнительного анализа эффективности современных средств фаззинг-тестирования JavaScript-интерпретаторов, выделение существующих недостатков и причин их возникновения, а также определение возможных способов их устранения.
2. Разработка модели генерации входных данных для фаззинг-тестирования JavaScript-интерпретаторов на основе рекуррентной нейронной сети, учитывающей степень покрытия кода, позволяющей сжать входной корпус данных без потери исходного покрытия, что, в свою очередь, позволит повысить эффективность последующего фаззинг-тестирования.
3. Разработка метода мутации сложноструктурированных данных, сохраняющего синтаксис и семантику данных за счет модификации АСД фрагментов JavaScript-кода, который позволит сократить количество тестовых итераций, не открывающих новых путей, и тем самым повысить эффективность процесса обнаружения дефектов безопасности.
4. Разработка и практическая реализация архитектуры системы генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов, основанной на разработанных модели генерации и методе мутации, позволяющая повысить эффективность последующего фаззинг-тестирования.
5. Проведение экспериментальных исследований предложенных решений и оценка их эффективности.
Научная новизна диссертационного исследования состоит в следующем:
1. Разработана модель генерации входных данных, интегрирующая рекуррентные нейронные сети с оценкой покрытия кода, что впервые позволяет выявить синтаксис и семантику исходного сложноструктурированного корпуса данных и автоматически сгенерировать сжатый корректный корпус, повышающий покрытие кода JavaScript-интерпретаторов. В отличие от существующих решений, предложенная модель выявляет основные закономерности из исходных данных и сжимает их без потери в покрытии, что позволяет повысить эффективность последующего фаззинг-тестирования путем максимизации покрытия уникальных путей.
2. Разработан метод мутации JavaScript-кода на основе АСД, который сохраняет синтаксическую и семантическую корректность сложноструктурированных данных. В отличие от традиционных подходов, метод позволяет выполнять целенаправленные модификации кода, сохраняя его структуру и функциональность, что способствует повышению эффективности фаззинг-тестирования.
3. Впервые предложена архитектура системы, сочетающая генерационные и мутационные подходы в фаззинг-тестировании JavaScript-интерпретаторов. Разработанная архитектура включает модель генерации и метод мутации сложноструктурированных данных, что позволяет повысить эффективность выявления дефектов безопасности в JavaScript-
интерпретаторах. В отличие от существующих систем, данная архитектура оптимизирует процесс тестирования за счет автоматизации и интеграции моделей машинного обучения для генерации и мутации данных.
Теоретическая значимость результатов работы заключается в развитии новых подходов к фаззинг-тестированию JavaScript-интерпретаторов, объединяющих методы машинного обучения, такие как рекуррентные нейронные сети, и подходы к мутации сложноструктурированных данных на основе АСД. Впервые предложены модель генерации и метод мутации, которые выявляют исходные закономерности данных, а также сохраняют синтаксическую и семантическую корректность мутированных данных, что позволяет повысить эффективность выявления дефектов безопасности при фаззинг-тестировании. Эти результаты расширяют существующую теоретическую базу автоматизированного тестирования и могут служить основой для дальнейших исследований в области разработки методов генерации и мутации данных, направленных на повышение надежности и безопасности программного обеспечения.
Практическая значимость результатов работы состоит в разработке и внедрении системы, сочетающей генерацию и мутацию входных данных для фаззинг-тестирования JavaScript-интерпретаторов, что позволяет существенно повысить эффективность фаззинг-тестирования для выявления дефектов безопасности. Разработанная модель генерации входных данных с использованием рекуррентных нейронных сетей и метод мутации на основе АСД позволяют интегрировать решения в существующие инструменты тестирования, улучшая их работу за счет повышения покрытия кода и сохранения корректности данных. Разработанные модель генерации и метод мутации в системе генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов обеспечивают повышение показателей эффективности фаззинг-тестирования по времени в 2,7 раза, по числу тестовых итераций - в 4,4 раза и повышает общую производительность
выявления дефектов безопасности в 3,6 раза, что имеет высокую практическую ценность для организаций, занимающихся разработкой и исследованием программного обеспечения, и может быть применено в реальных промышленных и исследовательских задачах.
Методология и методы исследования. Для решения поставленных задач в диссертационной работе использовались методы системного анализа, машинного обучения, элементы теории компиляции, теории графов, теории вероятностей и математической статистики, методы компьютерной алгебры, методы анализа и виртуализации программного кода.
Положения, выносимые на защиту:
1. Модель генерации входных данных для фаззинг-тестирования JavaScript-интерпретаторов на основе рекуррентной нейронной сети, учитывающая степень покрытия кода.
2. Метод мутации сложноструктурированных данных, сохраняющий синтаксис и семантику данных за счет модификации АСД фрагментов JavaScript-кода.
3. Архитектура системы генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов.
Внедрение результатов работы. Результаты работы внедрены в проектную деятельность ООО «Системы защиты информации», в учебный процесс РТУ МИРЭА при проведении практических и лабораторных занятий по дисциплине «Технологии машинного обучения в кибербезопасности».
Степень достоверности научных положений подтверждается представленным анализом научных работ по предмету исследования, обоснованностью выводов, результатами экспериментальных исследований и примерами их практического использования, апробацией основных результатов работы в научных изданиях и докладах на конференциях.
Соответствие специальности научных работников. Научные результаты соответствуют следующим пунктам паспорта специальности
научных работников 2.3.6. Методы и системы защиты информации, информационная безопасность:
п. 5. Методы, модели и средства (комплексы средств) противодействия угрозам нарушения информационной безопасности в открытых компьютерных сетях, включая Интернет;
п. 15. Принципы и решения (технические, математические, организационные и др.) по созданию новых и совершенствованию существующих средств защиты информации и обеспечения информационной безопасности;
п. 17. Методы, модели и средства разработки безопасного программного обеспечения, выявления в нем дефектов безопасности, противодействия скрытым каналам передачи данных и выявления уязвимостей в компьютерных системах и сетях.
Апробация результатов работы. Основные результаты работы были представлены на следующих конференциях: Международная научно-техническая конференция «Безопасные информационные технологии» (Москва, 2021, 2023), Всероссийская научно-практическая конференция «Методы и технологические средства обеспечения безопасности информации» (Санкт-Петербург, 2022, 2023, 2024), Открытая конференция Института системного программирования им. В.П. Иванникова Российской академии наук (Москва, 2023), Национальная научно-практическая конференция «Фундаментальные, поисковые, прикладные исследования и инновационные проекты» (Москва, 2023), Всероссийская межведомственная научная конференция «Актуальные направления развития систем охраны специальной связи и информации для нужд органов государственной власти РФ» (Орёл, 2021, 2023).
Публикации по теме диссертации. Результаты диссертации опубликованы в 13 работах, в том числе в 5 публикациях в рецензируемых
журналах из перечня ВАК РФ, а также в 2 свидетельствах о регистрации программы для ЭВМ.
Структура и объем диссертации. Диссертация состоит из введения, трех глав, заключения, списка литературы из 122 наименований и 4 приложений. Общий объем работы составляет 131 страницу, в том числе 37 рисунков и 9 таблиц.
Во введении обоснована актуальность темы диссертации, поставлена цель, определены задачи. Выделены положения, выносимые на защиту, сформулирована научная новизна, теоретическая и практическая значимость. Представлены сведения по апробации работы и приведено краткое содержание диссертации по главам.
В первой главе представлены результаты анализа информационной безопасности JavaScript-интерпретаторов, приводится систематизация уязвимостей и анализ подходов к обеспечению информационной безопасности JavaScript-интерпретаторов. Представлена формальная постановка научной задачи, заключающаяся в разработке модели генерации входных данных для фаззинг-тестирования JavaScript-интерпретаторов, метода мутации сложноструктурированных данных, а также архитектуры системы генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов.
Во второй главе проведены исследования влияния уровня представления сложноструктурированных данных на сохранение их синтаксической и семантической корректности, а также в качестве входного корпуса для генерации данных выбраны файлы регрессионных тестов (РТ), ввиду более полного представления исходной семантики языка JavaScript. Предложена модель генерации входных данных для фаззинг-тестирования JavaScript-интерпретаторов на основе рекуррентной нейронной сети (РНС), учитывающая степень покрытия кода.
В третьей главе предложен метод мутации сложноструктурированных данных, сохраняющий синтаксис и семантику данных за счет модификации АСД фрагментов JavaScript-кода, а также архитектура системы генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов в едином контуре тестирования. Приведена архитектура системы генерационного и мутационного фаззинг-тестирования JavaScript-интерпретаторов, с применением разработанных модулей генерации и мутации, а также результаты экспериментальных исследований разработанных метода и архитектуры, направленных на повышение эффективности фаззинг-тестирования JavaScript-интерпретаторов.
В заключении приведены основные результаты, полученные в ходе выполнения диссертации.
1 ПОСТАНОВКА ЗАДАЧИ ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ JAVASCRIPT-ИНТЕРПРЕТАТОРОВ
В данной главе приводятся результаты анализа особенностей функционирования JavaScript-интерпретаторов. Приводятся угрозы безопасности и обзор подходов к обеспечению информационной безопасности JavaScript-интерпретаторов, выделяются их достоинства и недостатки. Обосновано применение фаззинг-тестирования с целью эффективного обнаружения дефектов безопасности JavaScript-интерпретаторов. Проанализированы существующие фаззеры, выделены их достоинства и недостатки.
1.1 Анализ объекта исследования 1.1.1 Веб-браузеры и их структура
Веб-обозреватель (веб-браузер) - программное обеспечение для обработки и вывода различных составляющих веб-страницы и представления интерфейса (функционала взаимодействия) между веб-сайтом и его посетителем [1]. Веб-браузеры совершенствуются и становятся все более сложным программным обеспечением (ПО), осуществляя обработку не только текстовых данных и языка гипертекстовой разметки (англ. HyperText Markup Language, HTML), но и изображений, видео и других форматов данных. Наиболее часто используемыми веб-браузерами являются Mozilla Firefox, Google Chrome, Safari, Opera Mini и Internet Explorer.
Стремительное развитие интернет-технологий с каждым годом требует от веб-браузеров поддержки новых, все более сложных стандартов, что обусловлено рядом факторов, такими как рост количества пользователей, быстрое развитие веб-приложений и онлайн-сервисов, увеличение количества
угроз кибербезопасности. Таким образом, веб-браузеры должны не только реализовывать новые стандарты, но и постоянно эволюционировать, чтобы соответствовать требованиям быстро меняющегося цифрового мира, обеспечивая при этом безопасность, удобство и высокую производительность.
Благодаря развитию технологий HTML, CSS, JavaScript, а также серверных технологий (Apache, Nginx, AJAX) и серверных языков программирования (Python, Java, PHP и др.) стало возможным делать крупные массовые веб-приложения, обладающие большим функционалом. Благодаря этому каждый может оплатить коммунальные услуги в сети, пообщаться с коллегами в видеоконференции, делать онлайн-покупки, осуществлять поиск на основе своих интересов. Однако рост и расширение функциональности веб-приложений происходили столь быстро, что часто не удавалось добиться реализации всех запросов.
На рисунке 1.1 представлена типичная структура современного веб-приложения. JavaScript является одним из самых распространенных языков программирования на сегодняшний день. JavaScript, наряду с HTML и CSS, является одним из трех основных технологических языков создания контента в сети Интернет. Язык программирования JavaScript берет свое начало из декабря 1995 года, тогда он преподносился в качестве скриптового языка для выполнения небольших клиентских задач в браузере, однако уже первая версия JavaScript заложила все те фундаментальные особенности, которыми этот язык знаменит и сейчас. Большинство веб-приложений используют данный язык, который поддерживают все современные веб-браузеры без использования плагинов, с помощью встроенного механизма интерпретации и выполнения JavaScript [2].
Клиент
ВЕБ-БРАУЗЕР
ВОСПРОИЗВЕДЕНИЕ
Веб-сервер
Уровень представления
Компоненты пользовательского интерфейса Компоненты процесса пользовательского интерфейса
Бизнес-уровень Внешний вид приложения
Бизнес-процесс
Бизнес-компоненты
Бизнес-субъекты
Уровень данных
Компоненты доступа к данным
Утилиты
Л К
<и ю
о «
О К
со О
И «
О
данных
Сервисы
Рисунок 1.1 - Типичная структура современного веб-приложения
1.1.2 ^йЗспр^интерпретаторы
По состоянию октябрь 2024 года 98,9% всех веб-сайтов используют 1ауа8спр1-код [3]. На рисунке 1.2 представлена упрощенная блок-схема ядра веб-браузера. Каждая составная часть этой архитектуры находится на своем уровне и может взаимодействовать только с непосредственно связанным компонентом по иерархии. Наиболее интересным элементом данной схемы с точки зрения информационной безопасности является 1ауа8спр1;-интерпретатор.
Интерфейс пользователя
Высокоуровневый интерпретатор браузера
i
Графический интерпретатор
lili
1 JavaScript- Сеть 1 ■ интерпретатор |xML„apcep|
■ ш
■ Сохранение
■ данных
Е
Рисунок 1.2 - Обобщенная структура веб-браузера
JavaScript-интерпретатор (англ. JavaScript engine) - это программа, выполняющая код, написанный на JavaScript. Интерпретатор может быть реализован с использованием различных подходов: в виде обычного интерпретатора или в виде динамического компилятора (англ. Just-In-Time compiler, JIT), который отличается тем, что перед выполнением программы преобразует исходный JavaScript код в байт-код [4].
В настоящее время распространены 3 основных JavaScript-интерпретатора [5]:
1. V8, поддерживаемый компанией Google, используется в Chrome и среде Node.js.
2. SpiderMonkey, поддерживаемый Firefox, используется в Mozilla Firefox, MongoDB, CouchDB и Gnome (до появления V8).
3. JavaScriptCore (JSC) - встроенный JavaScript-интерпретатор для Webkit. Он используется в Safari и во всех браузерах iOS.
А также 3 менее распространенных, но достойных упоминания интерпретатора:
4. Hermes - интерпретатор, созданный для оптимизации функций React Native. Он отличается низким потреблением памяти, а также
обеспечивает опережающую статическую оптимизацию и компактный байт-код.
5. JerryScript - суперлегкий интерпретатор, используемый для интернета вещей. Он способен работать на устройствах с небольшим объемом оперативной памяти и имеет размер менее 200 кБ.
6. Chakra - это интерпретатор браузера Internet Explorer. Он был разветвлен Microsoft для исходного браузера Edge, но позже Edge был перестроен как браузер на основе Chromium и, таким образом, теперь использует V8.
Несмотря на существующие различия в структуре представленных выше интерпретаторов, они имеют общую структуру и принцип работы (Рисунок 1.3) [6].
Рисунок 1.3 - Обобщенная схема работы JavaScript-интерпретатора
Современный 1ауаБсг1р1-интерпретатор по сути является не просто интерпретатором языка, а еще и современным и мощным компилятором с множествами уровней компиляции и оптимизации, каждый из которых может быть потенциальной поверхностью атаки.
Язык JavaScript основан на открытой спецификации ECMA, которая очень быстро меняется, что приводит к необходимости постоянного обновления JavaScript-интерпретаторов. Каждый интерпретатор подобен языковому модулю, который позволяет приложению поддерживать определенное подмножество стандартов языка JavaScript. Стремительное развитие технологий приводит к постоянному усложнению структуры JavaScript-интерпретаторов и увеличению их исходного кода. Данный факт негативно влияет на безопасность, что в свою очередь активизирует деятельность авторов вредоносных программ [7].
JavaScript-интерпретаторы стали основным компонентом современных веб-браузеров, поскольку они обеспечивают динамические и интерактивные функции на веб-страницах. Растущая популярность языка JavaScript также означает, что JavaScript-интерпретаторы становятся привлекательной мишенью для злоумышленников. Пытаясь улучшить производительность и функциональность современных JavaScript-интерпретаторов, разработчики постоянно вводят новые уязвимости в безопасности веб-браузеров [8].
1.1.3 Уязвимости JavaScript-интерпретаторов
Дефекты и ошибки в логике программы являются основной причиной возникновения уязвимостей в ПО. Согласно ГОСТ Р 50922-2006 под уязвимостью понимается свойство информационной системы, обусловливающее возможность реализации угроз безопасности, обрабатываемой в ней информации [9]. Обнаружение уязвимостей можно проводить в ручном режиме или же используя различные средства автоматизации. Уязвимости позволяют нарушителям получать несанкционированный доступ (НСД) к данным программы, ее переменным и функциям. Национальная база данных уязвимостей (англ. National Vulnerability Database, NVD) - это обширная база данных известных
уязвимостей, отнесенных к общеизвестным уязвимостям и рискам информационной безопасности (англ. Common Vulnerabilities and Exposures, CVE) [10]. Согласно NVD, 43% всех уязвимостей, о которых сообщалось в Microsoft Edge и Google Chrome, были уязвимостями JavaScript-интерпретатора [11]. За 2023 год в распространенных JavaScript-интерпретаторах было выявлено: 331 CVE - в интерпретаторе V8, 10 CVE -в интерпретаторе SpiderMonkey, 21 CVE - в интерпретаторе JavaScriptCore, а также 158 CVE - в интерпретаторе Chakra.
Задача JavaScript-интерпретатора - анализировать и выполнять код JavaScript. В отличие от большинства других сред сценариев, JavaScript-интерпретатор, встроенный в веб-браузер, должен безопасно обрабатывать ненадежные сценарии. Кроме того, он разработан с большим акцентом на производительность выполнения, чтобы обеспечить интерактивные клиентские веб-приложения. Как это часто бывает, повышение производительности связано с увеличением сложности базы кода, что, в свою очередь, приводит к ошибкам программирования, которые иногда являются критическими с точки зрения безопасности. JavaScript-интерпретаторы являются привлекательной мишенью для злоумышленников из-за их популярности и гибкости в построении кода, обнаруживающего уязвимости
[7].
Поверхность атаки JavaScript-интерпретатора представлена на рисунке 1.4. В случае со сложным ПО таким как веб-браузеры, поверхностей атаки достаточно много, некоторые из них будут вложенными, какие-то из них могут пересекаться между собой. И каждая поверхность атаки, на самом деле, может быть сопряжена с n-ым количеством некоторых векторов атаки, что важно для обнаружения уязвимости в веб-браузере и дальнейшей ее эксплуатации [8].
Объектная модель документа (англ. Document Object Model, DOM )
Синтаксический анализ HTML кода
Сетевые протоколы: HTTP/2, JSON, ...
Форматы файлов: аудио-, графика, PDF, XML, ...
JavaScript-интерпретатор
Песочница
Привязки ОС
^токсический анализатор
^токсический анализатор
Семантический анализатор
Интерпретатор
Компилятор
Оптимизатор
Сборщик мусора
Интерфейсы DOM
Интерфейсы ОС
Бекэнд + API (Intl, WebGL, . )
J
Рисунок 1.4 - Поверхность атаки JavaScript-интерпретатора
Полная по Тьюрингу природа JavaScript-интерпретаторов позволяет злоумышленникам внедрять сложный код, обнаруживающий уязвимости [12]. В частности, JavaScript-интерпретаторы оказались в центре внимания исследователей безопасности по разным причинам: во-первых, потенциал обнаружения уязвимости в долгосрочной перспективе в нем выше. Во-вторых, атака на JavaScript-интерпретатор гораздо более сложная, потому что технологически не так легко найти новую уязвимость. В-третьих, из соображений производительности они часто реализуются на небезопасных для памяти языках, что влечет за собой уязвимости, приводящие к повреждению памяти. В-четвертых, ввиду возросшей сложности их кода, увеличивается вероятность ошибок при разработке. Отчасти это связано с продолжающейся гонкой за производительностью среди поставщиков браузеров.
Похожие диссертационные работы по специальности «Другие cпециальности», 00.00.00 шифр ВАК
Поиск ошибок в бинарном коде методами динамической символьной интерпретации2022 год, кандидат наук Вишняков Алексей Вадимович
Высокопараллельная система выявления сетевых уязвимостей на основе генетических алгоритмов2013 год, кандидат наук Печенкин, Александр Игоревич
Методы и алгоритмы оценки защищенности встроенного программного обеспечения на основе нечеткой логики2020 год, кандидат наук Югансон Андрей Николаевич
Автоматизированные системы научных исследований угроз безопасности личности2023 год, кандидат наук Бабичева Маргарита Вадимовна
Разработка метода, алгоритмов и программ для автоматического поиска уязвимостей программного обеспечения в условиях отсутствия исходного кода2011 год, кандидат технических наук Благодаренко, Артем Васильевич
Список литературы диссертационного исследования кандидат наук Ерохина Наталья Сергеевна, 2024 год
СПИСОК ЛИТЕРАТУРЫ
1. Боброва Е. В. Методические рекомендации по созданию и развитию официальных сайтов и официальных страниц органов управления архивным делом, государственных и муниципальных архивов Российской Федерации / Е. В. Боброва, И. Н. Киселев // ВНИИДАД : М. - 2023. -185 с.
2. Козачок А. В., Николаев Д. А., Ерохина Н. С. Подходы к оценке поверхности атаки и фаззингу веб-браузеров //Вопросы кибербезопасности. -2022. - №. 3 (49). - С. 32-43, DOI: 10.21681/2311-3456-2022-3-32-43.
3. Usage statistics of JavaScript as client-side programming language on websites - URL : https://w3techs.com/technologies/details/cp-javascript - (дата обращения: 27.01.2023). - Текст: электронный.
4. Guixin Ye, Zhanyong Tang, Shin Hwei Tan, Songfang Huang, Dingyi Fang, Xiaoyang Sun, Lizhong Bian, Haibo Wang, and Zheng Wang. Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing // In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI '21), 2021, Virtual, Canada. ACM, New York, NY, USA, DOI: 10.1145/3453483.3454054.
5. Lima I. et al. Exposing bugs in javascript engines through test transplantation and differential testing //Software Quality Journal. - 2021. - Т. 29. - С. 129-158.
6. Недяк М. С. и др. Повышение эффективности поиска уязвимостей с использованием технологии фаззинга в виртуальных машинах JavaScript: дипломная работа (проект) специалиста по направлению подготовки: 10.05. 01-Компьютерная безопасность. - 2021.
7. Козачок А. В., Спирин А. А., Ерохина Н. С. Метод генерации семантически корректного кода для фаззинг-тестирования интерпретаторов JavaScript // Вопросы кибербезопасности. - 2023. - №. 5 (57). - С. 80-88, DOI: 10.21681/2311-3456-2023-5-80-88.
8. Козачок, А. В. Способ фаззинг-тестирования интерпретаторов Javascript на основе AST мутаций / А. В. Козачок, Н. С. Ерохина // Фундаментальные, поисковые, прикладные исследования и инновационные проекты: Сборник трудов Национальной научно-практической конференции, Москва, 07-08 декабря 2023 года. - Москва: Ассоциация выпускников и сотрудников ВВИА им. профессора Н.Е. Жуковского содействия сохранению исторического и научного наследия ВВИА им. профессора Н.Е. Жуковского, 2023. - С.55-59.
9. ГОСТ Р. 50922-2006 Защита информации. Основные термины и определения. - URL : https://docs.cntd.ru/document/1200058320 (дата обращения: 24.10.2023) - Текст: электронный.
10. Черепанов К. А. Классификация уязвимостей ОС Android за 20182020 гг // Применение современных информационных технологий в служебно-боевой деятельности. - 2020. - С. 91-94.
11. Web-браузеры - URL : http://bourabai.ru/dbt/web/browsers.html (дата обращения: 24.11.2022). - Текст: электронный.
12. Lee S. et al. Montage: A neural network language model-guided javascript engine fuzzer //Proceedings of the 29th USENIX Conference on Security Symposium. - 2020. - С. 2613-2630, DOI: 10.48550/arXiv.2001.04107.
13. Groß S. Fuzzil: Coverage guided fuzzing for javascript engines // Department of Informatics, Karlsruhe Institute of Technology - 2018.
14. ГОСТ Р 56939-2016 Защита информации. Разработка безопасного программного обеспечения. Общие требования - URL : https://docs.cntd.ru/document/1200135525 (дата обращения: 24.01.2021) - Текст: электронный.
15. Козачок, А. В., Козачок, В. И., Осипова, Н. С., Пономарев, Д. В. Обзор исследований по применению методов машинного обучения для повышения эффективности фаззинг-тестирования // Вестник ВГУ. Серия:
Системный анализ и информационные технологии, 2021 (4), C. 83-106, DOI: 10.17308/sait.2021.4/3800.
16. Требования по безопасности информации, устанавливающие уровни доверия к средствам технической защиты информации и средствам обеспечения безопасности информационных технологий: Положение, утверждено приказом ФСТЭК России № 76 от 02.06.2020. - URL : https://docs.cntd.ru/document/566305930 (дата обращения: 24.11.2020). - Текст: электронный.
17. Методика выявления уязвимостей и недекларированных возможностей в программном обеспечении: Утверждена приказом ФСТЭК России от 25.12.2020 года. - URL : https://new.groteck.ru/images/catalog/70840/e75c72a254fcc880fa65657fdb144063 .pdf (дата обращения: 04.06.2021). - Текст: электронный.
18. Li J., Li J., Zhao B., Zhang C. Fuzzing: a survey // Cybersecurity, 2018, Vol. 1, No 1, p. 6, DOI: 10.1186/s42400-018-0002-y.
19. J. D. DeMott. Enhancing Automated Fault Discovery and Analysis. A dissertation submitted to Michigan State University in partial fulfillment of the requirements for the degree of Doctor of Philosophy Computer Science - 2012.
20. Герасимов, А.Ю. Классификация предупреждений об ошибках программы методом динамического символьного исполнения программы: диссертация кандидата физико-математических наук. ФГБУ ИСП РАН, Москва - 2019.
21. Debnath Mukta, Basak Chowdhury Animesh, Saha Debasri, Sur Kolay Susmita. FuCE: Fuzzing+Concolic Execution guided Trojan Detection in Synthesizable Hardware Designs, 2021, DOI: 10.48550/arXiv.2111.00805.
22. Gopinath R., Gôrz P., Groce A. Mutation Analysis: Answering the Fuzzing Challenge // arXiv preprint arXiv:2201.11303 - 2022. - DOI: /10.48550/arXiv.2201.11303.
23. Bounimova E., Godefroid P., Molnar D. Billions and Billions of Constraints: Whitebox Fuzz Testing in Production // In Proceedings of the International Conference on Software Engineering, С. 122-131 - 2013, DOI: 10.1109/ICSE.2013.6606558.
24. Godefroid, Michael Y. Levin, David Molnar. SAGE: Whitebox Fuzzing for Security Testing // Communications of the acm, 2012 (3), С. 40-44 DOI:10.1145/2093548.2093564.
25. Muhammad Noman Khalid, Muhammad iqbal, Kamran Rasheed, Malik Muneeb Abid. Web Vulnerability Finder (WVF): Automated Black-Box Web Vulnerability Scanner // I.J. Information Technology and Computer Science. - 2020 (4). - pp. 38-46, DOI: 10.5815/ijitcs.2020.04.05.
26. Danyang Zhao. Fuzzing Technique in Web Applications and Beyond // Journal of Physics: Conference Series 1678(1) - 2020. - DOI: 10.1088/17426596/1678/1/012109.
27. Зимин Е.Е. Методика фаззинг-тестирования кода с помощью AFL // Безопасные информационные технологии. Сборник трудов Одиннадцатой международной научно-технической конференции, Издательство: МГТУ имени Н.Э. Баумана - 2021. - С. 124-129.
28. Тронов К. А., Белов Ю.С. Оптимизация инструментария AFL для лучшего покрытия кода при работе со специфическими данными // E-Scio, ФГБОУ ВО «МГТУ имени Н.Э. Баумана - 2021 - № 5 (56). - С. 566-571.
29. ГОСТ Р 56921-2016 Национальный стандарт Российской Федерации Системная и программная инженерия. Тестирование программного обеспечения. Часть 2 Процессы тестирования - URL : https://docs.cntd.ru/document/1200134997 (дата обращения: 21.09.2023). -Текст: электронный.
30. Fioraldi A. et al. AFL++ combining incremental steps of fuzzing research //Proceedings of the 14th USENIX Conference on Offensive Technologies, 2020. - С. 10-10.
31. Chao W. C. et al. Design and Implement Binary Fuzzing Based on Libfuzzer //2018 IEEE Conference on Dependable and Secure Computing (DSC). -IEEE, 2018. - C. 1-2, DOI: 10.1109/DESEC.2018.8625172.
32. Peng Chen and Hao Chen. Angora: Efficient fuzzing by principled search. - 2018, DOI: 10.1109/SP.2018.00046.
33. Caroline Lemieux and Koushik Sen. Fairfuzz: Targeting rare branches to rapidly increase greybox fuzz testing coverage. In Proceedings of the 33rd IEEE/ACM International Conference on Automated Software Engineering. Acm, 2018.
34. Ruderman J. Introducing jsfunfuzz //URL http://www.squarefree. com/2007/08/02/introducing-jsfunfuzz. - 2007. - T. 20. - C. 25-29.
35. Holler C. et al. Fuzzing with Code Fragments //USENIX Security Symposium. - 2012. - C. 445-458.
36. Wang J, Chen B, Wei L, Liu Y. Skyfire: Data-Driven Seed Generation for Fuzzing. In: 2017 IEEE Symposium on Security and Privacy (SP). IEEE; 2017 - C. 579-94. DOI: 10.1109/SP.2017.23.
37. Han H. S., Oh D. H., Cha S. K. CodeAlchemist: Semantics-Aware Code Generation to Find Vulnerabilities in JavaScript Engines //NDSS. - 2019.
38. Wang J. et al. Superion: Grammar-aware greybox fuzzing //2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE). - IEEE, 2019. - C. 724-735, DOI: 10.1109/ICSE.2019.00081.
39. Aschermann C. et al. NAUTILUS: Fishing for Deep Bugs with Grammars //NDSS. - 2019, DOI: 10.14722/ndss.2019.23xxx.
40. Wu H., Fang B., Xie F. Smart Fuzzing of 5G Wireless Software Implementation // arXiv preprint arXiv:2309.12994, 2023, DOI: 10.48550/arXiv.2309.12994.
41. Gopinath R., Zeller A. Building fAC^ fuzzers // arXiv preprint arXiv:1911.07707. - 2019, DOI: 10.48550/arXiv.1911.07707.
42. Park S. et al. Fuzzing javascript engines with aspect-preserving mutation //2020 IEEE Symposium on Security and Privacy (SP). - IEEE, 2020. - С. 1629-1642, DOI: 10.1109/SP40000.2020.00067
43. Ye G. et al. Automated conformance testing for JavaScript engines via deep compiler fuzzing //Proceedings of the 42nd ACM SIGPLAN international conference on programming language design and implementation, 2021. - С. 435450, DOI: 10.1145/3453483.3454054.
44. Radford A. et al. Language models are unsupervised multitask learners //OpenAI blog. - 2019. - Т. 1. - №. 8. - С. 9.
45. Deng J. et al. Fuzzing with optimized grammar-aware mutation strategies //IEEE Access. - 2021. - Т. 9. - С. 95061-95071, DOI: 10.1109/ACCESS.2021.3093904.
46. Ye G. et al. A Generative and Mutational Approach for Synthesizing Bug-Exposing Test Cases to Guide Compiler Fuzzing //Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering. - 2023. - С. 1127-1139, DOI: 10.1145/3611643.3616332.
47. Ерохина, Н. С. Способ обнаружения программных дефектов в JavaScript-интерпретаторах методом фаззинг-тестирования / А. В. Козачок, Н. С. Ерохина, Д. А. Николаев // Вопросы кибербезопасности. - 2024. - №2. 2 (60). - С. 74-80, DOI: 10.21681/2311-3456-2024-2-74-80.
48. Yang Q, Li JJ, Weiss DM. A survey of coverage-based testing tools. The Computer Journal 52(5), 207 - C. 589-597, DOI: 10.1145/1138929.1138949.
49. C. Miller, Fuzz by number: More data about fuzzing than you ever wanted to know // in Proceedings of the CanSecWest, 2008.
50. Шудрак, М. О. Методика и программный комплекс для динамического поиска уязвимостей в бинарном коде / М. О. Шудрак // Программные продукты и системы. - 2014. - № 4. - С. 78-84.
51. Tian Y., Qin X., Gan S. Research on Fuzzing Technology for JavaScript Engines // The 5th International Conference on Computer Science and Application Engineering, 2021, C. 1-7, DOI: 10.1145/3487075.3487107.
52. Bingchang Liu, Guozhu Meng, Wei Zou, Qi Gong, Feng Li, Min Lin, Dandan Sun, Wei Huo, and Chao Zhang. 2020. A large-scale empirical study on vulnerability distribution within projects and the lessons learned. In 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE). IEEE, С.1547-1559.
53. Yingquan Zhao, Zan Wang, Junjie Chen, Mengdi Liu, Mingyuan Wu, Yuqun Zhang, and Lingming Zhang. 2022. History-driven test program synthesis for JVM testing. In 2022 IEEE/ACM 44th International Conference on Software Engineering (ICSE). IEEE, С. 1133-1144.
54. Marco D'Ambros and Michele Lanza. 2006. Software bugs and evolution: A visual approach to uncover their relationship. In Conference on Software Maintenance and Reengineering (CSMR'06). IEEE, 229-238.
55. Varuna Gupta, N Ganeshan, and Tarun Kumar Singhal. 2015. Determining the root causes of various software bugs through software metrics. In 2015 2nd International Conference on Computing for Sustainable Global Development (INDIACom). IEEE, С. 1211-1215.
56. Huanting Wang, Guixin Ye, Zhanyong Tang, Shin Hwei Tan, Songfang Huang, Dingyi Fang, Yansong Feng, Lizhong Bian, and Zheng Wang. 2020. Combining graph-based learning with automated data collection for code vulnerability detection. IEEE Transactions on Information Forensics and Security 16 (2020), 1943-1958. https://doi.org/10.1109/TIFS.2020.3044773.
57. Ерохина Н.С. Подходы к повышению эффективности мутаций сложноструктурированных данных при фаззинг-тестировании JavaScript интерпретаторов / Н.С. Ерохина, А.В. Козачок // Безопасные информационные технологии: XII Международная научно-техническая конференция. - 2023. -С. 75-79.
58. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding / J. Devlin, M.-W. Chang, K. Lee, K. Toutanova // Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers). - 2019. - С. 4171-4186.
59. Improving language understanding with unsupervised learning: tech. rep. / A. Radford, K. Narasimhan, T. Salimans, I. Sutskever. - 2018.
60. Attention is All you Need / A. Vaswani [et al.] // Advances in Neural Information Processing Systems 30 / ed. by I. Guyon [et al.]. - Curran Associates, Inc., 2017. - P. 5998-6008. - URL : http://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf (дата обращения: 24.03.2023). - Текст: электронный.
61. Merity, S. Regularizing and Optimizing LSTM Language Models / S. Merity, N. S. Keskar, R. Socher // International Conference on Learning Representations. - 2018. - URL: https://openreview.net/forum?id=SyyGPP0TZ.
62. Quasi-recurrent neural networks / J. Bradbury, S. Merity, C. Xiong, R. Socher // arXiv preprint arXiv:1611.01576. - 2016.
63. Zaremba, W. Recurrent neural network regularization / W. Zaremba, I. Sutskever, O. Vinyals // arXiv preprint arXiv:1409.2329. - 2014.
64. Grieco G, Grinblat GL, Uzal L, Rawat S, Feist J, Mounier L. Toward Large-Scale Vulnerability Discovery using Machine Learning. In: Proceedings of the Sixth ACM Conference on Data and Application Security and Privacy. ACM; 2016 - с. 85-96.
65. Lv C, Ji S, Li Y, Zhou J, Chen J, Chen J. SmartSeed: Smart Seed Generation for Efficient Fuzzing; arXiv preprint arXiv:1807.02606 - 2018.
66. Wu F, Wang J, Liu J, Wang W. Vulnerability detection with deep learning. In: 2017 3rd IEEE International Conference on Computer and Communications (ICCC); 2017 - 302 с.
67. Chernis B, Verma R. Machine Learning Methods for Software Vulnerability Detection. In: Proceedings of the Fourth ACM International.Workshop on Security and Privacy Analytics ACM. 2018. C. 31-39.
68. Cheng L, Zhang Y, Zhang Y, Wu C, Li Z, Fu Y, et al. Optimizing seed inputs in fuzzing with machine learning. In: Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings. IEEE Press, 2019 -c. 244-5.
69. Godefroid P, Peleg H, Singh R. Learn&Fuzz: Machine learning for input fuzzing. In: 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, 2017 - c. 50-9.
70. Fan R, Chang Y. Machine Learning for Black-Box Fuzzing of Network Protocols. In: International Conference on Information and Communications Security, 2017 - c. 621-32. DOI: 10.1007/978-3-319-89500-0_53.
71. Hu Z, Shi J, Huang Y, Xiong J, Bu X. Ganfuzz: A Gan-based industrial network protocol fuzzing framework. In: /Proceedings of the 15th ACM International Conference on Computing Frontiers. ACM; 2018 - c. 138-45. DOI: 10.1145/3203217.3203241.
72. Sablotny M, Jensen BS, Johnson CW. Recurrent Neural Networks for Fuzz Testing Web Browsers. In: International Conference on Information Security and Cryptology; 2018 - c. 354-70. DOI:10.1007/978-3-030-12146-4_22.
73. Nasrabadi MZ, Parsa S, Kalaee A. Format-aware Learn&Fuzz: Deep Test Data Generation for Efficient Fuzzing. arXiv Prepr arXiv181209961, 2018.
74. Paduraru C, Melemciuc M-C. An Automatic Test Data Generation Tool using Machine Learning. In: Proceedings of the 13th International Conference on Software Technologies. SCITEPRESS - Science and Technology Publications, 2018 - c. 506-15. DOI: 10.5220/0006836604720481.
75. Li Z, Zhao H, Shi J, Huang Y, Xiong J. An Intelligent Fuzzing Data Generation Method Based on Deep Adversarial Learning. IEEE Access, 2019b - c. 40.
76. Li Y, Ji S, Lv C, Chen Y, Chen J, Gu Q, et al. V-Fuzz: Vulnerability-Oriented Evolutionary Fuzzing. arXiv preprint arXiv:1901.01142. 2019a.
77. Gong W, Zhang G, Zhou X. Learn to Accelerate Identifying New Test Cases in Fuzzing. In: /International Conference on Security, Privacy and Anonymity in Computation, Communication and Storage. Springer, Cham, 2017 - c. 298-307. DOI:10.1007/978-3-319-72389-1_24.
78. Karamcheti S, Mann G, Rosenberg D. Improving Grey-Box Fuzzing by Modeling Program Behavior. arXiv Prepr arXiv181108973, 2018b.
79. Becker S, Abdelnur H, State R, Engel T. An Autonomic Testing Framework for IPv6 Configuration Protocols. In: IFIP International Conference on Autonomous Infrastructure, Management and Security. Springer, Berlin, Heidelberg, 2010 - c. 65-76.
80. Fang K, Yan G. Emulation-Instrumented Fuzz Testing of 4G/LTE Android Mobile Devices Guided by Reinforcement Learning. In: European Symposium on Research in Computer Security, 2018 - c. 20-40. DOI: 10.1007/978-3-319-98989-1_2.
81. Böttinger K, Godefroid P, Singh R. Deep reinforcement fuzzing. In: 2018 IEEE Security and Privacy Workshops (SPW). IEEE, 2018 - c. 116-122.
82. Drozd W, Wagner MD. FuzzerGym: A Competitive Framework for Fuzzing and Learning. arXiv preprint arXiv:1807.07490, 2018.Karamcheti et al. 2018a.
83. Karamcheti S, Mann G, Rosenberg D. Adaptive Grey-Box Fuzz-Testing with Thompson Sampling. In: Proceedings of the 11th ACM Workshop on Artificial Intelligence and Security. ACM; 2018a. - C. 37-47.
84. Liu Xiao, Prajapati, Rupesh, Li Xiaoting WD. Reinforcement Compiler Fuzzing, 2019.
85. Sun X, Fu Y, Dong Y, Liu Z, Zhang Y. Improving Fitness Function for Language Fuzzing with PCFG Model. In: 2018 IEEE 42nd Annual Computer
Software and Applications Conference (COMPSAC). IEEE, 2018 - с. 655-60. DOI: 10.1109/COMPSAC.2018.00098.
86. Yan G, Lu J, Shu Z, Kucuk Y. ExploitMeter: Combining Fuzzing with Machine Learning for Automated Evaluation of Software Exploitability. In: 2017 IEEE Symposium on Privacy-Aware Computing (PAC). IEEE, 2017 - C. 164-75.
87. Tripathi S, Grieco G, Rawat S. Exniffer: Learning to Prioritize Crashes by Assessing the Exploitability from Memory Dump. In: 2017 24th Asia-Pacific Software Engineering Conference (APSEC). IEEE, 2017 - C. 239-48.
88. Zhang G, Zhou X, Luo Y, Wu X, Min E. PTfuzz: Guided Fuzzing With Processor Trace Feedback. IEEE Access, 2018 - C. 2-13. DOI: 10.1109/ACCESS.2018.2851237.
89. Mnih V, Kavukcuoglu K, Silver D, Graves A, Antonoglou I, Wierstra D, et al. Playing Atari with Deep Reinforcement Learning. arXiv PreprarXiv13125602, 2013.
90. Godefroid P, Peleg H, Singh R. Learn&Fuzz: Machine learning for input fuzzing. In: 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, 2017 - C. 50-59.
91. Rajpal M, Blum W, Singh R. Not all bytes are equal: Neural byte sieve for fuzzing, 2017 - с. 1-10.
92. Jibesh Patra and Michael Pradel. Learning to fuzz: Application-independent fuzz testing with probabilistic, generative models of input data. Technical Report TUD-CS-2016-14664, TU Darmstadt, 2016.
93. She D, Pei K, Epstein D, Yang J, Ray B, Jana S. NEUZZ: Efficient Fuzzing with Neural Program Smoothing; IEEE Symposium on Security & Privacy; 2019 - C. 38.
94. Осипова Н. С. Применение методов машинного обучения при проведении фаззинг-тестирования // Безопасные информационные технологии. Сборник трудов XI. - 2021. - Т. 6. - C. 25.
95. Heaton J. Ian goodfellow, yoshua bengio, and aaron courville: Deep learning: The mit press, 2016, 800 pp, isbn: 0262035618 //Genetic programming and evolvable machines. - 2018. - Т. 19. - №. 1. - С. 305-307.
96. Krizhevsky A., Sutskever I., Hinton G. E. ImageNet classification with deep convolutional neural networks //Communications of the ACM. - 2017. - Т. 60. - №. 6. - С. 84-90.
97. Sutskever I., Vinyals O., Le Q. V. Sequence to sequence learning with neural networks //Advances in neural information processing systems. - 2014. - Т. 27.
98. Murphy, K. P. Machine learning: a probabilistic perspective / K. P. Murphy. - MIT press - 2012.
99. Schütze, H. Introduction to information retrieval. Vol. 39 / H. Schütze,C. D. Manning, P. Raghavan. - Cambridge University Press Cambridge, 2008.
100. Куратов, Ю. М. Специализация языковых моделей для применения к задачам обработки естественного языка: автореферат дис. кандидата физ.-мат. наук: 05.13.17. / Куратов Юрий Михайлович // МФТИ — Московский физико-технический институт, 2020. - URL: https://mipt.ru/upload/medialibrary/02f/avtoreferatkuratov.pdf (дата обращения: 28.11.2023). - Текст: электронный.
101. DeMott J., Enbody R., Punch W. F. Revolutionizing the field of grey-box attack surface testing with evolutionary fuzzing //BlackHat and Defcon. - 2007.
102. Duchene F. Fuzz in the dark: genetic algorithm for black-box fuzzing //Black-Hat, 2013.
103. Tung Thanh Nguyen, Anh Tuan Nguyen, Hoan Anh Nguyen, and Tien N. Nguyen. A statistical semantic language model for source code. In Proceedings of the International Symposium on Foundations of Software Engineering, pages 532-542, 2013.
104. Nichols N, Raugas M, Jasper R, Hilliard N. Faster Fuzzing: Reinitialization with Deep Neural Models. arXiv preprint arXiv:1711.02807; 2017Zalewski M, 2016.
105. Zhaopeng Tu, Zhendong Su, and Premkumar Devanbu. On the localness of software. In Proceedings of the International Symposium on Foundations of Software Engineering, C. 269-280, 2014.
106. Fell J. A review of fuzzing tools and methods //PenTest Magazine,
2017.
107. lcamtuf. 2014. afl-fuzz: crash exploration mode. https://lcamtuf. blogspot.com/2014/11/afl-fuzz-crash-exploration-mode.html blog.
108. Liu G. H. et al. Vulnerability analysis for x86 executables using genetic algorithm and fuzzing //2008 Third International Conference on Convergence and Hybrid Information Technology. - IEEE, 2008. - T. 2. - C. 491-497.
109. Lipton Z. C., Berkowitz J., Elkan C. A critical review of recurrent neural networks for sequence learning //arXiv preprint arXiv:1506.00019. - 2015.
110. Graves A. Generating sequences with recurrent neural networks //arXiv preprint arXiv:1308.0850. - 2013.
111. Wang Y, Wu Z, Wei Q, Wang Q. NeuFuzz: Efficient Fuzzing With Deep Neural Network. IEEE Access, 2019 - C. 40-52.
112. Cummins C, Petoumenos P, Murray A, Leather H. Compiler fuzzing through deep learning. In: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis. ACM, 2018 - c. 95-105. DOI: 10.1145/3213846.3213848.
113. Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu. Exploring the limits of language modeling. CoRR, abs/1602.02410, 2016.
114. Tomas Mikolov, Martin Karafiat, Lukas Burget, Jan Cernocky, and Sanjeev Khudanpur. Recurrent neural network based language model. In
Proceedings of the 11th Annual Conference of the International Speech Communication Association, pages 1045-1048, 2010.
115. Hu Jr Z. A Software Package for Generating Code Coverage Reports With Gcov, 2021.
116. Beyer D., Lemberger T. TestCov: Robust test-suite execution and coverage measurement // 34th IEEE/ACM International Conference on Automated Software Engineering (ASE), 2019, C. 1074-1077, DOI: 10.1109/ASE.2019.00105.
117. Fioraldi A. et al. AFL++ combining incremental steps of fuzzing research //Proceedings of the 14th USENIX Conference on Offensive Technologies. - 2020. - С. 10.
118. Salls C. et al. Token-Level Fuzzing //30th USENIX Security Symposium (USENIX Security 21). - 2021. - С. 2795-2809
119. Ерохина Н. С. Метод мутации сложноструктурированных входных данных при фаззинг-тестировании JavaScript интерпретаторов. Труды Института системного программирования РАН, том 35, № 5, 2023, С. 55-66. DOI: 10.15514/ISPRAS-2023-35(5)-4.
120. Свидетельство о государственной регистрации программы для ЭВМ № 2023664761 Российская Федерация. Программный модуль генерации семантически корректного Javascript-кода для фаззинг-тестирования Javascript интерпретаторов веб-браузеров: № 2023663536 : заявл. 29.06.2023 : опубл. 07.07.2023 / Н. С. Ерохина, А. В. Козачок; заявитель Федеральное государственное казенное военное образовательное учреждение высшего образования «Академия Федеральной службы охраны Российской Федерации».
121. Свидетельство о государственной регистрации программы для ЭВМ № 2024613523 Российская Федерация. Программный модуль мутации сложноструктурированных данных для фаззинг-тестирования Javascript-интерпретаторов: № 2024612550 : заявл. 12.02.2024 : опубл. 13.02.2024 / Н. С. Ерохина; заявитель Федеральное государственное казенное военное
образовательное учреждение высшего образования «Академия Федеральной службы охраны Российской Федерации».
122. Козачок А. В., Николаев Д. А., Ерохина Н. С. Подходы к оценке поверхности атаки и фаззингу веб-браузеров //Вопросы кибербезопасности. -2022. - №. 3 (49). - С. 32-43, БОТ: 10.21681/2311-3456-2022-3-32-43.
Свидетельство о государственной регистрации программ
к-
СВИДЕТЕЛЬСТВО
о государс(ксмиои р
КМ
.V® 2023664761
ПРОГРАММНЫЙ МОДУЛЬ ГЕНЕРАЦИИ СЕМАНТИЧЕСКИ КОРРЕКТНОГО ЖГАЗСИГТ-КОДА ДЛЯ ФАЗЗИНГ-ТЕСТИРОВАНИЯ1АУАБСМРТ ИНТЕРПРЕТАТОРОВ ВЕБ-БРАУЗЕРОВ
Праэсйздател* Федеральное госу дарственное казенное военное образовательное учреждение высшего образования "Академия Федеральной службы охраны Российской Федерации" (Я1')
Авторы Ерохина Ната.лья Сергеевна (НС), Козачок Александр Васильевич (КЦ)
За*п2\Е 2023663536
Дата погтппеям 29 нюня 2023 Г.
Дата государственная ргвгтралЕН
£ Реггре прсграш хи ЭВМ 0 " июля 2023 г.
Р.ъоеодитвль Феоерспьноь с^гжбы по инпехгечку спьнои собственности
Ю С Зубов
-4Г 7ч
Свидетельство о государственной регистрации программ
Г г!
ХЖОДХШШ
VJP.I
ш
J^^Kjtii* xilflLiiA
ЩШщш*
СВИДЕТЕЛЬСТВО
о ioc>itapciBcNMuM priKctpanMM про|рямчы .1.11 'ШМ
Л»2024613523
ПРОГРАММНЫЙ МОДУЛЬ МУТАЦИИ СЛОЖНОСТРУКТУРИРОВАННЫХ ДАННЫХ для ФАЗЗИНГ ТЕСТИРОВАНИЯ JAVASCRIPT ИНТЕРПРЕТАТОРОВ
Пр»«ообл«д»т№ Федеральное государственное казенное военное образовательное учреждение высшего образования "Академия Федеральной службы охраны Российской Федерации" (RU)
Atroph) Ерохина Наталья Сергеевна (RU)
з*та Ki 2024612550
д»и постугоиюа 12 февраля 2024 г.
Дат* госудцхтмкяоб р«гжгр лэсн
I Рмстр* пр^гршсм au эвм 13 февраля 2024 г.
руководит*» Ф*д*ра-лной сдужбы ж> имт*1мк»(1 домой собстмнности
Х-ГГ.1.
ЮС. Зубов
X V
1 ■ ,г
Акт внедрения результатов диссертационного исследования
МИ1ЮЫЧ1ЛУКИ РОССИИ
Фслфыммч государственное Акшпкм обупвиклмх уулими ■исшгто обрШШШ!
•ММГМ - Гжшягьий тм.ии<и<м1| шмр<11Г1>
РТУ МНР )А
про*■ ||^ам1И№ & Я. Мим 11МН
1М |4«1|1|)|<ия6 1140, фам {Ю^МПП
[ ИИПМЯ'ГПП!, Ч
/ у ''' . Утверждаю
( :1 ¿'"V51 У Ирорпгтор
I : • Чг 1:
\ У _ А/ _ 0£- Вюкя)ров
\ £ 0 2024
АКТ
о внедрении ретультатов .жссрпшш 1и соискание ученой степени кандидата технических наук Грохкной Наши Сергеевны
Настоящим актом подтверждается. что основные результаты диссертационного исследования, выполненного Нрохииой Натальей Сергеевной на тему «Метил генерации семантически «ыррегтжмо нхха для фаминг-тестнроваиня ]ауа$>спр1-интерпретаторов на основе мутацнм АСД фрагментов кола», внедрены в учебный нрооссс кафедры КЬ-4 «Интеллектуальные системы информационной безопасности» при изучении дисциплины «Технологии машинного обучения а кибербезопасностк». читаемой в магистратура по специальности 10.04.01 «Информационная безопасность».
И.о. директора Института кибсрбеюпасиости и цифровых технологий РТУ МИРЭА / Луд I
к.т.н., доцент (/ЧлЦ^- Ш-Г. Магомедов
Заместитель заведующего кафедрой КБ-4. к.т.н.. доцент
И А- Иванова
Акт внедрения результатов диссертационного исследования
Общество с ограниченной
ответственностью
Системы защиты информации
ИНН 3254513964/ КПП 325701001
№ 1 от 01.03.2022
241035, г.Брянск, ул.Ульянова, д.2.
Тел. (4832) 34-30-20 / 8-910-237-58-74
УТВЕРЖДАЮ Генеральный директор
^защиты информации ).М.Голембиовская
ода
АКТ
внедрения результатов диссертационного исследования Ерохиной Натальи Сергеевны, выполненного на тему: «Метод генерации семантически корректного кода для фаззинг-тестирования
.)ауа8спр1:-интерпретаторов на основе мутации АСД фрагментов кода» представленного на соискание ученой степени кандидата технических наук по специальности 2.3.6. Методы и системы защиты информации, информационная безопасность
Комиссия в составе: Генерального директора ООО Системы защиты информации Голембиовской Оксаны Михайловны и ведущего специалиста по защите информации Кондрашовой Екатерины Владимировны составила настоящий акт о внедрении результатов диссертационного исследования Ерохиной Натальи Сергеевны на тему «Метод генерации семантически корректного кода для фаззинг-тестирования JavaScript-интерпретаторов на основе мутации АСД фрагментов кода», а именно:
- метода генерации входных данных для фаззинг-тестирования JavaScript-интерпретаторов, отличающегося анализом покрытия кода и применением методов машинного обучения;
- программного модуля генерации семантически корректного JavaScript-кода для фаззинг-тестирования JavaScript интерпретаторов веб-браузеров (свидетельство о государственной регистрации программы для ЭВМ № 2023664761 Российская Федерация).
Результаты диссертационного исследования Ерохиной Н.С. внедрены в состав программного обеспечения автоматического тестирования программного обеспечения, обрабатывающего сложноструктурированные входные данные, в виде специального программного модуля, реализованного в диссертационном исследовании.
Члены комиссии:
О.М.Голембиовская Е.В.Кондрашова
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.