journal article·2025-05-25Open access

BoostPolyGlot: A Structured IR Generation-Based Fuzz Testing Framework for GCC Compiler Frontend

Hui Liu, Hanbin Guo, Peng Liu, Tongding Hou

Applied Sciences· Volume 15· Issue 11

Abstract

The compiler serves as a bridge connecting hardware architecture and application software, converting source code into executable files and optimizing code. Fuzz testing is an automated testing technology that evaluates software reliability by providing a large amount of random or mutated input data to the target system to trigger abnormal program behavior. When existing fuzz testing methods are applied to compiler testing, although they can detect common errors like lexical and syntax errors, there are issues such as insufficient pertinence in constructing the input corpus, limited support for structured Intermediate Representation (IR) node manipulation, and limited perfection of the mutation strategy. This study proposes a deep fuzz testing framework named BoostPolyGlot for GCC compiler frontend IR generation, which effectively covers the code-execution paths and improves the code-coverage rate through constructing an input corpus, employing translation by a master–slave IR translator, conducting operations on structured program characteristic IR nodes, and implementing an IR mutation strategy with dynamic weight adjustment. This study evaluates the fuzz testing capabilities of BoostPolyGlot based on dependency relationships, loop structures, and their synergistic effect. The experimental outcomes confirm that, when measured against five crucial performance indicators including total paths, count coverage, favored paths rate, new edges on rate, and level, BoostPolyGlot demonstrated statistically significant improvements compared with American Fuzzy Lop (AFL) and PolyGlot. These findings validate the effectiveness and practicality of the proposed framework.
Source: crossref · Quality: baseline

Research context

OpenAlex topics: Software Testing and Debugging Techniques · Real-time simulation and control systems · VLSI and Analog Circuit Testing

SciVX discovery tags are terminology-based. OpenAlex topics are source-provided classifications.

Affiliations

School of Computer and Information Engineering, Henan Normal University, Xinxiang 453007, China

Key Laboratory of Artificial Intelligence and Personalized Learning in Education of Henan Province, Xinxiang 453007, China

Purple Mountain Laboratories, Nanjing 211111, China

Funding

Henan Province Science and Technology Key Project · Henan Province Key Research, Development and Promotion Special Project

References (33)

Show source-provided references
1. Gough, B.J., and Stallman, R. (2004). An Introduction to GCC, Network Theory Limited.
2. Mogensen, T.Æ. (2024). Introduction to Compiler Design, Springer Nature.10.1007/978-3-031-46460-7 ↗
3. The art, science, and engineering of fuzzing: A survey
4. An empirical study of the reliability of UNIX utilities10.1145/96267.96279 ↗
5. Pham, V.T., Böhme, M., and Roychoudhury, A. (2016, January 3–7). Model-based whitebox fuzzing for program binaries. Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, Singapore.10.1145/2970276.2970316 ↗
6. Eom, J., Jeong, S., and Kwon, T. (2024). Covrl: Fuzzing javascript engines with coverage-guided reinforcement learning for llm-based mutation. arXiv.10.1145/3650212.3680389 ↗
7. Wang, J., Chen, B., Wei, L., and Liu, Y. (2017, January 22–26). Skyfire: Data-driven seed generation for fuzzing. Proceedings of the 2017 IEEE Symposium on Security and Privacy (SP), San Jose, CA, USA.10.1109/SP.2017.23 ↗
8. Godefroid, P., Peleg, H., and Singh, R. (November, January 30). Learn&fuzz: Machine learning for input fuzzing. Proceedings of the 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), Urbana, IL, USA.10.1109/ASE.2017.8115618 ↗
9. Fan, R., and Chang, Y. (2017). Machine learning for black-box fuzzing of network protocols. International Conference on Information and Communications Security, Proceedings of the Information and Communications Security 19th International Conference, Beijing, China, 6–8 December 2017, Springer.
10. Hu, Z., Shi, J., Huang, Y., Xiong, J., and Bu, X. (2018, January 8–10). GANFuzz: A GAN-based industrial network protocol fuzzing framework. Proceedings of the 15th ACM International Conference on Computing Frontiers, Ischia, Italy.10.1145/3203217.3203241 ↗
11. Synthesizing program input grammars10.1145/3140587.3062349 ↗
12. Experiences with Model Inference Assisted Fuzzing
13. Höschele, M., and Zeller, A. (2016, January 3–7). Mining input grammars from dynamic taints. Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, Singapore.10.1145/2970276.2970321 ↗
14. Cadar, C., Dunbar, D., and Engler, D.R. (2008, January 8–10). Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs. Proceedings of the OSDI, San Diego, CA, USA.
15. Han, H., Oh, D., and Cha, S.K. (2019, January 24–27). CodeAlchemist: Semantics-aware code generation to find vulnerabilities in JavaScript engines. Proceedings of the NDSS, San Diego, CA, USA.10.14722/ndss.2019.23263 ↗
16. Yang, X., Chen, Y., Eide, E., and Regehr, J. (2011, January 4–8). Finding and understanding bugs in C compilers. Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, San Jose, CA, USA.10.1145/1993498.1993532 ↗
17. Many-core compiler fuzzing10.1145/2813885.2737986 ↗
18. Random testing for C and C++ compilers with YARPGen10.1145/3428264 ↗
19. Dewey, K., Roesch, J., and Hardekopf, B. (2014, January 15–19). Language fuzzing using constraint logic programming. Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering, Vasteras, Sweden.10.1145/2642937.2642963 ↗
20. Xia, C.S., Paltenghi, M., Le Tian, J., Pradel, M., and Zhang, L. (2024, January 14–20). Fuzz4all: Universal fuzzing with large language models. Proceedings of the IEEE/ACM 46th International Conference on Software Engineering, Lisbon, Portugal.10.1145/3597503.3639121 ↗
21. american fuzzy lop (2.52 b)
22. Stephens, N., Grosen, J., Salls, C., Dutcher, A., Wang, R., Corbetta, J., Shoshitaishvili, Y., Kruegel, C., and Vigna, G. (2016, January 21–24). Driller: Augmenting fuzzing through selective symbolic execution. Proceedings of the NDSS, San Diego, CA, USA.10.14722/ndss.2016.23368 ↗
23. Yun, I., Lee, S., Xu, M., Jang, Y., and Kim, T. (2018, January 15–17). QSYM: A practical concolic execution engine tailored for hybrid fuzzing. Proceedings of the 27th USENIX Security Symposium (USENIX Security 18), Baltimore, MD, USA.
24. Chen, P., and Chen, H. (2018, January 21–23). Angora: Efficient fuzzing by principled search. Proceedings of the 2018 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA.10.1109/SP.2018.00046 ↗
25. Rawat, S., Jain, V., Kumar, A., Cojocar, L., Giuffrida, C., and Bos, H. (March, January 26). Vuzzer: Application-aware evolutionary fuzzing. Proceedings of the 2017 Network and Distributed System Security (NDSS) Symposium, San Diego, CA, USA. Internet Society.10.14722/ndss.2017.23404 ↗
26. Böhme, M., Pham, V.T., Nguyen, M.D., and Roychoudhury, A. (November, January 30). Directed greybox fuzzing. Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, Dallas, TX, USA.10.1145/3133956.3134020 ↗
27. Aschermann, C., Schumilo, S., Abbasi, A., and Holz, T. (2020, January 18–21). Ijon: Exploring deep state spaces via fuzzing. Proceedings of the 2020 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA.10.1109/SP40000.2020.00117 ↗
28. Peng, H., Shoshitaishvili, Y., and Payer, M. (2018, January 21–23). T-Fuzz: Fuzzing by program transformation. Proceedings of the 2018 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA.10.1109/SP.2018.00056 ↗
29. Blazytko, T., Bishop, M., Aschermann, C., Cappos, J., Schlögel, M., Korshun, N., Abbasi, A., Schweighauser, M., Schinzel, S., and Schumilo, S. (2019, January 14–16). GRIMOIRE: Synthesizing structure while fuzzing. Proceedings of the 28th USENIX Security Symposium (USENIX Security 19), Santa Clara, CA, USA.
30. Wang, J., Chen, B., Wei, L., and Liu, Y. (2019, January 25–31). Superion: Grammar-aware greybox fuzzing. Proceedings of the 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE), Montreal, QC, Canada.10.1109/ICSE.2019.00081 ↗
31. Groß, S., Koch, S., Bernhard, L., Holz, T., and Johns, M. (March, January 27). FUZZILLI: Fuzzing for JavaScript JIT Compiler Vulnerabilities. Proceedings of the NDSS, San Diego, CA, USA.
32. Zhong, R., Chen, Y., Hu, H., Zhang, H., Lee, W., and Wu, D. (2020, January 9–13). Squirrel: Testing database management systems with language validity and coverage feedback. Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security, Virtual.10.1145/3372297.3417260 ↗
33. Chen, Y., Zhong, R., Hu, H., Zhang, H., Yang, Y., Wu, D., and Lee, W. (2021, January 24–27). One engine to fuzz’em all: Generic language processor testing with semantic validation. Proceedings of the 2021 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA.10.1109/SP40001.2021.00071 ↗