Thảo luận về kết qua

Một phần của tài liệu 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 (Trang 85 - 89)

Q'=SEED_SELECTION_AND_ SCHEDULE(Q)

CHƯƠNG 4. THÍ NGHIỆM VÀ ĐÁNH GIÁ

4.3. Thảo luận về kết qua

Trước khi trả lời các câu hồi được đặt ra trước khi thí nghiệm, ta cần có một

vài nhận xét tổng quan về kết quả thí nghiệm như sau:

¢ 6 tiếng là khoảng thời gian còn quá ngắn để so sánh thực sự hiệu quả của

mô hình fuzzing trong thực tế, một dự án thực tế fuzzing có thể kéo dài

hàng tuần, và sử nhiều máy khác nhau, với tốc độ cao hơn rất nhiều, tuy

nhiên nó cũng đủ dài để có sự chênh lệch giữa các mô hình và việc chạy 3 lần mỗi ứng dụng giúp cho loại bỏ phần nào yếu tố may mắn trong đó

e Nhiều ứng dụng đạt được các giá trị bằng nhau ở cả 4 mô hình và không

tăng nhiều (từ 200000 qua 6 tiếng), có thể do đầu vào ban đầu sử dụng

chưa quá hiệu quả

e Một số giá trị khi so sánh có sự chênh lệch (về hiệu) khá thấp tuy nhiên do kết quả ở mô hình được so sánh quá thấp nên tỉ lệ gia tăng tính ra rất cao, điều này phần nào làm ảnh hưởng đến con số trung bình cuối cùng

78

Dựa vào các kết quả trên, chúng ta đã có thể trả lời các câu hỏi đặt ra:

Câu hỏi 1: Độ hiệu quả của mô hình so với mô hình fuzzing sử dụng học tăng cường cũ (rlfuzz)?

Dựa vào kết quả thực thi, ở cả 2 ngữ cảnh là 6 tiếng và 200000 lần thử, thì

mô hình CTFuzz đều cho hiệu quả tốt hơn so với mô hình rlfuzz, ở cả 3 yếu

tố được xét là độ phủ mã, số lượng đường dẫn và tốc độ thực thi. Độ phủ mã CTFuzz tìm được gia tăng khoảng 80% so với rlfuzz, và cực kì ổn định, không thua thiệt ở bất cứ ứng dụng thử nghiệm nào (trường hợp thấp nhất là ngang bằng về độ phủ mã ở ứng dụng strings, sau 200000 lần thử). Về số lượng đường dẫn tìm được, CTFuzz hơn rlfuzz lần lượt là 411.8% ở 200000 lần thử đầu và 658.6% sau 6 tiếng. Về tốc độ thực hiện, CTFuzz nhanh hơn khoảng 160% ở cả

2 ngữ cảnh. Từ các thông số trên, ta có thể thấy rằng CTFuzz đạt được hiệu quả tốt hơn rlfuzz, ở cả 2 tính khai thác và khám phá của mô hình, cả về mặt

tổng quan sau 6 tiếng thử nghiệm hay về mặt hiệu suất.

Câu hỏi 2: Hiệu quả của mô hình so với 1 công cụ fuzzing hiện đại

là như thế nào (AFLplusplus)?

Dầu tiên, dựa vào kết quả chạy sau 6 tiếng, đây là ngữ cảnh đánh giá bình thường của một mô hình fuzzing. Về độ phủ mã, CTFuzz tìm được it hơn 5.3%

số cạnh mà AFLplusplus tìm được, về số đường dẫn, CTFuzz tìm được ít hơn

AFLplusplus 39.3%. Điều này cho thấy tổng quan CTFuzz đạt được hiệu quả

kém hơn so với AFLplusplus trong ngữ cảnh so sánh thông thường. Tuy nhiên

do tốc độ của CTFuzz thấp hơn AFLplusplus khoảng 80%, do đó về hiệu suất giữa các lần thử, CTFuzz mang lại hiệu suất tốt hơn. Sau 200000 lần thử đầu, CTEuzz đạt được độ phủ mã nhỉnh hơn một chút so với AFLplusplus là 3%, về số đường dẫn thực thi, con số này là 3.9%. Từ đó ta có thể nhận xét, AFLplusplus đạt được hiệu quả tốt hơn trong thực tế khi fuzzing, con CTFuzz mang lại hiệu suất tốt qua từng lần thử.

Câu hỏi 3: Mức độ đóng góp của mô hình học tăng cường được sử dụng trong toàn bộ mô hình?

79

Dé trả lời câu hỏi này, ta nhìn đến thông số so sánh giữa CTFuzz và cơ chế

ngẫu nhiên. 6 cả 3 thông về độ phủ mã, số đường dẫn tìm được và tốc độ thực

thi, kết quả ở cả 2 ngữ cảnh khá giống nhau. Về độ phủ mã tim được, CTFuzz nhỉnh hơn đổi chút với 7.5% sau 6 tiếng và 7.3% sau 200000 lần thử đầu. Tuy nhiên ta có thể thấy phần lớn con số này có được nhờ sự chênh lệch của ứng

dụng nm, còn trên đa số các ứng dụng còn lại, chênh lệch lại không thật sự quá lớn. Về số đường dẫn tìm được, CTFuzz tim được nhiều hơn cơ chế ngẫu nhiên 19.2% sau 6 tiếng và 27.2% sau 200000 lần thử, một sự gia tăng ở mức tốt. Về tốc độ chạy, CTEuzz chạy chậm hơn cơ chế ngẫu nhiên khoảng 0.5%. Dựa vào

đó, ta có thể kết luận, việc áp dụng học tăng cường vào mô hình fuzzing làm

mô hình tăng số đường dẫn tìm được nhiều hơn, tuy nhiên độ phủ mã tìm được không có sự chênh lệch nhiều chứng tổ mô hình học tăng cường chưa thực sự hiệu quả, tốc độ để đánh đổi cũng không đáng kể.

Câu hỏi 4: Nếu cải thiện được sự chênh lệch tốc độ giữa các ngôn ngữ, hiệu quả của mô hình sẽ như thế nào?

So sánh tốc độ chạy của 4 mô hình, ta có thể thấy rõ ràng sự chênh lệch rất

lớn giữa AFLplusplus viết bằng và các mô hình còn lại sử dụng ngôn ngữ python, tốc độ chênh lệch lên tới hơn 6 đến 10 lần. Tuy nhiên sự chênh lệch giữa CTFuzz và cơ chế ngẫu nhiên lại không nhiều, chỉ khoảng 0.7%. Điều đó cho thấy sự chênh lệch tốc độ này đến nhiều từ phần mô hình viết bằng python, không đến từ các mô hình học tăng cường. Nếu chỉ tách riêng theo hiệu suất từng lần thử, CTFuzz đạt hiệu quả nhỉnh hơn đôi chút với AFLplusplus. Vì vậy nếu như mô hình của chúng tôi có thể cải thiện được tốc độ chạy, trong khi

đó hiệu suất vẫn được giữ nguyên, thì hiệu quả của nó là rất đáng mong đợi,

và có tiềm năng sử dụng trong thực tế. Vậy có cách nào để cải thiện tốc độ của CTFuzz? Theo tìm hiểu của chúng tôi, ngôn ngữ Rust rất phù hợp cho việc này. Rust là ngôn ngữ được thiết kế hướng đến việc vừa có sự tiện lợi, đễ sử dụng như các ngôn ngữ bậc cao, vừa có tốc độ chạy gần với các ngôn ngữ bậc trung như C. Chỉ tính theo tiêu chí về tốc độ, tốc độ chạy của Rust có thể gần

80

bằng với C trong nhiều trường hợp. Thực tế đã có rất nhiều nghiên cứu sử dụng Rust để triển khai cho các mô hình học máy nói chung và học tăng cường nói riêng (như trong [10], nhóm tác giả Toyoshima sử dụng Rust để triển khai mạng deep-q-network nhằm mô phỏng kết quả của các sự kiện trong môi trường mạng cảm biến không dây). Thư viện gym và tensorflow dùng để triển khai mô hình

của chúng tôi cũng đã có phiên bản sử dụng cho ngôn ngữ Rust. Vì vậy, việc

triển khai Rust là hoàn toàn khả thi, có thể giúp tăng tốc tốc độ của mô hình,

dù không thể bằng với C nhưng có thể cải thiện rất nhiều, vì vậy nó rất đáng

để thứ nghiệm.

Tóm lại, kết quả đạt được trong quá trình thực thi phần nào phản ánh được các kì vọng của chúng tôi cho mô hình. Mô hình chúng tôi có tốc độ chạy cao hơn, đạt được độ phủ mã cao và tìm được số đường đi cao hơn so với mô hình rlfuzz ở cả 2 ngữ cảnh là sau 6 tiếng và sau 200000 lần thử. Mô hình chúng tôi chạy chậm hơn cơ chế ngẫu nhiên một khoảng thời gian nhỏ, nhưng đồng thời cũng làm tăng độ phủ mã và số lượng đường đi của mô hình lên một chút, chứng

tỏ mô hình học tăng cường có hiệu quả tốt hơn thuật toán ngẫu nhiên, dù không quá nhiều. Về công cụ fuzzing hiện đại như AFLplusplus, mô hình chúng tôi đạt hiệu quả thấp hơn các thông số từ tốc độ chạy, độ phủ mã và số lượng đường

đi, tuy nhiên nếu so sánh về hiệu quả trên từng lần thực hiện, CTFuzz đạt được hiệu quả nhỉnh hơn AFLplusplus, do đó đưa ra tiềm năng sử dụng nếu có thể cải thiện được tốc độ của mô hình.

Do vấn đề về thời gian, chúng tôi chưa có những so sánh chỉ tiết và đánh giá hiệu suất giữa các mô hình học tăng cường khác nhau, và các hằng số sử dụng

trong các thuật toán cũng chưa được đánh giá kĩ càng, do đó, các lựa chọn có

thể chưa mang đến sự tối uu và hiệu quả nhất cho quá trình fuzzing. Ngoài ra,

có khá nhiều ứng dụng đạt trạng thái ngưng động về độ phủ mã và số lượng đường dẫn thực thi được tìm thấy cho thấy có thể đầu vào ban đầu chúng tôi sử dụng không hiệu quả đối với ứng dụng đó, hoặc là chưa đủ thời gian thử nghiệm

để mô hình có thể tìm thấy một nhánh đi mới.

81

Một phần của tài liệu 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 (Trang 85 - 89)

Tải bản đầy đủ (PDF)

(93 trang)