Аналіз програмного коду з використанням гібридного методу пошуку та класифікації вразливостей
dc.contributor.advisor | Кисельов, Геннадій Дмитрович | |
dc.contributor.author | Куб’юк, Євгеній Юрійович | |
dc.date.accessioned | 2024-06-21T13:28:12Z | |
dc.date.available | 2024-06-21T13:28:12Z | |
dc.date.issued | 2024 | |
dc.description.abstract | Куб’юк Є.Ю. Аналіз програмного коду з використанням гібридного методу пошуку та класифікації вразливостей. - Кваліфікаційна наукова праця на правах рукопису. Дисертація на здобуття наукового ступеня доктора філософії за спеціальністю 122 «Комп’ютерні науки». – Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського», 2024. Актуальність теми. У контексті стрімкого розвитку інформаційних технологій та цифровізації суспільства, проблематика кібербезпеки набуває особливої гостроти. Згідно зі статистикою, у 2022 році кількість кібератак зросла на 42% порівняно з попереднім роком, а фінансові збитки сягнули $6 трлн. Основною причиною такої ситуації є зростання кількості вразливостей у програмному забезпеченні, які активно використовуються зловмисниками. Зокрема, у Національній базі даних вразливостей США (NVD) за 2022 було зареєстровано понад 25 000 нових вразливостей, що на 20% більше ніж у 2021. Більше 75% успішних кібератак базувалися на експлуатації вже відомих вразливостей. Це свідчить про гостру необхідність розробки ефективних заходів щодо своєчасного виявлення та усунення вразливостей у програмному коді. Одним з найбільш перспективних напрямів вирішення цієї проблеми є створення автоматизованих систем аналізу коду на основі технологій штучного інтелекту. Такі системи здатні ефективно виявляти приховані дефекти безпеки на етапах розробки ПЗ, що дозволяє знизити ризики та підвищити захищеність. Їх інтеграція у процеси розробки поліпшить дотримання практик безпечного програмування та скоротить час на тестування безпеки. Отже, створення інноваційних методів та засобів автоматизації аналізу безпеки програмного коду є вкрай актуальним завданням для підвищення рівня кіберзахисту сучасних програмних систем. Мета і завдання дослідження. Метою дисертаційного дослідження є розробка та удосконалення методів виявлення та класифікації вразливостей в програмному коді з використанням нейронних мереж та методів виявлення подібності коду. Основні завдання дослідження включають: - Дослідити методи виявлення вразливостей в програмному коді. - Дослідити ефективність методів виявлення подібності коду в задачі класифікації вразливостей. - Дослідити моделі представлення програмного коду. - Розробити метод побудови проміжного представлення програмного коду для подальшого аналізу на предмет вразливостей. - Розробити метод виявлення вразливостей на основі нейронних мереж. - Розробити метод класифікації вразливостей на основі методу виявлення подібності коду. - Виконати програмну реалізацію системи аналізу програмного коду, з використанням гібридного методу пошуку та класифікації вразливостей програмного коду. - Провести обчислювальні експерименти та оцінку розробленої системи. - Продемонструвати практичну цінність розробленої системи на прикладі впровадження в процеси життєвого циклу розробки програмного забезпечення. Об’єктом дослідження є процес пошуку та класифікації вразливостей безпеки в програмному коді. Предметом дослідження виступають методи, алгоритми та структури даних для ефективного аналізу програмного коду на предмет вразливостей безпеки. Методи дослідження. В роботі застосовуються наступні методи дослідження: абстрактно-логічний аналіз проблеми, експерименти, моделювання, аналіз даних, порівняння. Зазначені методи були обрані з огляду на поставлені мету та задачі дослідження, а також на практичність їх застосування при вирішенні проблеми автоматичного аналізу програмного коду на предмет вразливостей безпеки. Наукова новизна отриманих результатів. Вперше запропоновано гібридний метод аналізу програмного коду, що поєднує методи глибокого навчання та методи виявлення подібності коду для пошуку та класифікації вразливості в коді, який дозволяє ефективно виконувати пошук вразливостей в коді, а також класифікувати з високою точністю знайдені вразливості. Отримав подальший розвиток метод побудови проміжного представлення програмного коду у вигляді кодового гаджету, який відрізняється від існуючих методів наявністю обмеження по розміру локального контексту відносно ключової точки, що дозволило зменшити результуючий розмір кодових гаджетів та підвищити точність класифікації при подальшому аналізі нейронною мережею. Вперше запропоновано метод класифікації вразливостей в програмному коді з використанням ковзного хешування абстрактного синтаксичного дерева, який відрізняється від існуючих методів тим що використовує метод виявлення подібності коду для ефективної класифікації вразливостей без необхідності використання навчальної вибірки великого об’єму. Практичне значення отриманих результатів. Розроблений метод дозволяє знаходити вразливості в програмному коді, написаному на мові C/C++, а також класифікувати тип знайденої вразливості, що дозволяє спростити процес пріоретизації та виправлення знайдених вразливостей для розробників програмних продуктів. Технологія пошуку та класифікації вразливостей в програмному коді успішно впроваджена в процеси розробки ІТ компанії та використовується для аналізу програмних продуктів на предмет вразливостей у якості сервісу аналізу коду. Також, командний інтерфейс системи дозволяє використовувати її у якості утиліти для аналізу коду, без необхідного розгортання у вигляді сервісу, що дозволяє спеціалістам з кібербезпеки використовувати даний інструмент в якості рекомендаційної системи в рамках процесів оцінки безпеки програмного коду. Розроблений метод було протестовано на реальних проектах з відкритим вихідним кодом. Зокрема, за допомогою розробленої системи вдалося знайти вразливість в проекті з відкритим вихідним кодом - Microsoft Terminal. Публікації. За результатами дисертаційного дослідження опубліковано 5 наукових праць, з яких 4 статті у наукових фахових виданнях України (3 з яких входять до міжнародних наукометричних баз) та 1 публікація в збірнику матеріалів конференції. Результати дослідження. Розроблено програмне забезпечення системи аналізу коду, що реалізує запропонований гібридний метод. Експериментально підтверджено ефективність системи у задачах пошуку та класифікації вразливостей в програмному коді. Структура та обсяг роботи. Дисертація складається зі вступу, 4 розділів, висновків, списку використаних джерел. Повний обсяг дисертації становить 140 сторінок. Робота містить 27 рисунків та 9 таблиць. Список використаних джерел налічує 81 найменувань. Основний зміст роботи. У вступі обґрунтовано актуальність теми, сформульовано мету та завдання дослідження, визначено об'єкт, предмет та методи дослідження, розкрито наукову новизну та практичне значення отриманих результатів. У першому розділі проведено аналіз сучасного стану у сфері кібербезпеки та тенденцій зростання кількості вразливостей у програмному забезпеченні. Розглянуто ключові стандарти та методології забезпечення безпеки ПЗ, зокрема Microsoft SDL, ОWASP та ISO 27034. Проаналізовано сучасні виклики, пов’язані зі зростанням складності систем та появою нових технологій. Розглянуто існуючі стандарти та методології забезпечення безпеки ПЗ. Досліджено можливості методів штучного інтелекту, зокрема машинного навчання, для автоматизації процесів аналізу безпеки коду. Розглянуто різні архітектури нейронних мереж та їх застосування для детекції вразливостей. Проаналізовано переваги та недоліки підходів. У другому розділі сформульовано постановку задачі дослідження та побудовано її математичну модель. Формалізовано функції перетворення даних на вході та виході системи. Розглянуто різні моделі подання програмного коду та обґрунтовано доцільність використання абстрактних синтаксичних дерев. Запропоновано власний гібридний підхід аналізу коду, що поєднує переваги глибокого навчання та алгоритмів пошуку подібності. Наведено детальний опис архітектури та математичних моделей складових компонент системи, зокрема нейромережевої моделі та модуля ковзного хешування AST. У третьому розділі представлено розробку ключових модулів запропонованої системи аналізу програмного коду з використанням гібридного методу пошуку та класифікації вразливостей. Описано удосконалений метод формування проміжних представлень коду на базі кодових гаджетів та їх подальша векторизація. Наведено архітектуру та алгоритми функціонування моделі глибокого навчання на основі BLSTM та модуля ковзного хешування AST. Також деталізовано розроблений метод класифікації вразливостей на основі ковзного хешування вузлів AST та порівняння з базою еталонів. Описано процедуру формування бази знань хешів вразливого коду та метод визначення оптимального вікна хешування AST. Четвертий розділ присвячено експериментальним дослідженням розробленої системи з використанням спеціалізованих наборів даних та кодових баз реальних проектів. Представлено аналіз отриманих результатів та порівняння з існуючими аналогами за критеріями якості та продуктивності. Обґрунтовано практичну цінність системи та можливості інтеграції в процеси безперервної інтеграції та доставки ПЗ. Модель пошуку вразливостей з використанням нейронних мереж продемонструвала 94.1% точності, а модель класифікації вразливостей з використанням ковзного хешування AST для 40 класів вразливостей - 51.1% точності. Обґрунтовано можливі шляхи вдосконалення системи. Висновки. У дисертаційній роботі вирішено актуальне науковоприкладне завдання розробки методів та програмних засобів для автоматизації процесів аналізу програмного коду на предмет вразливостей безпеки: 1. Запропоновано гібридний підхід до аналізу коду на основі поєднання методів глибокого навчання та алгоритмів пошуку подібності коду. Розроблено відповідну систему, що реалізує даний підхід. 2. Розроблено метод побудови проміжного представлення програмного коду у вигляді кодового гаджету, що дозволило підвищити ефективність подальшого аналізу за допомогою нейромереж. 3. Запропоновано метод класифікації вразливостей на основі ковзного хешування AST, що демонструє переваги за швидкодією у порівнянні з існуючими RNN-моделями. 4. Експериментально підтверджено ефективність розробленої системи, зокрема 94.1% точність пошуку вразливостей та 51.1% багатокласової точності їх класифікації. | |
dc.description.abstractother | Yevhenii Kubiuk. Source code analysis using a hybrid method of detecting and classifying vulnerabilities. Qualifying scientific work in manuscript copyright. Thesis for the degree of Doctor of Philosophy in specialty 122 "Computer Science". – National Technical University of Ukraine "Igor Sikorsky Kyiv Polytechnic Institute", 2024. Relevance of the topic. Relevance of the topic. In the context of rapid advancements in information technology and the digitization of society, cybersecurity issues become particularly acute. According to statistics, in 2022, the number of cyber attacks increased by 42% compared to the previous year, resulting in financial losses reaching $6 trillion. The main reason for this situation is the growing number of vulnerabilities in software actively exploited by malicious actors. Specifically, the U.S. National Vulnerability Database (NVD) recorded over 25,000 new vulnerabilities in 2022, a 20% increase compared to 2021. More than 75% of successful cyber attacks were based on exploiting already known vulnerabilities. This highlights the urgent need for the development of effective measures for timely detection and elimination of vulnerabilities in software code. One of the most promising solutions to this problem is the creation of automated code analysis systems based on artificial intelligence technologies. Such systems are capable of efficiently detecting hidden security defects during the software development stages, reducing risks, and enhancing overall security. Integrating them into development processes will improve adherence to secure programming practices and reduce security testing time. Therefore, the creation of innovative methods and tools for automating the analysis of security in software code is an extremely relevant task for enhancing the cybersecurity of modern software systems. Purpose and objectives. The purpose of the dissertation research is to develop and improve methods for detecting and classifying vulnerabilities in source code using neural networks and code similarity detection methods. The main objectives of the research include: - Investigate methods for detecting vulnerabilities in source code. - Investigate the effectiveness of code similarity detection methods in the task of vulnerability classification. - Investigate code representation models. - Develop a method for constructing an intermediate representation of source code for further analysis for vulnerabilities. - Develop a method for detecting vulnerabilities based on neural networks. - Develop a method for classifying vulnerabilities based on the code similarity detection method. - Implement software for a source code analysis system using a hybrid method for searching and classifying source code vulnerabilities. - Conduct computational experiments and evaluate the developed system. - Demonstrate the practical value of the developed system using the example of implementation in software development life cycle processes. The object of the research is the process of searching for and classifying security vulnerabilities in software code. The subject of the research is methods, algorithms and data structures for efficient analysis of source code for security vulnerabilities. Research methods. The following research methods are used: abstractlogical analysis of the problem, experiments, modeling, data analysis, comparison. These methods were chosen in view of the set purpose and objectives of the study, as well as the practicality of their application in solving the problem of automatic analysis of source code for security vulnerabilities. Scientific novelty of the results. For the first time, a hybrid method for analyzing program code is proposed, combining deep learning methods and code similarity detection methods to search for and classify vulnerabilities in code. This method allows for efficient vulnerability detection in code and highprecision classification of the discovered vulnerabilities. The method of constructing an intermediate representation of program code in the form of a code gadget has been further developed. It differs from existing methods by the presence of a restriction on the size of the local context relative to the key point, which allowed reducing the resulting size of code gadgets and improving classification accuracy during subsequent analysis by a neural network. For the first time, a method for classifying vulnerabilities in program code using sliding hashing of the abstract syntax tree is proposed. It differs from existing methods in that it uses a code similarity detection method for efficient vulnerability classification without the need for a large training dataset. Practical value of the results obtained. The proposed method allows detecting vulnerabilities in C/C++ code, as well as classifying the type of vulnerability found, which simplifies the process of prioritizing and fixing discovered vulnerabilities for software developers. The technology has been successfully integrated into the software development processes of an IT company and is used to analyze software products for vulnerabilities as a code analysis service. Also, the command-line interface of the system allows using it as a utility to analyze code without deploying it as a service, which allows cybersecurity professionals to use this tool as a recommendation system in software code security assessment processes. The proposed method has been tested on real open source projects. In particular, the developed system helped to find a vulnerability in the open source Microsoft Terminal project. Publications. The results of the dissertation research have led to the publication of 5 scientific works, including 4 articles in specialized scientific journals in Ukraine (3 of which are indexed in international scientific databases) and 1 publication in a conference proceedings compilation. Research Results. The developed software for code analysis implements the proposed hybrid method. The effectiveness of the system in tasks such as vulnerability detection and classification in software code has been experimentally confirmed. Structure and Scope of the Work. The dissertation comprises an introduction, 4 chapters, conclusions, and a list of references. The total volume of the dissertation is 140 pages, including 27 figures and 9 tables. The list of references includes 81 sources. Main Content of the Work. The introduction justifies the relevance of the topic, formulates the purpose and tasks of the research, defines the object, subject, and research methods, and highlights the scientific novelty and practical significance of the obtained results. In the first chapter, an analysis of the current state of cybersecurity and the trends in the increasing number of vulnerabilities in software is conducted. Key standards and methodologies for software security, including Microsoft SDL, OWASP, and ISO 27034, are discussed. Modern challenges related to the complexity of systems and emerging technologies are examined, along with existing standards and methodologies for software security. The possibilities of artificial intelligence methods, particularly machine learning, for automating code security analysis processes are investigated. Various neural network architectures and their application for vulnerability detection are explored, along with an analysis of the advantages and disadvantages of these approaches. The second chapter formulates the research problem, builds its mathematical model, and formalizes the data transformation functions at the input and output of the system. Different models for representing software code are considered, justifying the use of abstract syntax trees. A hybrid code analysis approach that combines the benefits of deep learning and similarity search algorithms is proposed. The architecture and mathematical models of the components of the system, including the neural network model and the abstract syntax tree sliding hash module, are detailed. The third chapter presents the development of key modules of the proposed code analysis system using the hybrid method for vulnerability search and classification. An improved method for generating intermediate code representations based on code gadgets and their subsequent vectorization is described. The architecture and functioning algorithms of the deep learning model based on BLSTM and the abstract syntax tree sliding hash module are provided. The developed vulnerability classification method based on sliding hash of AST nodes and comparison with a reference database is detailed. The procedure for creating a knowledge base of vulnerable code hashes and the method for determining the optimal sliding hash window for AST are also described. The fourth chapter is dedicated to experimental research of the developed system using specialized datasets and codebases of real projects. The analysis of the obtained results is presented, comparing them with existing analogs in terms of quality and performance criteria. The practical value of the system and its integration possibilities into continuous integration and software delivery processes are justified. The vulnerability search model using neural networks demonstrated an accuracy of 94.1%, while the vulnerability classification model using AST sliding hash for 40 vulnerability classes showed an accuracy of 51.1%. Possible ways to improve the system are discussed. Conclusions. The dissertation successfully addresses the relevant scientific and applied task of developing methods and software tools for automating the processes of analysing software code for security vulnerabilities: 1. A hybrid approach to code analysis, combining deep learning methods and code similarity search algorithms, has been proposed. A corresponding system implementing this approach has been developed. 2. A method for constructing an intermediate representation of the software code in the form of a code gadget has been developed, enhancing the efficiency of subsequent analysis using neural networks. 3. A vulnerability classification method based on sliding hash of Abstract Syntax Trees (AST) has been proposed, demonstrating advantages in terms of speed compared to existing RNN models. 4. The effectiveness of the developed system has been experimentally confirmed, achieving a 94.1% accuracy in vulnerability detection and a 51.1% multi-class accuracy in their classification. | |
dc.format.extent | 140 с. | |
dc.identifier.citation | Куб’юк, Є. Ю. Аналіз програмного коду з використанням гібридного методу пошуку та класифікації вразливостей : дис. … д-ра філософії : 122 – Комп’ютерні науки / Куб’юк Євгеній Юрійович. – Київ, 2024. – 140 с. | |
dc.identifier.uri | https://ela.kpi.ua/handle/123456789/67343 | |
dc.language.iso | uk | |
dc.publisher | КПІ ім. Ігоря Сікорського | |
dc.publisher.place | Київ | |
dc.subject | аналіз програмного коду | |
dc.subject | пошук вразливостей | |
dc.subject | класифікація вразливостей | |
dc.subject | нейронні мережі | |
dc.subject | ковзне хешування | |
dc.subject | машинне навчання | |
dc.subject | глибоке навчання | |
dc.subject | кібербезпека | |
dc.subject | виявлення аномалій | |
dc.subject | абстрактне синтаксичне дерево | |
dc.subject | база знань | |
dc.subject | code analysis | |
dc.subject | vulnerability detection | |
dc.subject | vulnerability classification | |
dc.subject | neural networks | |
dc.subject | sliding hashing | |
dc.subject | machine learning | |
dc.subject | deep learning | |
dc.subject | cybersecurity | |
dc.subject | anomaly detection | |
dc.subject | abstract syntax tree | |
dc.subject | knowledge base | |
dc.subject.udc | 004.021:004.023:004.93 | |
dc.title | Аналіз програмного коду з використанням гібридного методу пошуку та класифікації вразливостей | |
dc.type | Thesis Doctoral |
Файли
Контейнер файлів
1 - 1 з 1
Ліцензійна угода
1 - 1 з 1
Ескіз недоступний
- Назва:
- license.txt
- Розмір:
- 8.98 KB
- Формат:
- Item-specific license agreed upon to submission
- Опис: