Danh mục

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

Số trang: 6      Loại file: pdf      Dung lượng: 946.59 KB      Lượt xem: 18      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài viết đề 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 n 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.
Nội dung trích xuất từ tài liệu:
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 Tạp chí Khoa học Trường Đại học Quốc tế Hồng Bàng - Số 26 - 11/2023: 157-162 157 DOI: h ps://doi.org/10.59294/HIUJS.26.2023.538 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 n về ngữ cảnh sử dụng Phùng Thế Bảo1,*, Trần Chí Thiện2 và Tạ Hữu Vinh3 1 2 Trường Đại học Văn Lang, Viện lập trình hệ thống, Viện Hàn lâm khoa học Nga 3 Trung tâm Công nghệ, Học viện Kỹ thuật quân sự, Hà Nội TÓ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 n 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. Từ khóa: kiểm thử phần mềm, kiểm thử fuzzing, tạo mã, phân ch nh 1. ĐẶT VẤN ĐỀ Thư viện phần mềm là sản phẩm phần mềm được Khi áp dụng phương pháp kiểm thử fuzzing cho đóng gói với mục đích tái sử dụng trong các sản thư viện phần mềm, lập trình viên cần xây dựng phẩm phần mềm khác. Thư viện phần mềm bao các trình điều khiển kiểm thử fuzzing cho các gồm các định nghĩa về các kiểu dữ liệu mới, các hàm, chức năng riêng lẻ của thư viện, trình điều giao thức xử lý dữ liệu, bộ giao ếp với các phần khiển kiểm thử fuzzing này được gọi là “fuzz mềm khác … Không giống như các phần mềm driver”. Bảng 1 mô tả fuzz driver trên nền tảng thông thường, thư viện phần mềm có thể không LibFuzzer được sử dụng để kiểm thử hàm chứa các điểm thực thi ban đầu (entry point), vì purple_u 8_salvage() của thư viện libpurle. Fuzz thế trong kiểm tra, đánh giá các thư viện phần driver là một chương trình nhỏ, có 02 chức năng mềm phương pháp Unit tes ng [1] thường được chính: ếp nhận và phân phối/gán dữ liệu đầu sử dụng. Phương pháp này kiểm tra đánh giá thư vào cho các biến; xây dựng các lời gọi hàm theo viện theo các hàm, các chức năng, đòi hỏi người đúng cú pháp. lập trình viên phải: tham khảo tài liệu sử dụng; Với những thư viện phức tạp, dung lượng lớn với xem xét, đánh giá mã nguồn; xây dựng các trình số lượng thực thể nhiều (định nghĩa hàm, bản ghi, điều khiển kiểm thử (test driver) cho các hàm, kiểu dữ liệu mới) việc tham khảo tài liệu, đọc hiểu chức năng trong thư viện; theo dõi và đánh giá kết mã nguồn và xây dựng các fuzz driver êu tốn rất quả thực hiện các trình điều khiển kiểm thử. nhiều thời gian và công sức của các lập trình viên. Trong thời gian gần đây phương pháp kiểm thử Chính vì vậy việc nghiên cứu tự động sinh trình fuzzing đã đạt được những thành tựu lớn và trở điều khiển fuzzing dành được nhiều sự quan tâm, thành êu chuẩn trong vòng tuần hoàn phát triển trong đó có thể kể đến hệ thống Fudge [3] và phần mềm an toàn Microso (Microso Security FuzzGen [4]. Development Lifecycle) [2]. Fudge ứng dụng phương pháp phân ch nh Tác giả liên hệ: TS. Phùng Thế Bảo Email: bao.pt@vlu.edu.vn Hong Bang Interna onal University Journal of Science ISSN: 2615 - 9686 158 Tạp chí Khoa học Trường Đại học Quốc tế Hồng Bàng - Số 26 - 11/2023: 157-162 (sta c analysis) cây cú pháp trừu tượng (Abstract giảm hao phí lao động, nâng cao độ n cậy trong syntax tree) để phân ch kho mã nguồn ứng dụng việc đánh giá các thư viện phần mềm. Những vấn của Google (Google codebase) nhằm trích xuất đề cần giải quyết khi tự động sinh các trình điều những kịch bản (context) sử dụng của các thư viện khiển fuzzing: phần mềm được kiểm. Fudge tập trung vào việc - Phân ch mã nguồn để m đặc trưng và các mối xây dựng trình điểu khiển fuzzing cho các hàm có liên hệ giữa các thực thể (en ty) trong mã nguồn. tham số là chuỗi và độ dài chuỗi - những tham số - Khai báo và phân phối dữ liệu fuzzing đầu vào cho thường gây ra lỗi trong việc cấp phát, giải phóng các biến, các tham số của hàm được gọi, cấp phát bộ nhớ, hay xử lý độ dài chuỗi. FuzzGen phân ch và giải phóng bộ nhớ trong trường hợp cần thiết. mã đại diện trung gian (IR-Intermediate representa on) để m mối liên hệ giữa các thực - Xây dựng các lời gọi hàm theo cú pháp với các tham thể trong mã nguồn. FuzzGen làm việc tốt khi có số đã được khai báo và phân phối dữ liệu fuzzing. kho thư viện của Android. Tuy nhiên đối với những Bài báo gồm ba phần chính. ...

Tài liệu được xem nhiều:

Tài liệu có liên quan: