Меню
Публикации
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
2001
Главный редактор
НИКИФОРОВ
Владимир Олегович
д.т.н., профессор
Партнеры
doi: 10.17586/2226-1494-2021-21-6-895-902
УДК 004.052.2
Стохастическое тестирование программного обеспечения для поиска уязвимостей
Читать статью полностью
Язык статьи - русский
Ссылка для цитирования:
Аннотация
Ссылка для цитирования:
Манеев А.О., Спивак А.И. Стохастическое тестирование программного обеспечения для поиска уязвимостей // Научно-технический вестник информационных технологий, механики и оптики. 2021. Т. 21, № 6. С. 895–902. doi: 10.17586/2226-1494-2021-21-6-895-902
Аннотация
Предмет исследования. Стохастическое тестирование при помощи фаззеров является одним из способов поиска уязвимостей в программном обеспечении. Процесс тестирования в общем случае представляет собой генерацию случайных входных данных для исследуемой программы и может занимать значительное время. Снижение времени тестирования — актуальная задача. Одно из направлений улучшения процесса генерации — выделение только тех последовательностей данных, которые значительно влияют на пути выполнения тестируемой программы. Таким образом, новый подход к формированию входных данных, для снижения общего времени тестирования, позволит найти большее количество уязвимостей программ. Метод. Предложена модификация генетического алгоритма, используемого популярным фаззером afl (American Fuzzy Lop). Для повышения эффективности генерации входных данных предложена модель перспективных позиций. В модели производится выбор наиболее перспективной с точки зрения обнаружения уязвимости позиции входных данных для дальнейших мутаций с использованием генетического алгоритма фаззера. В отличие от существующих подходов, представленная модель учитывает перспективность конкретного элемента входных данных для увеличения покрытия кода тестом и по данной причине направляет генетический алгоритм на изменение именно этой позиции. Основные результаты. Выполнено сравнение эффективности разработанной модели с популярным фаззером afl и его модификациями (aflfast, symfuzz, afl-rb). В ходе экспериментального исследования модель позволяет достичь в среднем на 21 % большее покрытие кода, чем другие представленные решения. Покрытие ветвей исполнения между базовыми блоками кода программы увеличено с 20 897,3 до 17 267,4. Практическая значимость. Предложенная модель может быть применена при тестировании программного обеспечения, предполагающего ввод и обработку пользовательских данных. При этом требуемые изменения необходимы только в компоненте генератора псевдослучайных чисел и не затрагивают весь инструмент автоматизированного тестирования.
Ключевые слова: тестирование, динамическое тестирование, стохастическое тестирование, уязвимость, фаззинг, Fuzzing
Список литературы
Список литературы
-
Саттон М., Грин А., Амини П. Fuzzing: исследование уязвимостей методом грубой силы. СПб.: Символ-Полюс,2009.555 с.
-
Hertzfeld A. Monkey Lives[Электронный ресурс].URL: http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt (дата обращения: 21.10.2021).
-
Bugbounty// Manalyzer[Электронный ресурс]. URL: https://manalyzer.org/bounty(дата обращения: 21.10.2021).
-
Мельникова В.В., Котов С.Л., Палюх Б.В., Проскуряков М.А.Тестирование программ с использованием генетических алгоритмов // Программные продукты и системы. 2011. № 4. С. 107–110.
-
Godefroid P. Random testing for security: blackbox vs. whitebox fuzzing // RT '07: Proc. of the 2nd International Workshop on Random Testing: Co-located with the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2007). 2007. P. 1. https://doi.org/10.1145/1292414.1292416
-
AmericanFuzzyLoop(2.52b) [Электронный ресурс]. URL: http://lcamtuf.coredump.cx/afl/ (дата обращения: 21.10.2021).
-
Yue T., Tang Y., Yu B., Wang P., Wang E. LearnAFL: Greybox fuzzing with knowledge enhancement// IEEE Access. 2019. V. 7. P. 117029–117043. https://doi.org/10.1109/ACCESS.2019.2936235
-
Kersten R., Luckow K., Pãsãreanu C.S. Poster: AFL-based Fuzzing for Java with Kelinci// Proc. of the 24th ACM SIGSAC Conference on Computer and Communications Security (CCS 2017). 2017. P. 2511–2513. https://doi.org/10.1145/3133956.3138820
-
Smetsers R., Moerman J., Janssen M., Verwer S. Complementing Model Learning with Mutation-Based Fuzzing // arXiv: 1611.02429. 2016 [Электронный ресурс]. URL: http://arxiv.org/abs/1611.02429 (датаобращения: 21.10.2021).
-
Cha S.K., Woo M., Brumley D. Program-adaptive mutational fuzzing // Proc. of the 36th IEEE Symposium on Security and Privacy (SP 2015). 2015. P. 725–741. https://doi.org/10.1109/SP.2015.50
-
Householder A.D. Well There's Your Problem: Isolating the Crash Inducing Bits in a Fuzzed File: technical note CMU/SEI-2012-TN-012 / Software Engineering Institute. Carnegie Mellon University, 2012.19 p.
-
RajpalM., BlumW., SinghR. Notallbytesareequal: Neuralbytesieveforfuzzing // arXiv: 1711.04596. 2017 [Электронный ресурс]. URL: http://arxiv.org/abs/1711.04596 (дата обращения: 21.10.2021).
-
Böhme M., Pham V.-T., Roychoudhury A. Coverage-based Greybox Fuzzing As Markov Chain // Proc. of the 23rd ACM Conference on Computer and Communications Security (CCS 2016). 2016. P. 1032–1043. https://doi.org/10.1145/2976749.2978428