Phương pháp sinh trình điều khiển fuzzing trong kiểm thử thư viện phần mềm với điều kiện thiếu thông tin về ngữ cảnh sử dụng
Các tác giả
DOI: https://doi.org/10.59294/HIUJS.26.2023.538Từ khóa:
kiểm thử phần mềm, kiểm thử fuzzing, tạo mã, phân tích tĩnhTóm tắt
Kiểm thử fuzzing đóng vai trò quan trọng trong vòng tuần hoàn phát triển phần mềm an toàn. Đối với các thư viện phần mềm đòi hỏi phải xây dựng các trình điều khiển fuzzing (fuzz driver) để phân phối và thực thi các mẫu kiểm cho các hàm trong thư viện. Các nghiên cứu liên quan chủ yếu trích xuất ngữ cảnh sử dụng của thư viện được kiểm trong các phần mềm khác để xây dựng trình điều khiển fuzzing, điều này dẫn đến việc không kiểm tra, đánh giá được hết các hàm được định nghĩa trong thư viện, hoặc không đánh giá, kiểm tra được trong điều kiện thư viện được kiểm chưa được sử dụng trong bất kỳ phần mềm nào. Bài báo đề xuất phương pháp tự động sinh các trình điều khiển fuzzing cho các thư viện ngôn ngữ C/C++ trong điều kiện thiếu thông tin về ngữ cảnh sử dụng thư viện được kiểm. So với việc viết thủ công các trình điều khiển fuzzing cho một số thư viện phổ biến phương pháp này đã sinh được số trình điều khiển vượt trội, giúp giảm thời gian viết mã cho các trình điều khiển fuzzing. Bên cạnh đó, ứng dụng phương pháp được đề xuất giúp phát hiện một số lỗi trong các thư viện phần phổ biến: libpng, pugixml.
Abstract
Fuzz testing plays an important role in The Security Development Lifecycle. For software libraries, fuzz drivers must be written for each function. Related studies mainly leverage the usage contexts of the tested library in other programs to create fuzzing drivers. These approaches do not test all the functions of the library or do not work in the absence of the usage contexts. This article proposes a method for automatically generating fuzzing drivers for C/C++ language libraries in the absence of information about the usage context of tested library. In practice, this approach generates alot of fuzz drivers, which reduces coding time and finds some bugs in popular libraries: libpng, pugixml.
Tài liệu tham khảo
[1] S. Shamshiri, “How Do Automatically Generated Unit Tests Influence Software Maintenance”, 11th International Conference on Software Testing, Verification and Validation (ICST), pp. 250-261, 2018.
DOI: https://doi.org/10.1109/ICST.2018.00033[2] Potter, Bruce, Microsoft SDL threat modelling tool. Network Security, pp. 15-18, 2009.
DOI: https://doi.org/10.1016/S1353-4858(09)70008-X[3] D. Babic , “Fudge: Fuzz Driver Generation at Scale”, 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, 2019.
DOI: https://doi.org/10.1145/3338906.3340456[4] K. Ispoglou, “FuzzGen: Automatic Fuzzer Generation, 29th USENIX Security Symposium (USENIX Security 20), USENIX Association, 2020, pp. 2271-2287. URL: https://www.usenix.org/conference/usenixsecurity20/ presentation/ispoglou.
[5] T. Kremenek, “Finding software bugs with the clang static analyzer”, Apple Inc, pp. 20-28, 2008.
[6] C. T. Tran and S. Kurmangaleev, "Futag: Automated fuzz target generator for testing software libraries", Ivannikov Memorial Workshop (IVMEM), pp. 80-85, 2021. DOI: 10.1109/IVMEM53963.2021.00021.
[7] M. Kelly, C. Treude, A. Murray, “A Case Study on Automated Fuzz Target Generation for Large Codebases”, CoRR, 2019. URL: http://arxiv.org/abs/ 1907.12214.
DOI: https://doi.org/10.1109/ESEM.2019.8870150[8] C. T. Tran, D. Ponomarev and A. Kuznhesov, "Research on automatic generation of fuzz-target for software library functions", Ivannikov Ispras Open Conference (ISPRAS), Moscow, Russian Federation, 2022, pp. 95-99. DOI: 10.1109/ISPRAS57371.2022.10076871.
[9] S. McConnell, “Software estimation: demystifying the black art”, Microsoft press, 2006.
Tải xuống
Tải xuống: 66