Н.Н. Самарин1
1ФГУП «НИИ «Квант» (Москва, Россия)
1 samarin_nik@mail.ru
Постановка проблемы. Поиск ошибок и уязвимостей – ключевая задача для безопасного процесса разработки программного[n1] обеспечения (ПО). В ходе поиска ошибок выполняется анализ программного кода с целью обнаружения сочетания фрагментов кода и условий, при которых выполнение этих фрагментов может привести к некорректной работе всего ПО. Сложная и разветвленная структура алгоритма поиска подобных ошибок для современного ПО и большое число строк кода не позволяют осуществить процедуру обнаружения ошибок и уязвимостей вручную с помощью экспертного анализа. В связи с этим на сегодняшний день автоматизация поиска ошибок и уязвимостей в ПО является актуальной научно-практической задачей.
Цель. Представить архитектуру программного комплекса, позволяющего проводить анализ бинарных файлов, для получения результатов, подтверждающих поиск ошибок в ПО методом точечного фаззинга.
Результаты. Предложен программный комплекс, разработанный на языке Python версии 3.12. Показано, что разработанный инструмент позволяет проводить анализ бинарных файлов (в частности дизассемблирование и декомпиляцию их объектного кода), а также перевод данного кода в промежуточное представление PCODE и взаимодействие с кодом в этом представлении. Приведены результаты тестирования предлагаемого программного комплекса на естественном наборе входных данных, в качестве которого был использован набор данных SARD (Software Assurance Reference Dataset) Juliet C/C++ 1.3.1 with extra support от NIST (National Institute of Standards and Technology).
Практическая значимость. Представленный программный комплекс устраняет недостатки, присущие современным решениям по автоматизации поиска ошибок, и значительно снижает трудозатраты на поиск ошибок.
Самарин Н.Н. Программный комплекс для поиска ошибок в программном обеспечении методом точечного фаззинга // Радиотехника. 2024. Т. 88. № 6. С. 130−136. DOI: https://doi.org/10.18127/j00338486-202406-16
- PVS-Studio: Статический анализ кода [Электронный ресурс]. URL: https://pvs-studio.ru/ru/blog/terms/0046/. (Дата обращения: 28.05.2024).
- РТ Солар: Динамический анализ кода [Электронный ресурс]. URL: https://rt-solar.ru/products/solar_appscreener/blog/3974/. (Дата обращения: 28.05.2024).
- Самарин Н.Н. Модель для поиска ошибок в программном обеспечении методом точечного фаззинга // Проблемы информационной безопасности. Компьютерные системы. 2024. № 1. С. 134–141.
- Самарин Н.Н. Метод поиска ошибок в программном коде на базе фаззинга «в памяти» // Проблемы информационной безопасности. Компьютерные системы. 2024. No 2. С. 130–137.VulHawk: Cross-architecture Vulnerability Detection with Entropy-based Binary Code Search [Электронный ресурс]. URL: https://www.ndss-symposium.org/wp-content/uplo-ads/2023/02/ndss2023_f415 _paper.pdf. (Дата обращения: 30.05.2024).
- VulHawk: Cross-architecture Vulnerability Detection with Entropy-based Binary Code Search [site]. URL: https://www.ndss-sym-posium.org/wp-content/uploads/2023/02/ndss2023_f415_paper.pdf. (Date visited: 30.05.2024).
- Arxiv: Dynamic Neural Control Flow Execution: An Agent-Based Deep Equilibrium Approach for Binary Vulnerability Detection [Электронный ресурс]. URL: https://arxiv.org/pdf/2404.08562. (Дата обращения: 01.06.2024).
- B. Xia, C. Tang, W. Liu, S. Chu, Y. Dong. A Firmware Vulnerability Detection Method Based on Feature Filtering // 2023 IEEE Intl Conf on Parallel & Distributed Processing with Applications, Big Data & Cloud Computing, Sustainable Computing & Communications, Social Computing & Networking (ISPA/BDCloud/SocialCom/SustainCom). Wuhan. China. 2023. Р. 1069-1076. DOI: 10.1109/ISPA-BDCloud-SocialCom-SustainCom59178.2023.00172.
- Yeming Gu, Hui Shu, Fei Kang. BinAIV // Semantic-enhanced vulnerability detection for Linux x86 binaries, Computers & Security. 2023. V. 135. Р. 103508. https://doi.org/10.1016/j.cose.2023.103508.
- Python release 3.12.0 [Электронный ресурс]. URL: https://www.python.org/downloads/release/python-3120/. (Дата обращения: 03.06.2024).
- Grumpy Coder: Headless Analyzer README [Электронный ресурс]. URL: https://static.grumpy-coder.net/pixel/support/ana-lyzeHeadlessREADME.html. (Дата обращения: 04.06.2024).
- Github: unicorn-engine/unicorn [Электронный ресурс]. URL: https://github.com/unicorn-engine/unicorn. (Дата обращения: 05.06.2024).
- Github: Z3Prover/z3 [Электронный ресурс]. URL: https://github.com/Z3Prover/z3. (Дата обращения: 05.06.2024).
- Juliet C/C++ 1.3.1 with extra support - NIST Software Assurance Reference Dataset [Электронный ресурс]. URL: https://samate.nist.gov/SARD/test-suites/116. (Дата обращения: 06.06.2024).