Обзор существующих методов анализа полносистемного покрытия кода
https://doi.org/10.15514/ISPRAS-2025-37(6)-58
Аннотация
С увеличением числа кибератак и несанкционированного доступа к данным растет популярность методологии безопасной разработки (SDL), направленной на интеграцию мер безопасности на всех этапах разработки ПО. Анализ покрытия кода – важный инструмент для изучения поведения программы в процессе выполнения, который помогает оценить эффективность методов выявления уязвимостей и непроверенного кода. Однако большинство существующих инструментов анализируют код в изоляции от реальной среды выполнения, что ограничивает точность анализа. Для его улучшения необходим комплексный подход, учитывающий динамические взаимодействия компонентов и особенности выполнения программы. В статье рассматриваются методы сбора покрытия кода в контексте их адаптации к полносистемной эмуляции, возможности корреляции с машинными инструкциями и связанные с этим затраты.
Об авторах
Аркадий Алексеевич ИВАНОВРоссия
Разработчик программного обеспечения. Сфера научных интересов: отладка, интроспекция и инструментирование виртуальных машин, динамический анализ бинарного кода, эмуляторы.
Павел Михайлович ДОВГАЛЮК
Россия
Кандидат технических наук, инженер. Сфера научных интересов: интроспекция и инструментирование виртуальных машин, динамический анализ кода, отладчики, эмуляторы.
Наталья Игоревна ФУРСОВА
Россия
Кандидат технических наук, инженер. Сфера научных интересов: интроспекция и инструментирование виртуальных машин, динамический анализ кода, эмуляторы.
Список литературы
1. Довгалюк П.М., Климушенкова М.А., Фурсова Н.И., Степанов В.М., Васильев И.А., Иванов А.А., Иванов А.В., Бакулин М.Г., Егоров Д.И. Natch: Определение поверхности атаки программ с помощью отслеживания помеченных данных и интроспекции виртуальных машин. Труды ИСП РАН, том 34, вып. 5, 2022 г, стр. 89-110. DOI: 10.15514/ISPRAS-2022-34(5)-6. / Dovgalyuk P. M., Klimushenkova M. A., Fursova N. I., Stepanov V. M., Vasiliev I. A., Ivanov A. A., Ivanov A. V., Bakulin M. G., Egorov D. I. Natch: using virtual machine introspection and taint analysis for detection attack surface of the software. Trudy ISP RAN/Proc. ISP RAS, 2022, vol. 34, issue 5, pp. 89-110 (in Russian). DOI: 10.15514/ISPRAS-2022-34(5)-6
2. Qemu. A generic and open source machine emulator and virtualizer. URL: https://www.qemu.org/.
3. Dovgalyuk P., Fursova N. et al. QEMU-based Framework for Non-Intrusive Virtual Machine Instrumentation and Introspection. In Proc. of the 11th Joint Meeting on Foundations of Software Engineering, 2017, pp. 944-948.
4. Степанов В. М., Довгалюк П. М., Фурсова Н. И. Декларативный подход к задаче интроспекции виртуальной машины. Труды ИСП РАН, том 36, вып. 3, 2024 г, стр. 123-138. / Stepanov V. M., Dovgalyuk P. M., Fursova N. I. Declarative approach to the problem of virtual machine introspection. Trudy ISP RAN/Proc. ISP RAS, 2024, vol. 36, issue 3, pp. 123-138 (in Russian). DOI: 10.15514/ISPRAS-2024-36(3)-9
5. Dovgalyuk P. Deterministic Replay of System's Execution with Multi-target QEMU Simulator for Dynamic Analysis and Reverse Debugging. In Proc. of the 2012 16th European Conference on Software Maintenance and Reengineering, 2012, pp. 553-556.
6. Available at: https://github.com/qemu/qemu/blob/master/contrib/plugins/drcov.c, accessed 21.10.2024.
7. DrCov File Format, Available at: https://www.ayrx.me/drcov-file-format/, accessed 21.10.2024.
8. Zeng, Y., Fu, Y., Lin, Z. "Pemu: A pin highly compatible out-of-vm dynamic binary instrumentation framework." Proceedings of the 11th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. 2015. pp. 147-160.
9. Google AFL. Available at: https://github.com/google/AFL, accessed 02.12.2024.
10. Technical "whitepaper" for afl-fuzz, Available at: https://lcamtuf.coredump.cx/afl/technical_details.txt, accessed 21.10.2024.
11. AFL++. README.llvm.md: Source code coverage through instrumentation, Available at: https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.llvm.md#8-source-code-coverage-through-instrumentation, accessed 21.10.2024.
12. Gan S., Zhang C., Qin X., Tu X., Li K., Pei Z., & Chen Z. Collafl: Path sensitive fuzzing. In 2018 IEEE Symposium on Security and Privacy (SP), 2018, pp. 679-696. IEEE.
13. Sarafov V., Markvica D., Berlakovich F., Bernad M., & Brunthaler S. Understanding and Improving Coverage Tracking with AFL++ (Registered Report). In Proceedings of the 3rd ACM International Fuzzing Workshop, 2024, pp. 80-89.
14. Fioraldi A., Maier D., Eißfeldt H., & Heuse M. {AFL++}: Combining incremental steps of fuzzing research. In 14th USENIX Workshop on Offensive Technologies (WOOT 20), 2020.
15. afl-cov - AFL Fuzzing Code Coverage, Available at: https://github.com/mrash/afl-cov, accessed 21.10.2024.
16. Lcov - a graphical GCOV front-end. Available at: https://man.archlinux.org/man/lcov.1.en, accessed 21.10.2024.
17. Bosbach N., Salama A., Jünger L., Burton M., Zurstraßen N., Pelke R., & Leupers R. NQC²: A Non-Intrusive QEMU Code Coverage Plugin. In Proceedings of the 16th Workshop on Rapid Simulation and Performance Evaluation for Design, 2024, pp. 16-21.
18. Xilinx. QEMU: an emulator supporting Xilinx architectures, Available at: https://github.com/Xilinx/qemu, accessed 21.10.2024.
19. QEMU. TCG Plugins API: documentation for developing plugins for QEMU, Available at: https://www.qemu.org/docs/master/devel/tcg-plugins.html#api, accessed 21.10.2024.
20. QEMU E-Trace: a tracing tool for QEMU, Available at: https://github.com/edgarigl/qemu-etrace, accessed 21.10.2024.
21. PANDA: a platform for dynamic analysis and tracing, Available at: https://github.com/panda-re/panda?tab=readme-ov-file, accessed 21.10.2024.
22. PANDA Coverage Plugins, Available at: https://github.com/panda-re/panda/tree/dev/panda/plugins/coverage, accessed 21.10.2024.
23. Wang, J., Duan, Y., Song, W., Yin, H., & Song, C. Be sensitive and collaborative: Analyzing impact of coverage metrics in greybox fuzzing. In Proc. of the 22nd International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2019), 2019, pp. 1-15.
24. Peng, X., Jia, P., Fan, X., & Liu, J. ENZZ: Effective N-gram coverage assisted fuzzing with nearest neighboring branch estimation. In Information and Software Technology, 2024, Article 107582.
Рецензия
Для цитирования:
ИВАНОВ А.А., ДОВГАЛЮК П.М., ФУРСОВА Н.И. Обзор существующих методов анализа полносистемного покрытия кода. Труды Института системного программирования РАН. 2025;37(6):187-200. https://doi.org/10.15514/ISPRAS-2025-37(6)-58
For citation:
IVANOV A.A., DOVGALYUK P.M., FURSOVA N.I. Review of Existing Methods for Analyzing Full-System Code Coverage. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2025;37(6):187-200. (In Russ.) https://doi.org/10.15514/ISPRAS-2025-37(6)-58






