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

Список литературы
  1. Саттон М., Грин А., Амини П. Fuzzing: исследование уязвимостей методом грубой силы. СПб.: Символ-Полюс,2009.555 с.
  2. Hertzfeld A. Monkey Lives[Электронный ресурс].URL: http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt (дата обращения: 21.10.2021).
  3. Bugbounty// Manalyzer[Электронный ресурс]. URL: https://manalyzer.org/bounty(дата обращения: 21.10.2021).
  4. Мельникова В.В., Котов С.Л., Палюх Б.В., Проскуряков М.А.Тестирование программ с использованием генетических алгоритмов // Программные продукты и системы. 2011. № 4. С. 107–110.
  5. 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
  6. AmericanFuzzyLoop(2.52b) [Электронный ресурс]. URL: http://lcamtuf.coredump.cx/afl/ (дата обращения: 21.10.2021).
  7. 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
  8. 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
  9. 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).
  10. 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
  11. 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.
  12. RajpalM., BlumW., SinghR. Notallbytesareequal: Neuralbytesieveforfuzzing // arXiv: 1711.04596. 2017 [Электронный ресурс]. URL: http://arxiv.org/abs/1711.04596 (дата обращения: 21.10.2021).
  13. 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


Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License
Информация 2001-2022 ©
Научно-технический вестник информационных технологий, механики и оптики.
Все права защищены.

Яндекс.Метрика