Тема: Реализация интервального анализа путём абстрактной интерпретации для поиска уязвимостей в проектах на языке JavaScript
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Постановка задачи 5
1. Обзор предметной области 6
1.1. Термины 6
1.2. Абстрактная интерпретация 8
1.3. Числовой анализ 9
1.4. Числовые абстрактные домены 11
1.5. Интервальный анализ 12
1.6. Мотивирующий пример 14
2. Реализация интервального анализа 16
2.1. Существующие подходы 16
2.2. Интервальный домен 18
2.3. Оператор расширения 20
2.4. Обработка ограничивающих условий 21
2.5. Детали реализации 23
2.5.1 Приведение к Int32, Uint32 23
2.5.2 NaN как результат арифметической операции 24
2.5.3 Обновление абстрактных значений при обработке операторов сравнения 24
2.6. Применения для поиска уязвимостей 25
3. Результаты 27
3.1. Результаты на интеграционных тестах 27
3.2. Результаты на реальных данных 27
Заключение 29
Список литературы 30
📖 Введение
Есть несколько популярных методов статического анализа кода. Одним из них является абстрактная интерпретация, которая позволяет анализировать программу, моделируя её поведение не на уровне конкретных значений, а на более абстрактном уровне, что позволяет выявить потенциальные проблемы на более широком спектре сценариев выполнения кода. В данном подходе во время анализа для каждой точки программы строится абстрактное состояние, которое является аппроксимацией возможных конкретных состояний в этой точке.
Основными преимуществами абстрактной интерпретации являются возможность автоматизации анализа, выявление ошибок до выполнения программы и возможность анализа больших и сложных программ. Однако этот метод также имеет свои недостатки, которые связаны с использованием аппроксимаций значений переменных и состояний программы. Из-за этого анализ может быть недостаточно точным, а также есть вероятность ложных срабатываний.
Во время анализа каждой переменной сопоставляется значение из абстрактного домена, представляющего собой специализированную математическую структуру. Эти абстрактные значения используются для аппроксимации множеств возможных значений переменных программы. Каждый абстрактный домен предоставляет определённые операции и свойства, которые помогают анализатору интерпретировать и анализировать код программы. Выделяют отдельные абстрактные домены для чисел, строк, булевых значений, которые позволяют аппроксимировать возможные значения для переменных соответствующих типов.
Одним из методов работы с числовым абстрактным доменом является интервальный анализ, который позволяет анализировать программный код, сопоставляя переменной интервал возможных значений в каждой точке выполнения программы. Этот подход позволяет обнаруживать переполнения переменных, неявные привидения типов и другие проблемы, связанные с диапазонами значений переменных.
Научная ценность данной работы заключается в проектировании и разработке абстрактного домена для интервального анализа путём абстрактной интерпретации. Результаты исследования будут полезны для разработчиков инструментов статического анализа проектов на языке JavaScript, а также для научного сообщества, занимающегося абстрактной интерпретацией и интервальным анализом.
✅ Заключение
• Проведён анализ существующих числовых абстрактных доменов, подходящих для интервального анализа
• Спроектирован абстрактный интервальный домен, который удовлетворяет поставленным требованиям
• Реализованы необходимые операторы и арифметика над спроектированным доменом
• Реализована поддержка ограничений, накладываемых при анализе операторов ветвления и циклов
• Проведены замеры производительности и точности разработанного интервального анализа на реальных проектах
• Проведено сравнение полученных результатов с анализом распространения констант





