Bang 4.2: Tổng quan các trình fuzzing được sử dụng trong quá trình thực
4.4. Kết quả quá trình thực nghiệm
Ở phần này chúng tôi trình bày kết quả thực nghiệm Dr. CEuzz sau khi áp
dụng mô hình học tăng cường đã được huấn luyện, thông qua các tiêu chí được
nhắc đến ở mục 4.2.
4.4.1. Số lượng nhénh đã được thực thi
Số lượng nhánh đã thực thi là tiêu chí chính để đánh giá khả năng của Dr. CFuzz. Mục tiêu của Dr. CFuzz là có thể tạo ra thêm các đầu vào có khả năng thỏa mãn các nhánh điều kiện phức tạp giúp trình fuzzing có thể gia tăng độ
phủ cạnh. Số lượng nhánh được thực thi càng cao, chứng tỏ mô hình concolic
execution hoc tăng cường sâu càng hiệu quả trong việc tạo ra các đầu vào có khả năng bao phủ được nhiều đoạn mã. Số lượng nhánh được thực thi trong quá
trình fuzzing được thống kê ở bảng 4.3
AFL++ | Driller | Dr. CFuzz
CADET _ 00001 173 252 368
CADET 00003 312 257 295 CROMU 00016 1103 466 1155 KPRCA_ 00032 1694 1213 1746 YANO1 00001 773 602 782 YANO1 00016 552 520 553
Trung binh 767,8 551,7 816,5 Bang 4.3: Số lượng nhánh các trinh fuzzing phủ được trong 5 tiếng
Có thể thay Dr. CFuzz đạt được số lượng nhánh thực thi cao nhất ở 5 trong
tổng số 6 chương trình được thử nghiệm, ngoại trừ chương trình CADET _ 00003,
ở chương trỡnh này Dr. CFuzz xếp thứ hai. ệ cỏc chương trỡnh này Dr. CEuzz
có số lượng nhánh thực thi cao hơn hắn so với các trình fuzzing được so sánh,
với ngoại lệ ở chương trình YAN01_ 00001 và YANO1_ 00016 chỉ trội hơn một
khoản nhỏ. Trung bình Dr. CFuzz đạt được số lượng nhánh thực thi cao hơn
AFL++ 6,34% va cao hơn Driller-AFL 48%. Điều này cho thay Dr. CFuzz có
45
khả năng gia tăng độ phủ cạnh khi được tích hợp concolic execution kết hợp với học tăng cường sâu. Tuy nhiên Dr. CFuzz vẫn yếu thế hơn so với các trình fuzzing khác ở một số chương trình nhất định.
4.4.2. Số lượng ngoại lệ gây ra khi fuzzing
Số lượng ngoại lệ gây ra là tiêu chí thường được sử dụng để đánh giá độ hiệu
quả của một trình fuzzing. Trong khoảng thời gian cho trước, trình fuzzing tìm
được càng nhiều ngoại lệ thì càng hiệu quả. Bảng 4.4 thống kê số lượng ngoại
lệ mà chương trình tìm được bởi Dr. CFuzz và các trình fuzzing AFL+-+ Driller
trong 5 tiếng fuzzing.
AEL++ | Driller | Dr. CFuzz
CADET _ 00001 147 296 666
CADET 00003 417 310 340
CROMU 00016 559 494 583
KPRCA_ 00032 564 280 593
YANO1 00001 190 0 160 YANO1_ 00016 194 136 177 Trung bình 345,2 252,7 419,8
Bang 4.4: Số lượng ngoại lệ các trinh fuzzing gay ra trong 5 tiếng
Dr. CFuzz đạt được số ngoại lệ gây ra cao nhất trong 3 trên tổng số 6 chương
trình được thử nghiệm. Số lượng ngoại lệ được gây ra bởi Dr. CFuzz cũng
không quá vượt trội so với các trình fuzzing khác, ngoại trừ ở chương trình
CADET 00001, Dr. CFuzz gây ra 666 ngoại lệ, cao áp dao so với 2 trình fuzzing
còn lại. Ở chương trình YANO1 00001 Dr. CFuzz thể hiện kém hơn so với
AFL++, nhưng vẫn gây ra được ngoại lệ, hơn so với Driller-AFL không thể gây
ra được ngoại lệ nào. Trung bình Dr. CFuzz gây ra được số ngoại lệ hơn 21,6% so
với AFL++ và hơn 66,12% so với Driller-AFL. Có thể thay Dr. CFuzz vẫn chưa thể hiện tốt lắm trong việc tạo ra các đầu vào có khả năng gây ra lỗi chương
trình.
46
4.4.3. Thời gian tim được ngoại lệ đều tiên khi fuzzing
Thông thường các trình concolic execution sẽ thực hiện khám phá các đường
thực thi sâu, chứa nhiều nhánh mã [9]. Điều này có thể khiến trình fuzzing bỏ qua các đường thực thi ít nhánh mã, khiến cho việc khai thác các lỗ hong nằm
ở các vùng mã dễ tiếp cận trở nên kém hiệu quả. Việc đo lường thời gian tìm
được ngoại lệ đầu tiên có thể giúp ta biết được độ hiệu quả của trình fuzzing trong khả năng phát hiện các 16 hong ở những đoạn mã dễ có thể tiếp cận. Bảng 4.5 cho thống kê thời gian tìm được lỗ hồng đầu tiên của các trình fuzzing trong
quá trình thực nghiệm.
AEL++ | Driller | Dr. CFuzz CADET 00001 21 42 2
CADET 00003 4 19 1 CROMU 00016 7 77 15 KPRCA 00032 1 1 0.13 YAN01_ 00001 760 H 2471 YANO1 00016 5 20 12
Bảng 4.5: Thời gian các trình fuzzing tim ra ngoại lệ đầu tiên (giây)
Dr. CFuzz tim ra được ngoại lệ sớm nhất trong 3 trên tổng số 6 chương trình
được thử nghiệm. Tuy vậy nhưng khoảng cách thời gian so với các trình fuzzing
khác cũng không đáng kể, chỉ ngoại trừ ở chương trình CADET 00001, Dr. CFuzz đạt được thời gian tìm ra lỗi áp đảo, chỉ trong 2 giây. Có thể thay ở hang mục này, Dr. CFuzz thể hiện chưa tốt lắm.
4.4.4. Đánh giá kết quả thực nghiệm
Qua quá trình thực nghiệm, có thể thấy được Dr. CFuzz có kha năng gia tăng
độ bao phủ mã thông qua áp dụng phương pháp học máy tăng cường vào kỹ thuật concolic execution. Tuy nhiên khả năng khai thác lỗi của Dr. CFuzz vẫn
chưa thật sự hiệu quả. Diéu này bắt nguồn từ việc các đầu vào được tao ra bởi trình concolic execution chỉ có khả năng vượt qua các câu lệnh điều kiện ràng
47
buộc phức tạp của nhánh thực thi chứ chưa thể khai thác được một lỗ hong cu thể có trong chương trình. Việc này khó có thé thực hiện được ở mô hình hiện tại do sự phức tạp và đa dạng của các lỗ hồng, khiến các đầu vào cũng cần phải được xây dựng với độ phức tạp tương đương để có thể khai thác thành công một 16 hong nhất định. Tuy nhiên điều này là khả thi với phướng pháp học may đối kháng, có thể kết hợp với giải pháp hiện tại được đề xuất để nâng cao khả
năng khai thác lỗi cho giải phấp này.
48