Тип работы:
Предмет:
Язык работы:


ГЕНЕРАЦИЯ ПАТЧЕЙ ДЛЯ ИСПРАВЛЕНИЯ УЯЗВИМОСТЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Работа №197849

Тип работы

Магистерская диссертация

Предмет

информационная безопасность

Объем работы38
Год сдачи2025
Стоимость4960 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
11
Не подходит работа?

Узнай цену на написание


ВВЕДЕНИЕ 3
1 Аналоги 4
2 Постановка задачи 7
3 Предупреждения статического анализатора 8
3.1 PVS-Studio 8
3.2 Классификация предупреждений 10
4 Описание алгоритма 12
5 Архитектура программы 16
5.1 Модуль анализа исходного кода 17
5.2 Модуль разбора отчётов статических анализаторов 19
5.3 Модуль генерации патча 20
5.3.1 Чтение шаблона 20
5.3.2 Поиск синтаксического поддерева 22
5.3.3 Применение изменений в синтаксическое поддерево 24
5.3.4 Генерация исправленного кода 24
5.3.5 Генерация патча 25
6 Инструменты реализации 27
7 Достоинства и недостатки решения 28
8 Область применения 29
ЗАКЛЮЧЕНИЕ 31
ЛИТЕРАТУРА 32

В современном ПО количество предупреждений статических анализаторов растёт вместе со сложностью проектов, и разработчикам всё чаще приходится вручную исправлять множество однотипных уязвимостей. Давление со стороны требований к безопасности приводит к тому, что каждое предупреждение должно быть проверено и исправлено, что замедляет релизный цикл. При этом многие исправления носят шаблонный характер, что делает задачу ручного патчинга избыточной. Возникает необходимость в инструменте, автоматически генерирующем исправления на основе отчёта статического анализатора. Это позволило бы существенно повысить скорость исправления потенциальных уязвимостей и снизить рутинную нагрузку на разработчиков.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе выполнения работы была разработана и реализована система автоматического формирования патчей. Она по входным данным из отчётов статических анализаторов и заранее заданным шаблонам строит фрагмент AST исходного кода с уязвимостью, исправляет его, генерирует код и упаковывает его в патч. Такой подход позволяет обеспечить консистентность и семантическую точность правок, отказаться от ненадёжного текстового поиска и заметно сократить рутину. Архитектура, основанная на трёх модулях (анализ кода, разбор отчётов и генерация патча), обладает достаточной гибкостью для расширения поддерживаемых шаблонов и форматов отчётов, что делает её пригодной для интеграции в современные CI/CD-конвейеры.
Несмотря на очевидные преимущества, инструмент требует регулярного поддержания и актуализации шаблонов, а также тщательной настройки механизмов сопоставления во избежание ложных срабатываний и пропусков. В дальнейшем планируется расширить покрытие новых типов предупреждений, автоматизировать процесс валидации шаблонов и исследовать возможности применения машинного обучения для адаптивного синтеза исправлений. Итоговая система демонстрирует, что автоматизированная генерация патчей — реальный и перспективный путь повышения надёжности программного обеспечения и ускорения процесса исправления уязвимостей.



1 The Clang Team [Электронный ресурс]: Clang-Tidy — URL: https://clang.llvm.org/extra/clang-tidy/(дата обращения: 22.01.2025).
2 Wikipedia [Электронный ресурс]: Abstract syntax tree — URL: https://en.wikipedia.org/wiki/Abstract_syntax_tree(дата обращения: 15.01.2025).
3 Wikipedia [Электронный ресурс]: Integrated development
environment — URL:
https://en.wikipedia.org/wiki/Integrated_development_environment (дата
обращения: 26.04.2025).
4 Wikipedia [Электронный ресурс]: CI/CD — URL:
https://en.wikipedia.org/wiki/CI/CD(дата обращения: 26.04.2025).
5 Wikipedia [Электронный ресурс]: Категория:Языки
программирования семейства Си — URL:
https://ru.wikipedia.org/wiki/Категория:Языки_программирования_семейства_ Си (дата обращения: 19.04.2025).
6 Страуструп, Б. Язык программирования C++ [Текст]: учебник / Б. Страуструп. - М.: Радио и связь, 2011. - 350 c.
7 The CodeChecker team [Электронный ресурс]: CodeChecker — URL: https://codechecker.readthedocs.io/en/latest/(дата обращения: 27.01.2025).
8 Program Verification Systems [Электронный ресурс]: Документация по статическому анализатору кода PVS-Studio — URL: https://pvs-studio.ru/ru/docs/(дата обращения: 12.03.2025).
9 Wikipedia [Электронный ресурс]: Visual Studio — URL: https://en.wikipedia.org/wiki/Visual_Studio(дата обращения: 26.04.2025).
10 Wikipedia [Электронный ресурс]: C Sharp (programming language) — URL: https://en.wikipedia.org/wiki/C_Sharp_(programming_language) (дата обращения: 26.04.2025).
11 Wikipedia [Электронный ресурс]: Java (programming language) —
URL: https: //en. wikipedia. org/wiki/Java_(programming_language) (дата
обращения: 26.04.2025).
12 Wikipedia [Электронный ресурс]: Static single assignment form —
URL: https://en.wikipedia.org/wiki/Static_single_assignment_form (дата
обращения: 09.03.2025).
13 Standard C++ Foundation [Электронный ресурс]: The Standard — URL: https://isocpp.org/std/the-standard(дата обращения: 26.04.2025).
14 JetBrains [Электронный ресурс]: CLion: The Cross-Platform IDE for C and C++ — URL: https://www.jetbrains.com/clion(дата обращения: 26.04.2025).
15 JetBrains [Электронный ресурс]: ReSharper: Visual Studio
Extension for .NET Developers — URL: https://www.jetbrains.com/resharper(дата обращения: 26.04.2025).
16 Jenkins project [Электронный ресурс]: Jenkins: The Leading Open Source Automation Server — URL: https://www.jenkins.io(дата обращения: 26.04.2025).
17 JetBrains [Электронный ресурс]: TeamCity: Continuous Integration & Deployment Server — URL: https://www.jetbrains.com/teamcity(дата обращения: 26.04.2025).
18 Microsoft [Электронный ресурс]: Azure Pipelines — URL:
https://azure.microsoft.com/services/devops/pipelines (дата обращения:
26.04.2025).
19 Program Verification Systems [Электронный ресурс]: V5004.
OWASP. Consider inspecting the expression. Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type — URL: https://pvs-
studio.ru/ru/docs/warnings/v5004/(дата обращения: 18.02.2025).
20 Program Verification Systems [Электронный ресурс]: V5005. OWASP. A value is being subtracted from the unsigned variable. This can result in an overflow. In such a case, the comparison operation can potentially behave unexpectedly — URL: https://pvs-studio.ru/ru/docs/warnings/v5005/(дата обращения: 18.02.2025).
21 Program Verification Systems [Электронный ресурс]: V5009. OWASP. Unchecked tainted data is used in expression — URL: https://pvs- studio.ru/ru/docs/warnings/v5009/(дата обращения: 18.02.2025).
22 Program Verification Systems [Электронный ресурс]: V3202. Unreachable code detected. The 'case' value is out of the range of the match expression — URL: https://pvs-studio.ru/ru/docs/warnings/v3202/(дата обращения: 18.02.2025).
23 Program Verification Systems [Электронный ресурс]: V5001. OWASP. It is highly probable that the semicolon ';'is missing after 'return' keyword — URL: https://pvs-studio.ru/ru/docs/warnings/v5001/(дата обращения: 18.02.2025).
24 Refactoring.Guru [Электронный ресурс]: Фабричный метод — URL: https://refactoring.guru/ru/design-patterns/factory-method(дата обращения: 05.03.2025).
25 The Clang Team [Электронный ресурс]: LibTooling — URL: https://clang.llvm.org/docs/LibTooling.html(дата обращения: 12.03.2025).
26 The Clang Team [Электронный ресурс]: Introduction to the Clang AST — URL: https://clang.llvm.org/docs/IntroductionToTheClangAST.html(дата обращения: 12.03.2025).
27 The Clang Team [Электронный ресурс]: How to write
RecursiveASTVisitor based ASTFrontendActions. — URL:
https://clang.llvm.org/docs/RAVFrontendAction.html (дата обращения:
12.03.2025).
28 Refactoring.Guru [Электронный ресурс]: Стратегия — URL: https://refactoring.guru/ru/design-patterns/strategy(дата обращения: 05.03.2025).
29 Program Verification Systems [Электронный ресурс]: Просмотр и конвертация результатов анализа (форматы SARIF, HTML и др.) — URL: https://pvs-studio.ru/ru/docs/manual/0038/(дата обращения: 20.03.2025).
30 Арсений Капулкин [Электронный ресурс]: pugixml — URL: https://pugixml.org/(дата обращения: 03.04.2025).
31 GNU [Электронный ресурс]: 2.2.2.2 Detailed Description of Unified
Format — URL:
https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html(дата обращения: 04.04.2025).
32 LLVM-admin team [Электронный ресурс]: The LLVM Compiler Infrastructure — URL: https://llvm.org/(дата обращения: 07.04.2025).
33 Boost Community [Электронный ресурс]: Boost — URL:
https://www.boost.org/(дата обращения: 08.04.2025).
34 Amazon Web Services, Inc. [Электронный ресурс]: Что такое DevSecOps? — URL: https://aws.amazon.com/what-is/devsecops/(дата обращения: 27.04.2025).


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ