Details

Title Фаззинг тестирование исходного кода с применением нейронных сетей для обнаружения программных уязвимостей: выпускная квалификационная работа бакалавра: направление 01.03.02 «Прикладная математика и информатика» ; образовательная программа 01.03.02_02 «Системное программирование»
Creators Фисюк Алексей Юрьевич
Scientific adviser Беляев Сергей Юрьевич
Organization Санкт-Петербургский политехнический университет Петра Великого. Физико-механический институт
Imprint Санкт-Петербург, 2023
Collection Выпускные квалификационные работы; Общая коллекция
Subjects фаззинг тестирование; нейронные сети; градиентный спуск; покрытие кода; American Fuzzy Loop (AFL); Tensorflow; Keras; Linux; fuzzing; neural networks; gradient descent; test coverage
Document type Bachelor graduation qualification work
File type PDF
Language Russian
Level of education Bachelor
Speciality code (FGOS) 01.03.02
Speciality group (FGOS) 010000 - Математика и механика
DOI 10.18720/SPBPU/3/2023/vr/vr23-4625
Rights Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key ru\spstu\vkr\25382
Record create date 8/7/2023

Allowed Actions

Action 'Read' will be available if you login or access site from another network

Action 'Download' will be available if you login or access site from another network

Group Anonymous
Network Internet

Фаззинг тестирование является стандартным методом поиска уязвимостей программного обеспечения. Однако даже самые современные программные средства не очень эффективны в поиске трудноизвлекаемых программных ошибок. Большинство популярных фаззеров используют эволюционное методы для генерации входных данных, которые могут вызвать различные ошибки. Такие эволюционные алгоритмы быстры и просты в реализации, но часто застревают в последовательностях случайных мутаций. В данной работе изложена сущность подхода к генерации входных данных с применением нейронных сетей, которые могут обучаться и увеличивать покрытие кода программ со сложным ветвлением. Однако применение градиентных методов напрямую неприменимо к фаззингу, так как поведение программ имеет множество разрывов. Эту проблему предлагается решить с помощью аппроксимации дискретного поведения программы непрерывной функцией. Тестирование проводилось на 4 программах с открытым исходным кодом из набора данных LAVA-M с искусственно внесенными уязвимостями. Реализованный метод показал отличные результаты относительно трех рассматриваемых Фаззеров: AFL, AFL++, AFLSmart.

Fuzzing testing is a standard method of finding software vulnerabilities. However, even the most modern software tools are not very effective in finding hard-to-recover software errors. Most popular fuzzers use evolutionary methods to generate input data that can cause various errors. Such evolutionary algorithms are fast and easy to implement, but they often get stuck in sequences of random mutations. This paper describes the essence of the approach to generating input data using neural networks that can be trained and increase the code coverage of programs with complex branching. However, the use of gradient methods is not directly applicable to fuzzing, since the behavior of programs has many discontinuities. It is proposed to solve this problem by approximating the discrete behavior of the program by a continuous function. Testing was carried out on 4 open source programs from the LAVA-M dataset with artificially introduced vulnerabilities. The implemented method showed excellent results with respect to the tree considered Fuzzers: AFL, AFL++, AFLSmart.

Network User group Action
ILC SPbPU Local Network All
Read Print Download
Internet Authorized users SPbPU
Read Print Download
Internet Anonymous

Access count: 6 
Last 30 days: 1

Detailed usage statistics