Разработка анализатора компонентов исходного кода на примере web-сервисов, использующих Spring Boot

Раздел
Программирование
Просмотров
28
Покупок
0
Антиплагиат
Не указан
Размещена
26 Фев в 12:58
ВУЗ
2025
Курс
Не указан
Стоимость
3 500 ₽
Файлы работы   
1
Каждая работа проверяется на плагиат, на момент публикации уникальность составляет не менее 40% по системе проверки eTXT.
pdf
вкр
1.7 Мбайт
Описание

Объектом исследования выступает процесс компонентного анализа программного

обеспечения, рассматриваемый как элемент обеспечения безопасности,

лицензионной чистоты и управляемости жизненного цикла web-сервисов на базе

Spring Boot. Цель работы заключалась в создании прототипа SCA-системы,

способной надёжно выявлять сторонние, модифицированные и обфусцированные

библиотеки с помощью алгоритмовWinnowing и Dolos, заимствованных из практик

поиска программного плагиата. Для реализации проекта задействованы JDK 17,

PostgreSQL, Spring Boot, Hibernate, синтаксический парсер tree-sitter, а также

репозитории GitHub и Maven, что позволило построить цепочку. В результате

создан модульный прототип, прошедший модульные, интеграционные и нагрузочные

испытания и показавший высокую точность обнаружения компонентов даже

при существенных изменениях исходного кода, превосходя классический анализ

зависимостей по полноте выявления библиотек. Инструмент может применяться в

DevSecOps-конвейерах для автоматической проверки зависимостей, при аудите

open-source-лицензий, в образовательных курсах по SCA и во внутренних платформах

разработки крупных компаний, где требуется обнаруживать скрытые или

изменённые библиотеки до выпуска релиза.

Оглавление

Введение ........................................................................................................ 10

1 Исследование методов и средств анализа компонентов программ ........... 13

1.1 Анализ избранных работ ......................................................................... 13

1.1.1 Динамика анализа состава программного обеспечения....................... 13

1.1.2 Исследование методик поиска используемых библиотек.................... 14

1.1.3 Эмпирическое изучение инструментов SCA для программ на языке

C/C++ ................................................................................................... 15

1.1.4 Система поиска плагиата Dolos............................................................ 17

1.1.5Winnowing - локальный алгоритм для снятия отпечатков документа. 18

1.1.6 Автоматическое распознавание ИИ-обфусцированного плагиата ...... 19

1.2 Обзор сценариев применения SCA ......................................................... 19

1.2.1 Большие проекты с множеством зависимостей.................................... 20

1.2.2 Проекты с активным изменением списка зависимостей...................... 20

1.2.3 Проекты с высокими требованиями к безопасности ........................... 21

1.2.4 Проекты с модифицированными зависимостями ................................ 22

1.2.5 Проекты, разработанные с участием больших языковых моделей ...... 22

1.2.6 Требования пользователей SCA решений ............................................ 23

1.3 Обзор методов компонентного анализа .................................................. 24

1.3.1 Метод белых списков............................................................................ 24

1.3.2 Машинное обучение ............................................................................. 26

1.3.3 Сравнение сходства .............................................................................. 27

1.3.4 Снятие отпечатков ................................................................................ 28

1.3.5 Алгоритм на базе графа зависимостей пакетов (ГЗП)......................... 29

1.3.6 Алгоритмы Dolos, Winnowing............................................................... 31

1.4 Анализ существующих решений по поиску зависимостей..................... 33

1.4.1 Trivy....................................................................................................... 34

1.4.2 Syft ........................................................................................................ 35

1.4.3 Solar appScreener................................................................................... 36

1.4.4 Dolos...................................................................................................... 38

1.4.5 Turnitin................................................................................................... 39

1.5 Подбор инструментальных средств для построения SCA решения ....... 41

1.6 Направления дальнейшего исследования ............................................... 43

2 Проектирование решения по анализу компонентов программ ................. 46

2.1 Обоснование необходимости разработки ............................................... 46

2.2 Описание объектa исследования ............................................................. 49

2.2.1 Характеристика тестовой базы............................................................. 49

2.2.2 Ограничения.......................................................................................... 50

2.2.3 Критерии выбора тестовых примеров .................................................. 50

2.2.4 Описание экспериментальных кейсов .................................................. 51

2.3 Проектирование системы ........................................................................ 53

2.3.1 Функциональные требования................................................................ 53

2.3.2 Нефункциональные требования ........................................................... 54

2.3.3 Ограничения и предположения............................................................. 55

2.4 Формирование архитектурного подхода ................................................. 56

2.5 Выбор алгоритма...................................................................................... 60

2.5.1 Методика нормализации и токенизации .............................................. 61

2.5.2 Подход к определению заимствования ................................................ 63

2.5.3 Распределение зависимостей по файловой структуре......................... 64

2.6 Хранение эталонных библиотек .............................................................. 66

2.7 Интерфейс взаимодействия с системой .................................................. 68

2.8 Архитектура системы .............................................................................. 69

2.8.1 Модуль сбора отпечатков ..................................................................... 70

2.8.2 База отпечатков..................................................................................... 71

2.8.3 Модуль сопоставления отпечатков....................................................... 73

2.8.4 Модуль составления отчетов ................................................................ 74

2.9 Расширение архитектуры ........................................................................ 75

3 Реализация решения по анализу компонентов программ.......................... 77

3.1 Общая архитектура и технологический стек .......................................... 77

3.1.1 Выбор языка и фреймворка .................................................................. 77

3.1.2 Слои приложения.................................................................................. 78

3.1.3 База данных и JPA................................................................................. 80

3.1.4 Средства сборки и развертки ............................................................... 81

3.2 Модуль анализа кода................................................................................ 82

3.2.1 Tree-Sitter............................................................................................... 82

3.2.2 Обход AST в глубину............................................................................ 83

3.2.3 Токенизация .......................................................................................... 84

3.2.4Winnowing ............................................................................................. 85

3.2.5 Снятие отпечатков ................................................................................ 85

3.2.6 Добавление эталонной компоненты ..................................................... 87

3.3 Сервисный слой ....................................................................................... 88

3.3.1 Интерфейсы .......................................................................................... 88

3.3.2 Сервис загрузки данных ....................................................................... 89

3.3.3 Сервис отпечатков ................................................................................ 90

3.3.4 Cервис распознавания компонентов .................................................... 91

3.4 Слой представления................................................................................. 92

3.5 Вывод ....................................................................................................... 93

4 Тестирование и апробация решения по анализу компонентов программ . 95

4.1 Тестовое окружение ................................................................................. 97

4.1.1 Аппаратное и программное окружение ................................................ 97

4.1.2 Инструментарий для тестирования ...................................................... 98

4.1.3 Тестовая выборка .................................................................................. 99

4.2 Модульное тестирование ......................................................................... 99

4.2.1 Тестирование модуля извлечения отпечатков...................................... 100

4.2.2 Тестирование модуля построения K-грамм .......................................... 101

4.2.3 Тестирование реализации алгоритма Winnowing................................. 103

4.2.4 Тестирование модуля анализа компонентов......................................... 104

4.2.5 Тестирование модуля анализа проектов ............................................... 106

4.2.6 Тестирование сервиса проектов............................................................ 107

4.2.7 Тестирование сервиса компонентов ..................................................... 109

4.2.8 Тестирование репозитория проектов.................................................... 110

4.2.9 Тестирование репозитория компонент ................................................. 111

4.3 Интеграционное тестирование ................................................................ 113

4.4 Нагрузочное тестирование ...................................................................... 118

4.4.1 Инструмент нагрузки: wrk2 .................................................................. 119

4.4.2 Добавление компоненты ....................................................................... 120

4.4.3 Анализ проекта ..................................................................................... 122

4.5 Экспериментальная проверка.................................................................. 123

4.5.1 Поиск модифицированных версий библиотек ..................................... 125

4.5.2 Обфускация с применением языковых моделей .................................. 126

4.5.3 Сравнение параметров алгоритма ........................................................ 129

4.6 Сравнение разработанного алгоритма с алгоритмом на основе графа

зависимостей программы..................................................................... 132

4.6.1 Реализация алгоритма для экспериментального тестирования........... 133

4.6.2 Минимально-достаточный набор модулей ........................................... 133

4.6.3 Сервисы верхнего уровня ..................................................................... 133

4.6.4 Сравнение показателей......................................................................... 134

4.6.5 Дискуссия по результатам эксперимента............................................. 135

Заключение.................................................................................................... 137

Список использованных источников............................................................. 139

Приложение 1 Листинг программного кода.................................................. 143

Приложение 2 Исходные данные для подбора оптимальных параметров

алгоритма ....................................................................................................... 335

Список литературы

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Ambati S. Security and Authenticity of AI-generated code: дис.канд. / Ambati Sriharitha. — University of Saskatchewan, 2023.

2. An Investigation into the Use of Common Libraries in Android Apps / L. Li [и др.] // 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER). Т. 1. — 2016. — С. 403—414. — DO 10.1109/SANER.2016.52.

3. Backes M., Bugiel S., Derr E. Reliable Third-Party Library Detection in Android and its Security Applications // Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security.—Vienna,Austria: Association for Computing Machinery, 2016. — С. 356—367. — (Сер.: CCS 16). — DOI 10.1145/2976749.2978333. — URL:

4. Biazzini M., Baudry B. "May the fork be with you": novel metrics to analyze

collaboration on GitHub // Proceedings of the 5th International Workshop on Emerging

Trends in Software Metrics.—Hyderabad, India: Association for Computing Machinery,

2014. — С. 37—43. — (Сер.: WETSoM 2014). — DOI 10.1145/2593868.2593875. —URL:

5. Crussell J., Gibler C., Chen H. AnDarwin: Scalable Detection of Semantically Similar Android Applications // Computer Security – ESORICS 2013 / под ред. J. Crampton, S. Jajodia, K. Mayes.—Berlin, Heidelberg: Springer Berlin Heidelberg, 2013. — С. 182—199.

6. Dolos: Language-agnostic plagiarism detection in source code / R. Maertens

[и др.] // Journal of Computer Assisted Learning.—2022.—Т. 38, № 4.—С. 1046 1061. — DOI https:

7. Dolos: Language-agnostic plagiarism detection in source code / R. Maertens [и др.] // Journal of Computer Assisted Learning.— 2022.— Т. 38.—DOI 10.1111/ jcal.12662.

8. Download the Android source | Android Open Source Project — source.android.com. — (дата обращения: 19-01-2025). https :

всего 32 источника

Вам подходит эта работа?
Похожие работы
Другие работы автора
Прямой эфир