Phương thức đo lường độ phủ mã viết bằng C/C++ (Get coverage

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 53 - 58)

method): nhận mau thử và thực thi chương trình để lấy kết quả

Chỉ tiết cách hoạt động và luồng hoạt động của mô hình sẽ được mô tả ở các phần tiếp.

46

Intial seeds Reinforcement reward

learning model

push to Get coverage method

seed picked

queue seed action sample

mutated Inpu

Sood quev| Seed selection >! Multi level samples C/C++ proxy > Target

Seed queue and schedule engine program

algorithm energy Coverageit |

info

Hình 3.1: Tổng quan mô hành CT Fuzz

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

cường

ệ mục này, chỳng tụi sẽ mụ tả mụ hỡnh học tăng cường được sử dụng để chọn2,

hành động biến đổi. Về tổng quát, mô hình học tăng cường của chúng tôi sẽ nhận nhệm chọn ra hành động biến đổi mang lại hiệu quả tốt nhất với đầu vào được chúng tôi cung cấp.

3.2.1. Mô hành hóa fuzzing thành quụ trành quyết định Markov

Trong phần này, chúng tôi mô hình hóa fuzzing thành quy trình quyết định Markov (MDP) bằng cách định nghĩa các trạng thái, hành động và phần thưởng

trong ngữ cảnh chọn hành động biến đổi trong fuzzing. Việc mô hình hóa này

lần đầu tiờn được trỡnh bày bởi nhúm tỏc giả Bửttinger trong [2]. Trong đú, việc

chọn hành động biến đổi tiếp theo cho đầu vào được xem như việc chọn một

nước đi tiếp theo trên bàn cờ vua.

Khi áp dụng học tăng cường vào trong cờ vua, có thể coi trạng thái của mô

hình học tăng cường là vị trí các quân trên bàn cờ, hành động là việc chọn ra

nước đi tiếp theo, và điểm thưởng là ưu thế có được sau khi thực hiện nước đi (các công cụ máy tính cờ vua có thuật toán để chấm điểm ưu thế dựa trên thế

trận ban cờ, chúng tôi sẽ không bàn chi tiết ở đây). Từ đó, các nhà nghiên cứu

có thể áp dụng các kĩ thuật học tăng cường để đào tạo mô hình tìm ra nước

đi tối ưu bằng cách chơi ván cờ rất nhiều lần và tích lũy kinh nghiệm (điểm thưởng). Một trong những ví dụ có thể kể đến là AlphaZero, được phát triển bởi DeepMind, sử dụng một kết hợp của học tăng cường và học sâu để tự động

chơi cờ vua. Nó từ nâng cao năng lực cờ vua bằng cách chơi hàng ngàn trận cờ

với chính nó để tich lũy kinh nghiệm và đã trở thành một trong những công cụ

đánh cờ mạnh nhất thế giới hiện tại.

Từ đó ta có thể áp dụng tương tự đối với việc fuzzing, khi này, đầu vào thử

nghiệm cũng sẽ giống như vị trí các quân cờ trở thành đầu vào của mô hình

học tăng cường. Việc chọn hành động biến đổi sẽ giống như chọn nước đi tiếp theo trên bàn cờ. Và độ phủ mã sẽ tương tự như điểm ưu thế trên bàn cờ và trở thành điểm thưởng cho mô hình học tăng cường. Từ đó, ta có thể đào tạo

mô hình học tăng cường chọn ra hành động biến đổi tốt nhất theo từng đầu vào dựa theo kinh nghiệm đã được tích lũy. Việc chọn cơ chế điểm thưởng không hoàn toàn dựa trên độ phủ mã mà có thể dựa trên các yêu tố khác dựa vào việc chúng ta mong muốn cải thiện điều gì trong mô hình (có thể là thời gian chạy,

độ dài các mẫu thử, ... hoặc kết hợp).

Dựa trên ý tưởng tương tự, chúng tôi mô hình hóa fuzzing thành vấn đề quyết định Markov và sử dụng số lượng độ phủ mã mới được tìm thấy làm điểm thưởng, với mong muốn mô hình sẽ hướng đến việc tìm kiếm các phần mã mới trong chương trình. Chi tiết định nghĩa các trạng thái, hành động và phần thưởng sẽ được chúng tôi nêu rõ ở các mục tiếp theo.

3.2.2. Trang thái (state)

Với không gian trang thái, chúng tôi chỉ định tất cả đầu vào thử nghiệm dưới dạng chuỗi byte với chiều dài tối đa là 0x10000 byte làm trạng thái (hình 3.2), các byte từ đầu vào sẽ được quy thành mảng với giá trị các phần tử nằm trong khoảng (0, 255]. Việc chọn trạng thái như vậy làm giới han độ dài của đầu vào

48

thử nghiệm tôi đa là 0x10000 byte và cũng là một hạn chế nhưng chúng tôi cân

nhắc dánh đổi vì trạng thái quá lớn sẽ làm chậm quá trình xử lí của mô hình học tăng cường. Với độ dài byte ban đầu, sau khi chọn hành động biến đổi, các

giá trị đầu vào sẽ tùy theo hành động mà được thêm byte, cắt bớt byte hoặc các byte bị đảo vị trí (trạng thái mới). Từ đó, chúng tôi muốn mô hình fuzzing

chọn hành động chỉ dựa trên thông tin về đầu vào được biến đổi và chọn hành động biến đổi tốt nhất dựa trên kinh nghiệm.

byte to byte mapping

state array (max 0x10000 byte)

Hình 3.2: Chuyển từ đầu uào thành trạng thái cho mô hành hoc tăng cường

3.2.3. Hành động (action)

Trong học tăng cường, các hành động được thực hiện để tương tác với một môi trường và đạt được mục tiêu cụ thể. Trong ngữ cảnh fuzzing thì các hành

49

Bảng 3.1: Các hành động biến đổi thuộc không gian hành động

Hành động M6 ta

Mutate_ EraseBytes Xóa byte

Mutate_ InsertByte Chén byte

Mutate_ InsertRepeatedBytes | Chén một chuỗi byte

Mutate_ ChangeByte Thay đổi byte

Mutate_ ChangeBit Thay đổi một bit của một byte

Thay đổi thứ tự sắp xếp của byte trong

một khoảng

Mutate_ ChangeASCIIInteger | Thay đổi số nguyên

Mutate_ ChangeBinaryInteger | Thay đổi số nguyên nhị phân

Mutate_ CopyPart Thực hiện sao chép và chèn byte

Mutate_ShuffleBytes

động chính là những phép biến đổi trên đầu vào thử nghiệm để đưa vào bộ kiểm thử. Mô hình học tăng cường của chúng tôi bao gồm 9 hành động biến đổi trên

các byte của đầu vào thử nghiệm, được lấy ý tưởng từ libFuzzer do tính chất

độc lập và dễ triển khai so với các trình kiểm thử khác. Các hành động được

định nghĩa chỉ tiết trong bảng 3.1.

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

Một trong những khâu quan trọng nhất của việc thiết kế mô hình học tăng

cường là thiết kế cơ chế điểm thưởng. Cơ chế điểm thưởng sẽ ảnh hưởng đến hiệu suất và kết quả của mô hình học tăng cường. Do đó cơ chế điểm thưởng

đặt ra cần phải hợp lí và hướng đến các mục tiêu mong muốn mô hình. Trong ngữ cảnh của mô hình chúng tôi khi thực hiện fuzzing, chúng tôi mong muốn

mô hình mình sẽ gia tăng độ phủ mã hết sức có thể, hướng đến việc tìm ra các

phần mã chưa được chạm tới trong chương trình. Vì thế, số lượng độ phủ mã

mới được tìm thấy sẽ là tiêu chí trong cơ chế điểm thưởng của chúng tôi. Cơ chế điểm thưởng sẽ là:

total _ new _ coverage reward =

energy

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 53 - 58)

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

(93 trang)