
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
Thông tin tài liệu:
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ìm kiếm theo từ khóa liên quan:
Kiểm thử fuzzing Kiểm thử phần mềm Các trình điều khiển fuzzing Kiểm thử thư viện phần mềm Phân tích tĩnh Phương pháp sinh trình điều khiển fuzzing Phát triển phần mềm an toànTài liệu có liên quan:
-
Bài giảng Kiểm thử phần mềm: Bài 2
34 trang 357 0 0 -
Giáo trình Công nghệ phần mềm nâng cao: Phần 2
202 trang 242 0 0 -
Nhập môn kiểm thử phần mềm: Chương 1 - Trần Duy Hoàng
33 trang 61 0 0 -
Báo cáo Phân tích, thiết kế phần mềm nhúng
4 trang 49 0 0 -
Bài giảng Kiểm thử phần mềm - Chương 2: Quy trình kiểm thử phần mềm
19 trang 47 0 0 -
Nhập môn kiểm thử phần mềm: Chương 2 - Trần Duy Hoàng
50 trang 45 0 0 -
Báo cáo Điện toán đám mây của Google và ứng dụng xây dựng hệ thống quản lý dịch vụ
9 trang 45 0 0 -
Bài tập lớn Kỹ thuật phần mềm: Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java
38 trang 43 0 0 -
Báo cáo Nghiên cứu các phương pháp tổng hợp tiếng Việt cho các hệ thống có tài nguyên hạn chế
4 trang 42 0 0 -
72 trang 41 0 0
-
Báo cáo Nghiên cứu đề xuất xây dựng mạng xã hội học tập tại Việt Nam
12 trang 41 0 0 -
Giáo trình Kiểm thử và đảm bảo chất lượng phần mềm: Phần 1
96 trang 40 0 0 -
Bài giảng Kiểm thử - Chương 6: Kiểm thử phần mềm
63 trang 38 0 0 -
Báo cáo Phát triển mẫu thiết kế phần mềm và ứng dụng
3 trang 38 0 0 -
Giáo trình Kiểm thử và đảm bảo chất lượng phần mềm: Phần 2
135 trang 37 0 0 -
Bài giảng Kiểm thử phần mềm - Phan Hồ Duy Phương
162 trang 36 0 0 -
Mẫu Thư xin việc vị trí chuyên viên Kiểm thử phần mềm
1 trang 35 0 0 -
5 trang 35 0 0
-
Báo cáo Tìm hiểu SVM trong nhận dạng chữ viết tay hạn chế
2 trang 34 0 0 -
Bài giảng Kiểm thử phần mềm: Bài 4
12 trang 34 0 0