Phương Pháp Fuzzing Hướng Dẫn Độ Phủ Để Phát Hiện Lỗ Hổng Phần Mềm Sử Dụng Học Tăng Cường

Khóa luận trình bày phương pháp fuzzing có chỉ dẫn độ phủ trong phát hiện lỗ hổng phần mềm dựa trên học tăng cường, nâng cao an toàn thông tin.

Người đăng

Ẩn danh

Thể loại

Khóa luận

2023

93
3
0

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. CHƯƠNG 1: TONG QUAN

1.1. Giới thiệu van đề

1.2. Giới thiệu những nghiên cứu liên quan

1.3. Các kĩ thuật cải thiện fuzzing không sử dụng học máy

1.4. Sự kết hợp giữa học máy vào fuzzing

1.5. Tính ứng dụng

1.6. Những thách thức

1.7. Mục tiêu, đối tượng, và phạm vi nghiên cứu

1.7.1. Mục tiêu nghiên cứu

1.7.2. Đối tượng nghiên cứu

1.7.3. Phạm vi nghiên cứu

1.7.4. Cấu trúc khóa luận tốt nghiệp

1.8. Các phương pháp tìm kiếm lỗ hổng phần mềm

1.8.1. Cấu trúc tệp thực thi ELF (Executable)

1.8.2. Các kĩ thuật lấy độ phủ mã

1.8.3. Các thông số so sánh của fuzzing

1.8.4. Shared memory và Semaphore

1.9. Mô hình học tăng cường

1.9.1. Quy trình quyết định Markov (Markov Decision Process - MDP)

1.9.2. Tổng quan mô hình học tăng cường

1.9.3. Vấn đề khai thác và khám phá trong học tăng cường

1.9.4. Hàm giá trị - hành động (Q-value Function)

1.9.5. Mô hình học sâu tăng cường

1.9.6. Các thuật toán học tăng cường

1.10. Các thư viện sử dụng

2. MO HÌNH FUZZING SỬ DỤNG HỌC TĂNG CƯỜNG

2.1. Tổng quan mô hình

2.2. Phương pháp biến đổi đầu vào dựa trên học tăng cường

2.2.1. Mô hình hóa fuzzing thành quy trình quyết định Markov

2.2.2. Phần thưởng (reward)

2.2.3. Mô hình deep-q-learning

2.3. Thuật toán chọn và lập lịch đầu vào

2.3.1. Thuật toán biến đổi đầu vào nhiều cấp

2.3.2. Cơ chế chống lãng phí

2.4. Phương pháp thu thập độ phủ mã từ chương trình

2.5. Luồng hoạt động của chương trình

3. THÍ NGHIỆM VÀ ĐÁNH GIÁ

3.1. Thiết lập thí nghiệm

3.1.1. Mục tiêu của thí nghiệm

3.1.2. Cài đặt các mô hình so sánh

3.1.3. Các ứng dụng thử nghiệm

3.1.4. Các tiêu chí đánh giá

3.1.5. Thiết lập môi trường thử nghiệm

3.2. Kết quả thí nghiệm

3.2.1. Kết quả so sánh đánh giá sau 6 tiếng chạy

3.2.2. Kết quả so sánh đánh giá sau 200000 lần thử

3.2.3. Thảo luận về kết quả

4. CHƯƠNG 5: KẾT LUẬN

4.1. Kết luận

4.2. Hướng phát triển

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Phương Pháp Fuzzing Hướng Dẫn Độ Phủ

Fuzzing là một kỹ thuật kiểm thử phần mềm hiệu quả, giúp phát hiện các lỗ hổng bảo mật. Phương pháp này tự động tạo ra hoặc biến đổi các đầu vào để kiểm tra tính ổn định của phần mềm. Đặc biệt, fuzzing hướng dẫn độ phủ (coverage-guided fuzzing) đã trở thành một trong những phương pháp phổ biến nhất trong lĩnh vực này. Bằng cách sử dụng độ phủ mã, fuzzing có thể tối ưu hóa quá trình tìm kiếm lỗi, từ đó nâng cao hiệu quả phát hiện lỗ hổng phần mềm.

1.1. Fuzzing Là Gì Khái Niệm Cơ Bản

Fuzzing là kỹ thuật kiểm thử phần mềm bằng cách cung cấp các đầu vào ngẫu nhiên hoặc không hợp lệ cho chương trình. Mục tiêu là theo dõi hành vi của phần mềm và phát hiện lỗi. Kỹ thuật này đã được áp dụng rộng rãi trong bảo mật phần mềm.

1.2. Độ Phủ Trong Fuzzing Tại Sao Quan Trọng

Độ phủ mã là một chỉ số quan trọng trong fuzzing, giúp đánh giá mức độ mà các đoạn mã trong chương trình đã được kiểm tra. Việc tối ưu hóa độ phủ mã có thể dẫn đến việc phát hiện nhiều lỗ hổng hơn, từ đó nâng cao tính bảo mật của phần mềm.

II. Thách Thức Trong Việc Phát Hiện Lỗ Hổng Phần Mềm

Mặc dù fuzzing là một phương pháp mạnh mẽ, nhưng vẫn tồn tại nhiều thách thức trong việc phát hiện lỗ hổng phần mềm. Các vấn đề như thời gian chạy chậm, yêu cầu tài nguyên cao và sự mất cân bằng giữa tính khai thác và khám phá là những khó khăn chính mà các nhà nghiên cứu phải đối mặt.

2.1. Thời Gian Chạy Chậm Nguyên Nhân và Giải Pháp

Thời gian chạy chậm có thể do nhiều yếu tố, bao gồm độ phức tạp của chương trình và số lượng đầu vào cần kiểm tra. Các giải pháp như tối ưu hóa thuật toán chọn đầu vào có thể giúp cải thiện tình trạng này.

2.2. Mất Cân Bằng Giữa Khai Thác và Khám Phá

Mất cân bằng giữa khai thác và khám phá có thể dẫn đến việc bỏ lỡ các lỗ hổng quan trọng. Cần có các phương pháp để đảm bảo rằng cả hai yếu tố này đều được tối ưu hóa trong quá trình fuzzing.

III. Phương Pháp Fuzzing Hướng Dẫn Độ Phủ Sử Dụng Học Tăng Cường

Phương pháp fuzzing hướng dẫn độ phủ sử dụng học tăng cường đã mở ra một hướng đi mới trong việc phát hiện lỗ hổng phần mềm. Bằng cách áp dụng các thuật toán học máy, mô hình này có thể tối ưu hóa quá trình chọn và biến đổi đầu vào, từ đó nâng cao hiệu quả phát hiện lỗi.

3.1. Mô Hình Học Tăng Cường Trong Fuzzing

Mô hình học tăng cường giúp cải thiện quá trình fuzzing bằng cách dự đoán các hành động biến đổi đầu vào mang lại độ phủ cao nhất. Điều này giúp giảm số lượng thử nghiệm cần thiết để phát hiện lỗi.

3.2. Các Thuật Toán Học Tăng Cường Được Sử Dụng

Các thuật toán như Deep Q-Learning và Proximal Policy Optimization đã được áp dụng để tối ưu hóa quá trình fuzzing. Những thuật toán này giúp cân bằng giữa khai thác và khám phá, từ đó nâng cao hiệu quả phát hiện lỗ hổng.

IV. Ứng Dụng Thực Tiễn Của Phương Pháp Fuzzing Hướng Dẫn Độ Phủ

Phương pháp fuzzing hướng dẫn độ phủ đã được áp dụng thành công trong nhiều lĩnh vực khác nhau, từ phát triển phần mềm đến bảo mật mạng. Các nghiên cứu cho thấy rằng mô hình này có thể phát hiện nhiều lỗ hổng hơn so với các phương pháp truyền thống.

4.1. Kết Quả Nghiên Cứu So Sánh Với Các Công Cụ Khác

Nghiên cứu cho thấy mô hình fuzzing hướng dẫn độ phủ có hiệu quả cao hơn so với các công cụ fuzzing hiện đại như AFLplusplus. Điều này chứng tỏ rằng việc áp dụng học tăng cường có thể mang lại những cải tiến đáng kể.

4.2. Ứng Dụng Trong Thực Tế Các Tình Huống Cụ Thể

Mô hình này đã được áp dụng trong nhiều tình huống thực tế, từ kiểm thử phần mềm đến bảo mật hệ thống. Các kết quả cho thấy rằng nó có thể phát hiện lỗ hổng nhanh chóng và hiệu quả.

V. Kết Luận và Hướng Phát Triển Tương Lai

Phương pháp fuzzing hướng dẫn độ phủ sử dụng học tăng cường đã chứng minh được tính hiệu quả trong việc phát hiện lỗ hổng phần mềm. Tuy nhiên, vẫn còn nhiều thách thức cần được giải quyết trong tương lai để nâng cao hơn nữa hiệu quả của phương pháp này.

5.1. Hướng Phát Triển Mới Trong Nghiên Cứu

Các nghiên cứu trong tương lai có thể tập trung vào việc cải thiện thuật toán học tăng cường, nhằm tối ưu hóa hơn nữa quá trình fuzzing. Điều này có thể giúp phát hiện lỗ hổng nhanh chóng và hiệu quả hơn.

5.2. Tương Lai Của Fuzzing Trong Bảo Mật Phần Mềm

Fuzzing sẽ tiếp tục đóng vai trò quan trọng trong bảo mật phần mềm. Việc kết hợp với các công nghệ mới như trí tuệ nhân tạo sẽ mở ra nhiều cơ hội mới trong việc phát hiện và khắc phục lỗ hổng.

10/07/2025
Khóa luận tốt nghiệp an toàn thông tin phương pháp fuzzing có chỉ dẫn độ phủ trong phát hiện lỗ hổng phần mềm dựa trên học tăng cường

Trích đoạn nội dung tài liệu

CHƯƠNG 1. TONG QUAN 11 Giới thiệu van đề 2.2 Giới thiệu những nghiên cứu liên quan.2_ Các kĩ thuật cải thiện fuzzing không sử dụng học máy. Sự kết hợp giữa học máy vào fuzzing.3 Tính ứng dụng.4 hững thách thức .5 Mục tiêu, đối tượng, và phạm vi nghiên cứu.1 Muc tiêu nghiên cứu .2 Dối tượng nghiên ctu .3 Phạm vi nghiên đỨU .4 Cau trúc khóa luận tốt nghiệp .1 Các phương pháp tìm kiếm lỗ hổng phần mềm .1 Cấu trúc tệp thực thi ELF (Executable).4 Các kĩ thuật lấy độ phủ mã .5 Các thông số so sánh của fuzzing.6 Shared memory và Semaphore.3 Mô hình học tăng cường .1 Quy trình quyết định Markov (Markov Decision Process - MDP).2 Tổng quan mô hình học tăng cường .3 Van đề khai thác và khám phá trong hoc tăng cường 2.4 Hàm giá trị - hành động (Q-value Function) .6 Mô hình học sâu tăng cường .7 Các thuật toán học tăng cường.4 Các thư viện sử dụng. fe ee eee 243 Gym.

MO HÌNH FUZZING SỬ DUNG HỌC TANG CUGNG 3.1 Tổng quan mô hinh.2 Phương pháp biến đổi đầu vào dựa trên học tăng cường.1 Mô hình hóa fuzzing thành quy trình quyết định Markov .4 Phần thưởng (reward).5 Mô hình deep-q-learnng.3 Thuật toán chọn va lập lịch đầu vào .4 Thuật toán biến đổi đầu vào nhiều cấp và chống lãng phi.1 Thuật toán biến đổi đầu vào nhiều cấp .2 Cơ chế chống lãng phí .5 Phương pháp thu thập độ phủ mã từ chương trình.6 Luồng hoạt động của chương trình. THÍ NGHIỆM VÀ ĐÁNH GIÁ 63 4.1 Thiết lap thinghiém .1 Mục tiêu của thí nghệm.2 Cài đặt các mô hình sosánh. Các ứng dung thử nghiệm .4 Các tiêu chí đánh gié.5 Thiết lập môi trường thử nghiệm.2 Kết quả thí nghiệm .1 Kết quả so sánh đánh giá sau 6 tiếng chạy .2 Kết quả so sánh đánh giá sau 200000 lần thử. Thảo luận về kết quả.

ee 77 CHƯƠNG 5. KẾT LUẬN 81 51 Kết lui".2 Hướng phát triển. 82 TÀI LIỆU THAM KHẢO 84 DANH MỤC CAC KÝ HIỆU, CÁC CHỮ VIET TAT 5 Khéng gian các trang thái mà tác tử St Trang thái môi trường tại lượt t A Tap các hành động tác tử đị Hành động tại lượt thứ t P Ham chuyển R Hàm phần thưởng T Chính sách của Mô hình học tăng cường w Trong số cho phần thưởng * Chiết khấu cho phần thưởng vr Chính sách tối đa hóa kì vọng Q Hàm giá trị cho trạng thái - hành động 6 Trọng số cho mạng nơ-ron a Ti lệ học L(0) Hàm mat mát AFL American Fuzzy Lop SGD Stochastic Gradient Descent MDP Markov Decision Process CEM Cross-Entropy Method DQN Deep Q Network SARSA State-action-reward-state—action DPG Deep Deterministic Policy Gradient PO Proximal Policy Optimization R. Enhancing Rate PS Virtual Private Server vi DANH MUC CAC HINH VE inh 1.1 Các bước trong quá trình fuzzing với độ phủ mã.1 Cấu trúc tệp thực thi định dạng ELF_.

Hàm, khối, cạnh trong hợp ngữ, phần 1 chứa mã nguồn chương trình viết bằng C, phần 2 chứa hợp ngữ của chương trình 21 inh 2.3 Chia sé vùng nhớ giữa 2 tiến trình .4 Mô hình hoc tăng cường.5 Thuật toán Q-Learning .6 Q-Learning và Deep-Q-Learning.7 Cấu trúc một Deep Q Network .1 Tổng quan mô hình CTEu⁄z.2 Chuyển từ đầu vào thành trang thái cho mô hình học tăng ình 3.3 Cấu trúc mô hình Deep Q Learning .4 Cách AFLplusplus tương tác với forkserver để lấy độ phủ mã 59 inh 3.5 Cách CTFuzz tương tác với forkserver để lấy độ phủ mã. 59 vii DANH MUC CAC BANG BIEU Bảng 2.1 Một số thuật toán hoc tăng cường .1 Các hành động biến đổi thuộc không gian hành động .1 Thông tin các ứng dụng thử nghiệm. So sánh độ phủ mã giữa các mô hình sau 6 tiếng chạy Bảng 4.3 So sánh số lượng đường dẫn duy nhất tìm được sau 6 tiếng Bảng 4.5 So sánh độ phủ mã giữa các mô hình trong 200000 lần thử đầu. ay we WM —ìì.6 So sánh số lượng đường dẫn duy nhất tìm được trong 200000 lànthiữ: S5 /@Ó .7 So sánh tốc độ chạy trong 200000 lần thử đầu.

TÓM TẮT KHÓA LUẬN Tính cấp thiết của đề tài nghiên cứu: Fuzzing là một kỹ thuật kiểm thứ phần mềm phổ biến và hiệu quả, bằng cách tự động tạo ra hoặc biến đổi các đầu vào để kiểm tra tính ổn định và các lỗi của hệ thống phần mềm. Fuzzing đã được sử dung rộng rãi và liên tục được cải tiến bởi các nhà nghiên cứu và chuyên gia trong lĩnh vực bảo mật. Mục tiêu của fuzzing là tìm ra các lỗ hổng tiềm ẩn trong phần mềm bằng cách cung cấp các đầu vào không mong đợi và không hợp lệ cho chương trình mục tiêu, theo đõi hành vi của nó và xác định các lỗi, sự cố hoặc kết quả không mong muốn. Gần đây với sự phát triển bùng no của trí tuệ nhân tạo, các nhà nghiên cứu cũng đem các thuật toán máy học như học tăng cường vào nhằm cải thiện quá trình fuzzing.

Các nghiên cứu trước đây cho thay học tăng cường có thé giúp cải thiện hiệu quả fuzzing bằng cách giúp cho mô hình chọn và ưu tiên thực hiện các hành động biến đổi mang lại độ phủ cao hơn, từ đó giảm số lượng thử để tìm được các lỗi xuống. Tuy nhiên các mô hình fuzzing kết hợp học tăng cường đang gặp một số hạn chế nhất định, trong đó có việc mat cân bằng giữa tính khai thác (exploit) và tính khám phá (explore) của mô hình. Sau khi nghiên cứu, chúng tôi đề xuất một mô hình fuzzing có chỉ dẫn độ phủ sử dụng học tăng cường có khả năng đảm bảo sự cân bằng giữa tính khai thác và khám phá. Mô hình đề xuất có thể hoạt động hiệu quả trên nhiều nền tảng, kiến trúc khác nhau và không yêu cầu mã nguồn để thực hiện fuzzing.

Ngoài ra, chúng tôi cũng cung cấp những so sánh và một cái nhìn khách quan về hiệu quả của mô hình so với các công cụ fuzzing hiện đại. TONG QUAN Chương này giới thiệu về van đề và các nghiên cứu liên quan. Đồng thời, trong chương này chúng tôi cũng trình bày phạm vi và cấu trúc của Khóa luận. Giới thiệu van dé Trong những năm gần day, sự phát triển mạnh mẽ của máy tính và công nghệ đã trở thành một phần không thể thiếu trong hầu hết các hoạt động của con người.

Tuy nhiên, điều này cũng có nghĩa là một lỗ hổng phần mềm trong các ứng dụng công nghệ mang lại những hệ quả rất đáng kể. Những lỗ hổng này khi xảy ra có thể gây ra những thiệt hại nghiêm trọng như mất tiền bạc, lộ thông tin cá nhân, và nhiều hệ quả khác. Các lĩnh vực như điều khiển công nghiệp, nhà thông minh, và thành phố thong minh đặc biệt đối điện với những rủi ro lớn hơn rất nhiều. Chính vì vậy, việc kiểm thử và nâng cao bảo mật phần mềm đã trở thành một vấn đề được quan tâm và cải thiện ngày càng nhiều.

Trong số các kỹ thuật phát hiện lỗ hổng phần mềm, fuzzing là một trong những phương pháp phổ biến, tiện lợi và hiệu quả nhất. Mục tiêu của fuzzing là tìm ra các lỗ hong tiềm an trong phần mềm bằng cách cung cấp các đầu vào không mong đợi và không hợp lệ cho chương trình mục tiêu, từ đó theo đõi hành vi và xác định các lỗi, sự cố hoặc kết quả không mong muốn. Một trong những kĩ thuật fuzzing phổ biến nhất đó la fuzzing hộp xám (grey-box) với độ phủ mã (coverage). Kĩ thuật fuzzing này yêu cầu cần có tệp thực thi của ứng dụng và chạy được chúng trên hệ thống dùng dé fuzz.

Kĩ thuật này phổ biến bởi nó không yêu cầu mã nguồn của ứng dụng (phù hợp cho các phần mềm mã nguồn đóng) và đạt được hiệu quả cao khi kết hợp các thông tin về độ phủ mã có được khi chạy chương trình. Khi này 3 các công cụ fuzzing sẽ chạy chương trình với các đầu vào thử nghiệm, sử dụng các kĩ thuật đặc biệt để lấy thông tin độ phủ mã từ chương trình và dùng nó để đánh giá tiêu chí cho các đầu vào thử nghiệm nhằm tối ưu hóa hiệu quả fuzzing. Gần đây, các kĩ thuật học máy như học tăng cường cũng được nghiên cứu và áp dụng vào fuzzing. Dựa vào đặc điểm của nó, học tăng cường thường được các nhà nghiên cứu chọn để làm 2 việc chính trong quá trình fuzzing: học để dự oán hành động biến đổi nào dựa trên đầu vào sẽ cho độ phủ mã cao nhất và ùng để lập lịch, phân bổ số lượng thử nghiệm cho từng đầu vào.

Các nghiên cứu đã cho thấy các mô hình fuzzing kết hợp học tăng cường mang lại hiệu quả tốt trong cải thiện fuzzing, tuy nhiên vẫn còn nhiều hạn chế, trong đó nổi bật là thời gian chạy chậm, yêu cầu nhiều tài nguyên và mất cân bằng giữa tính khai thác và khám phá. Một trong những vấn đề lớn của các kĩ thuật fuzzing áp dụng học tăng cường ó là sự cân bằng giữa tính khai thác (exploit) và tính khám phá (explore), các mô hình này thường có tính khai thác vượt trội hơn rất nhiều so với tính khám phá. Tính khai thác (exploit) và tính khám pha (explore) là hai khái niệm quan trọng trong quá trình fuzzing. Tính khai thác đề cập đến việc các mẫu thử có khả năng đi thật sâu và chạm đến những đoạn mã nằm rất sâu bên trong chương trình, còn tính khám phá đề cập đến việc các mẫu thử có mức độ bao phủ càng nhiều nhánh càng tốt.

Một mô hình fuzz có tính khám phá quá cao sẽ không tạo đ ược các mẫu thử đủ sâu đến các phần đoạn mã bị lỗi của chương trình, trong khi đó một hình fuzz có tính khai thác quá cao thường sẽ chỉ tập trung đi sâu nhất có thể ở một nhánh mà bỏ qua khả năng lỗi nằm ở các nhánh khác trong chương trình. Trong nghiên cứu này của chúng tôi, chúng tôi đề xuất một mô hình fuzzing có chỉ din độ phủ kết hợp hoc tăng cường cho fuzzing hộp xám có sự cải thiện về các điểm yếu trước đó. Mô hình sử dụng thuật toán học tăng cường là deeq- q-learning nhằm giúp cho mô hình dự đoán và chọn hành động biến đổi đầu vào mang lại hiệu quả cao nhất, dùng độ phủ mã của chương trình là điểm thưởng. 4 Kết hợp với nó là 2 thuật toán chọn đầu vào và lập lịch đầu vào đơn giản giúp cân bằng tính khai thác và k hám phá của chương trình.

Đồng thời chúng tôi cũng triển khai mô hình biến ổi đầu vào nhiều cấp có thể kết hợp với học tăng cường giúp cho mô hình có thể tạo đột biến với một chuỗi nhiều hành động.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ