{"title":"约束引导混合模糊测试","authors":"Junhao Li, Yujian Zhang","doi":"10.1109/COMPSAC57700.2023.00086","DOIUrl":null,"url":null,"abstract":"Hybrid fuzzing combines fuzzing and concolic execution which leverages the high-throughput feature of fuzzing to explore easy-to-reach code, and the powerful constraint solving capability of concolic execution to explore code wrapped in complex constraints. Based on our observations, existing hybrid fuzzers are still not efficient for the following two reasons. First, fuzzing often gets stuck in deep paths leading to the delayed discovery of vulnerabilities. Second, coarse-grained interaction strategies cannot effectively launch concolic execution. To solve the above problems, we propose a constraint-guided hybrid fuzzing approach (CGHF) that leverages the constraints’ static analysis information and dynamic execution information. CGHF contains two main techniques: an evolutionary algorithm based on path exploration difficulty and an interaction strategy guided by the execution state of constraints. Specifically, in the fuzzing phase, we evaluate the path exploration difficulty and guide the fuzzer to explore in the order of difficulty from low to high. In addition, we design a coordinator to monitor the constraints’ dynamic execution information and select the most deserving constraints to be solved for the concolic execution. We implement a prototype called SILK and compare its effectiveness on eight open source programs with other state-of-the-art fuzzers. The results show that SILK improved path coverage by 10%-45% and branch coverage by 5%-10% compared with other fuzzers.","PeriodicalId":296288,"journal":{"name":"2023 IEEE 47th Annual Computers, Software, and Applications Conference (COMPSAC)","volume":"27 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"SILK: Constraint-guided Hybrid Fuzzing\",\"authors\":\"Junhao Li, Yujian Zhang\",\"doi\":\"10.1109/COMPSAC57700.2023.00086\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Hybrid fuzzing combines fuzzing and concolic execution which leverages the high-throughput feature of fuzzing to explore easy-to-reach code, and the powerful constraint solving capability of concolic execution to explore code wrapped in complex constraints. Based on our observations, existing hybrid fuzzers are still not efficient for the following two reasons. First, fuzzing often gets stuck in deep paths leading to the delayed discovery of vulnerabilities. Second, coarse-grained interaction strategies cannot effectively launch concolic execution. To solve the above problems, we propose a constraint-guided hybrid fuzzing approach (CGHF) that leverages the constraints’ static analysis information and dynamic execution information. CGHF contains two main techniques: an evolutionary algorithm based on path exploration difficulty and an interaction strategy guided by the execution state of constraints. Specifically, in the fuzzing phase, we evaluate the path exploration difficulty and guide the fuzzer to explore in the order of difficulty from low to high. In addition, we design a coordinator to monitor the constraints’ dynamic execution information and select the most deserving constraints to be solved for the concolic execution. We implement a prototype called SILK and compare its effectiveness on eight open source programs with other state-of-the-art fuzzers. The results show that SILK improved path coverage by 10%-45% and branch coverage by 5%-10% compared with other fuzzers.\",\"PeriodicalId\":296288,\"journal\":{\"name\":\"2023 IEEE 47th Annual Computers, Software, and Applications Conference (COMPSAC)\",\"volume\":\"27 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2023-06-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2023 IEEE 47th Annual Computers, Software, and Applications Conference (COMPSAC)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/COMPSAC57700.2023.00086\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2023 IEEE 47th Annual Computers, Software, and Applications Conference (COMPSAC)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/COMPSAC57700.2023.00086","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Hybrid fuzzing combines fuzzing and concolic execution which leverages the high-throughput feature of fuzzing to explore easy-to-reach code, and the powerful constraint solving capability of concolic execution to explore code wrapped in complex constraints. Based on our observations, existing hybrid fuzzers are still not efficient for the following two reasons. First, fuzzing often gets stuck in deep paths leading to the delayed discovery of vulnerabilities. Second, coarse-grained interaction strategies cannot effectively launch concolic execution. To solve the above problems, we propose a constraint-guided hybrid fuzzing approach (CGHF) that leverages the constraints’ static analysis information and dynamic execution information. CGHF contains two main techniques: an evolutionary algorithm based on path exploration difficulty and an interaction strategy guided by the execution state of constraints. Specifically, in the fuzzing phase, we evaluate the path exploration difficulty and guide the fuzzer to explore in the order of difficulty from low to high. In addition, we design a coordinator to monitor the constraints’ dynamic execution information and select the most deserving constraints to be solved for the concolic execution. We implement a prototype called SILK and compare its effectiveness on eight open source programs with other state-of-the-art fuzzers. The results show that SILK improved path coverage by 10%-45% and branch coverage by 5%-10% compared with other fuzzers.