Details

Title Исследование и реализация статического анализатора кода на наличие уязвимостей для языка Kotlin: выпускная квалификационная работа бакалавра: направление 09.03.01 «Информатика и вычислительная техника» ; образовательная программа 09.03.01_02 «Технологии разработки программного обеспечения»
Creators Букреев Евгений Александрович
Scientific adviser Сабонис Сергей Станиславович
Organization Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Imprint Санкт-Петербург, 2023
Collection Выпускные квалификационные работы ; Общая коллекция
Subjects символическое исполнение ; анализ потоков данных ; Kotlin ; статическое тестирование безопасности приложений ; symbolic execution ; data flow analysis ; static application security testing
Document type Bachelor graduation qualification work
File type PDF
Language Russian
Level of education Bachelor
Speciality code (FGOS) 09.03.01
Speciality group (FGOS) 090000 - Информатика и вычислительная техника
DOI 10.18720/SPBPU/3/2023/vr/vr23-3345
Rights Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key ru\spstu\vkr\22728
Record create date 7/21/2023

Allowed Actions

Action 'Read' will be available if you login or access site from another network

Action 'Download' will be available if you login or access site from another network

Group Anonymous
Network Internet

Данная работа посвящена реализации статического анализатора кода на безопасность для языка 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.

Network User group Action
ILC SPbPU Local Network All
Read Print Download
Internet Authorized users SPbPU
Read Print Download
Internet Anonymous
  • 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. Результаты анализа разработанных подходов
  • ПРИЛОЖЕНИЕ. АКТ ВНЕДРЕНИЯ

Access count: 9 
Last 30 days: 0

Detailed usage statistics