Детальная информация

Название: Исследование и реализация статического анализатора кода на наличие уязвимостей для языка Kotlin: выпускная квалификационная работа бакалавра: направление 09.03.01 «Информатика и вычислительная техника» ; образовательная программа 09.03.01_02 «Технологии разработки программного обеспечения»
Авторы: Букреев Евгений Александрович
Научный руководитель: Сабонис Сергей Станиславович
Организация: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Выходные сведения: Санкт-Петербург, 2023
Коллекция: Выпускные квалификационные работы; Общая коллекция
Тематика: символическое исполнение; анализ потоков данных; Kotlin; статическое тестирование безопасности приложений; symbolic execution; data flow analysis; static application security testing
Тип документа: Выпускная квалификационная работа бакалавра
Тип файла: PDF
Язык: Русский
Уровень высшего образования: Бакалавриат
Код специальности ФГОС: 09.03.01
Группа специальностей ФГОС: 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/3/2023/vr/vr23-3345
Права доступа: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Ключ записи: ru\spstu\vkr\22728

Разрешенные действия:

Действие 'Прочитать' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети Действие 'Загрузить' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети

Группа: Анонимные пользователи

Сеть: Интернет

Аннотация

Данная работа посвящена реализации статического анализатора кода на безопасность для языка Kotlin с применением технологии символического исполнения в рамках продукта PT Application Inspector, а также исследованию возможности оптимизации процесса сканирования путем применения технологии анализа потоков данных. В ходе выполнения данной работы были спроектированы и реализованы программные прототипы анализаторов кода на наличие уязвимостей для языка программирования Kotlin с применением технологии символического исполнения, с применением технологии анализа потоков данных, а также оптимизированный вариант с объединением вышеописанных подходов. Было проведено исследование характеристик работы разработанных прототипов, по результатам которого принято решение об их применимости.

This work is devoted to the implementation of a static security code analyzer for the Kotlin language using symbolic execution technology within the PT Application Inspector product, as well as to the research of the possibility of optimizing the scanning process by using data flow analysis technology. In the course of this work, software prototypes of vulnerabilities detection static code analyzer for the Kotlin programming language were designed and implemented using symbolic execution technology, using data flow analysis technology, as well as an optimized version combining the above approaches. An evaluation of the characteristics of the developed prototypes was carried out, the results of which made a decision on their applicability.

Права на использование объекта хранения

Место доступа Группа пользователей Действие
Локальная сеть ИБК СПбПУ Все Прочитать Печать Загрузить
Интернет Авторизованные пользователи СПбПУ Прочитать Печать Загрузить
-> Интернет Анонимные пользователи

Оглавление

  • 1. Обзор предметной области
    • 1.1. Статический анализ кода
      • 1.1.1. Методы статического анализа
      • 1.1.2. Используемые представления исходного кода
    • 1.2. Статическое тестирование безопасности приложений
    • 1.3. Язык программирования Kotlin
      • 1.3.1. Сферы применения языка Kotlin
  • 2. Постановка задачи
    • 2.1. Продукт PT Application Inspector
    • 2.2. Проект JSA
      • 2.2.1. Архитектура проекта JSA
      • 2.2.2. Общая часть и символьная виртуальная машина
      • 2.2.3. Провайдеры языков программирования
    • 2.3. Возможность поддержки языка Kotlin
    • 2.4. Сложность анализа методом символического исполнения
  • 3. Идеи и технологии решения
    • 3.1. Провайдер языка программирования Kotlin
      • 3.1.1. Представление исходного кода
      • 3.1.2. Символическое исполнение кода
      • 3.1.3. Базы знаний
      • 3.1.4. Нахождение уязвимостей
    • 3.2. Анализ потоков данных
      • 3.2.1. Место анализатора потоков данных в архитектуре проекта JSA
    • 3.3. Объединение анализатора потоков данных и символического исполнения
  • 4. Реализация прототипов
    • 4.1. Провайдер языка программирования Kotlin
      • 4.1.1. Построение представления проекта
      • 4.1.2. Пересылка представления на сторону анализатора
      • 4.1.3. Получение дополнительной информации
      • 4.1.4. Учет зависимостей при построении модели
      • 4.1.5. Получение и представление модели
      • 4.1.6. Используемый шаблон
      • 4.1.7. Архитектурные элементы
      • 4.1.8. Получение информации о типах
      • 4.1.9. Обход с целью символического исполнения
      • 4.1.10. Переиспользование баз знаний
      • 4.1.11. Нахождение уязвимостей
      • 4.1.12. Подходы к тестированию
      • 4.1.13. Проверка в расширении среды разработки
    • 4.2. Анализатор потоков данных
      • 4.2.1. Новые сущности в общей части проекта
      • 4.2.2. Подмена кондициональной части формул
      • 4.2.3. Операция нахождения уязвимости
    • 4.3. Объединение предложенных подходов
      • 4.3.1. Алгоритм оптимизированного сканирования
      • 4.3.2. Прерывание сканирования точки входа
  • 5. Анализ результатов
    • 5.1. Уязвимые приложения на языке Kotlin
    • 5.2. Необходимость создания собственного уязвимого приложения
    • 5.3. Создание уязвимого приложения
    • 5.4. Уязвимости, найденные символическим исполнением
    • 5.5. Результаты анализа разработанных подходов
  • ПРИЛОЖЕНИЕ. АКТ ВНЕДРЕНИЯ

Статистика использования

stat Количество обращений: 9
За последние 30 дней: 0
Подробная статистика