Details
Title | Метод анализа безопасности программ на языке Golang на основе графовой нейронной сети: выпускная квалификационная работа специалиста: направление 10.05.03 «Информационная безопасность автоматизированных систем» ; образовательная программа 10.05.03_08 «Анализ безопасности информационных систем» |
---|---|
Creators | Дидковский Максим Дмитриевич |
Scientific adviser | Жуковский Евгений Владимирович |
Other creators | Кубрин Георгий Сергеевич |
Organization | Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности |
Imprint | Санкт-Петербург, 2025 |
Collection | Выпускные квалификационные работы ; Общая коллекция |
Subjects | графовые нейронные сети ; поиск уязвимостей ; Golang ; CWE-22 ; статический анализ кода ; graph neural networks ; vulnerability search ; static code analysis |
Document type | Specialist graduation qualification work |
File type | |
Language | Russian |
Level of education | Specialist |
Speciality code (FGOS) | 10.05.03 |
Speciality group (FGOS) | 100000 - Информационная безопасность |
DOI | 10.18720/SPBPU/3/2025/vr/vr25-835 |
Rights | Доступ по паролю из сети Интернет (чтение, печать) |
Additionally | New arrival |
Record key | ru\spstu\vkr\34823 |
Record create date | 7/2/2025 |
Allowed Actions
–
Action 'Read' will be available if you login or access site from another network
Group | Anonymous |
---|---|
Network | Internet |
Целью работы является разработка метода анализа безопасности программ на языке Golang на основе графовой нейронной сети. Объектом исследования является код программного обеспечения на языке Golang, представленный в виде графовых структур. Задачи, решаемые в ходе исследования: 1. Проанализировать существующие подходы для проверки безопасности программ на основе графовой нейронной сети. 2. Классифицировать существующие логические ошибки в языке программирования Golang в соответствии с решаемой относительно графа задачи. 3. Сформировать выборку уязвимого кода. 4. Разработать метод анализа безопасности программ на языке Golang на основе графовой нейронной сети. 5. Выполнить программную реализацию разработанного метода. 6. Оценить точность работы созданного средства и сравнить реализованное средство с другими средствами статического анализа. В ходе работы было исследовано графовое представление кода на языке Golang. Были проанализированы современные исследования в области анализа безопасности программного обеспечения на основе графовой нейронной сети. В результате работы было разработано средство поиска программных дефектов (CWE-22) в коде на языке Golang, была продемонстрирована эффективность средства. Был сделан вывод, что разработанное средство обладает преимуществом перед аналогами, однако имеет и проблемы, проявляющиеся в виде большого количества FP результатов. Полученные результаты могут быть использованы в качестве основы для разработки средства для анализа других программных дефектов, либо для анализа рассматриваемой уязвимости, но используя другое графовое представление. Для достижения данных результатов была разработана программа, которая выполняет поиск соответствия CWE для определённой CVE. В дополнение к этому была разработана программа, переводящая код на языке Golang в графовое представление, и программа, реализующая само средство для анализа.
The purpose of the study is to develop a method for analyzing the security of Golang programs based on a graph neural network. The object of the work is the software code in the Golang language, presented in the form of graph structures. The research sets the following goals: 1. To analyze existing approaches for checking the security of programs based on a graph neural network. 2. Classify existing logical errors in the Golang programming language according to the problem being solved relative to the graph. 3. Collect a sample of vulnerable code. 4. To develop a method for analyzing the security of Golang programs based on a graph neural network. 5. Perform a software implementation of the developed method. 6. Evaluate the accuracy of the created tool and compare the implemented tool with other static analysis tools. During the work, the graph representation of the code in the Golang language was studied. Modern studies in the field of software security analysis based on a graph neural network was analyzed. As a result of the work, a software defect finder (CWE-22) was developed in Golang code, and the effectiveness of the tool was demonstrated. It was concluded that the developed tool has an advantage over its analogues, but it also has problems that manifest themselves in the form of a large number of FP results. The results obtained can be used as a basis for developing tools for analyzing other software defects, or for analyzing the vulnerability in question, but using a different graph representation. To achieve these results, a program has been developed that search for CWE compliance for a specific CVE. In addition, a program has been developed that translates Golang code into a graph representation, and a program that implements the analysis tool itself.
Network | User group | Action |
---|---|---|
ILC SPbPU Local Network | All |
|
Internet | Authorized users SPbPU |
|
Internet | Anonymous |
|
- РЕФЕРАТ
- ABSTRACT
- Содержание
- Определения, обозначения и сокращения
- введение
- 1 Анализ существующих методов представления кода
- 1.1 Задачи на графах
- 1.2 Существующие методы представления кода
- 1.3 Выводы
- 2 Анализ графовых моделей нейронной сети
- 2.1 Разработка GNN модели для конкретной задачи на конкретном графе
- 2.2 Парадигмы построения графовых свёрток
- 2.2.1 Пространственная парадигма
- 2.2.2 Спектральная парадигма
- 2.3 Существующие подходы для анализа уязвимостей
- 2.3.1 DeepTective
- 2.3.2 VulEye
- 2.4 Сравнение существующих подходов
- 2.5 Выводы
- 3 Анализ характерных уязвимостей для языка Go
- 3.1 CWE–798 – Использование жёстко запрограммированных учётных данных
- 3.2 CWE–200 – Раскрытие конфиденциальной информации несанкционированному субъекту
- 3.3 CWE–242 – Использование опасной по своей сути функции
- 3.4 CWE–703 – Неправильная проверка или обработка условий с исключениями
- 3.5 CWE–322 – Обмен ключами без аутентификации объекта
- 3.6 CWE–88 – Неправильная нейтрализация разделителей аргументов в команде («внедрение аргументов»)
- 3.7 CWE–190 – Целочисленное переполнение
- 3.8 CWE–400 – Бесконтрольное потребление ресурсов
- 3.9 CWE–89 – Неправильная нейтрализация специальных элементов, используемых в команде SQL («SQL-инъекция»)
- 3.10 CWE–79 – Неправильная нейтрализация ввода во время создания веб-страницы («Межсайтовый скриптинг»)
- 3.11 CWE–78 – Неправильная нейтрализация специальных элементов, используемых в команде ОС («Внедрение команды ОС»)
- 3.12 CWE–276 – Неправильные разрешения по умолчанию
- 3.13 CWE–377 – Небезопасный временный файл
- 3.14 CWE–22 – Неправильное ограничение пути к ограниченному каталогу («Обход пути»)
- 3.15 CWE-327 – Использование сломанного или рискованного криптографического алгоритма
- 3.16 CWE–295 – Неправильная проверка сертификата
- 3.17 CWE–338 – Использование криптографически слабого генератора псевдослучайных чисел (PRNG)
- 3.18 CWE–326 – Недостаточная надёжность шифрования
- 3.19 CWE–321 – Использование жёстко закодированного криптографического ключа
- 3.20 CWE–118 – Неправильный доступ к индексируемому ресурсу («Ошибка диапазона»)
- 3.21 Обобщение классов уязвимостей и задач на графе
- 3.22 Выводы
- 4 Формирование выборки уязвимого кода
- 4.1 Выводы
- 5 Разработка метода анализа безопасности программ на языке Golang на основе графовой нейронной сети
- 5.1 Описание прототипа
- 5.2 Результаты применения разработанного метода
- 5.3 Выводы
- 6 Тестирование разработанного метода
- 6.1 Сравнение с другими средствами для анализа
- 6.2 Выводы
- заключение
- список использованных источников
Access count: 0
Last 30 days: 0