ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ ФАЗЗИНГА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ГЕНЕРАЦИИ ФАЗЗИНГ-ОБЕРТОК

Обложка

Цитировать

Полный текст

Открытый доступ Открытый доступ
Доступ закрыт Доступ предоставлен
Доступ закрыт Только для подписчиков

Аннотация

Фаззинг остается наиболее эффективным методом выявления уязвимостей в программном обеспечении. В контексте тестирования методом фаззинга фаззер передает различные входные данные фаззинг-оберткам, которые предназначены для всестороннего тестирования критических участков клиентского кода. Различные исследования были посвящены оптимизации и разработке продвинутых фаззеров, таких как AFL++, libFuzzer, Honggfuzz, syzkaller, ISP-Fuzzer, что значительно повысило эффективность обнаружения уязвимостей в широко используемых программах и библиотеках. Тем не менее достижение более высокого покрытия требует улучшения как качества, так и количества фаззинг-оберток. В крупных программных проектах и библиотеках, содержащих множество пользовательских функций и типов данных, ручное создание фаззинг-оберток требует значительных временных и трудовых затрат. Эта проблема подчеркивает необходимость автоматизированных методов не только для генерации фаззинг-оберток, но и для упрощения их исполнения и анализа результатов. В данной статье мы представляем подход к улучшению фаззинга за счет автоматизации генерации фаззинг-оберток на основе статического анализа исходного кода библиотек. Предложенный метод включает несколько этапов: анализ структур исходного кода для корректной генерации вызовов функций и фаззинг-оберток, сопоставление входных данных фаззера с соответствующими параметрами функций, обработка результатов компиляции для фаззинг-оберток, а также автоматический сбор и анализ результатов исполнения. Полученные результаты в экспериментах с библиотеками на C/C++ превосходят ряд аналогичных методов, используемых в данной области.

Об авторах

Тхнеи Ти Чан

Университет управления и технологий г. Хошимин

Email: tranchithien@tdtu.edu.vn
ORCID iD: 0000-0003-3591-872X
г. Хошимин, Вьетнам

Список литературы

  1. Bohme M., Cadar C., Roychoudhury A. Fuzzing: Challenges and reflections // IEEE Software. 2020. 13 apr. V. 38(3). P. 79-86.
  2. Zalewski M. AFL: American fuzzy lop. 2021. https://github.com/mirrorer/afl
  3. Serebryany K. Continuous fuzzing with libfuzzer and addresssanitizer // In: 2016 IEEE Cybersecurity Development (SecDev). 2016. Nov. 3. P. 157.
  4. Google // Syzkaller. https://github.com/google/syzkaller
  5. Google // Honggfuzz. https://github.com/google/honggfuzz
  6. Tran C.T., Kurmangaleev S. Futag: Automated fuzz target generator for testing software libraries // Ivannikov Memorial Workshop (IVMEM). 2021. P. 80-85. doi: 10.1109/IVMEM53963.2021.00021.
  7. Tran C.T., Ponomarev D., Kuznhesoy A. Research on automatic generation of fuzz-target for software library functions // Ivannikov Ispras Open Conference (ISPRAS). 2022. P. 95-99. doi: 10.1109/ISPRAS57371.2022.10076871.
  8. Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A. Sydr-Fuzz: Continuous Hybrid Fuzzing and Dynamic Analysis for Security Development Lifecycle // Ivannikov Ispras Open Conference (ISPRAS). 2022. P. 111-123. doi: 10.1109/ISPRAS57371.2022.10076861.
  9. Babic D., Bucur S., Chen Y., Ivancic F., King T., Kusano M., Lemieux C., Szekeres L., Wang W. Fudge: fuzz driver generation at scale // Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2019, Aug. 12. P. 975-985.
  10. Sargsyan S., Hakobyan J., Mehrabyan M., Mishechkin M., Akozin V., Kurmangaleev S. ISP-Fuzzer: Extensible fuzzing framework // Ivannikov Memorial Workshop (IVMEM). Mockba, Poccina, 2019, Sep. 13. P. 68-71.
  11. Ispoglou K., Austin D., Mohan V., Payer M. {FuzzGen}: Automatic fuzzer generation // USENIX Security Symposium (USENIX Security). 2020. P. 2271-2287.
  12. Gao W., Pham V.-T., Liu D., Chang O., Murray T., Rubinstein B.I.P. Beyond the Coverage Plateau: A Comprehensive Study of Fuzz Blockers (Registered Report) // B cborhniec: Proceedings of the 2nd International Fuzzing Workshop (FUZZING). 2023. P. 47-55. doi: 10.1145/3605157.3605177.
  13. Google // AI-Powered Fuzzing: Breaking the Bug Hunting Barrier. https://security.googleblog.com/2023/08/ai-powered-fuzzing-breaking-bug-hunting.html
  14. Serebryany K. {OSS-Fuzz}-Google's continuous fuzzing service for open source software, 2017.
  15. Futag. https://github.com/ispras/Futag/
  16. Allen F.E. Control Flow Analysis // Proceedings of a Symposium on Compiler Optimization — Urbana-Champaign. Illinois: ACM, 1970. P. 1-19. doi: 10.1145/800028.808479.
  17. Kennedy K. A survey of data flow analysis techniques // IBM Thomas J. Watson Research Division. 1979.
  18. Allen F.E., Cocke J. A program data flow analysis procedure // Communications of the ACM. 1976. Mar. V. 19(3). P. 137.
  19. Futag-test. Futag-tests/json-c-contexts/succeeded/json_object_put/json_object_put-1
  20. Weiser M. Program slicing // IEEE Transactions on Software Engineering. 2009, May. № 4. P. 352-357.
  21. Jeon S., Ryu M., Kim D., Kim H.K. Automatically Seed Corpus and Fuzzing Executables Generation Using Test Framework // IEEE Access. 2022. V. 10. P. 90408-90428. doi: 10.1109/ACCESS.2022.3202005.
  22. LLVM // Data Flow Analysis Intro. https://clang.llvm.org/docs/DataFlowAnalysisIntro.html

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML

© Российская академия наук, 2025

Согласие на обработку персональных данных

 

Используя сайт https://journals.rcsi.science, я (далее – «Пользователь» или «Субъект персональных данных») даю согласие на обработку персональных данных на этом сайте (текст Согласия) и на обработку персональных данных с помощью сервиса «Яндекс.Метрика» (текст Согласия).