Thêm attack_ vào tên hàm và gọi đến nạp tiền vào hợp
CHƯƠNG 4. THÍ NGHIEM VA DANH GIA
4.1. Thiết lập thí nghiệm
4.1.3. Kết quả thi nghiệm va đánh giá
Chúng tôi tiến hành huấn luyện trên tập dataset bao gồm 17 hợp đồng
tồn tại 16 hong Reentrancy và 18 hợp đồng tồn tại lỗ hong Unprotected
self-destruct.
Huấn luyện dữ liệu
Chúng tôi đã thực hiện huấn luyện tác tử trên tập dữ liệu với các ngưỡng
episode 500, 1000, 5000. Kết quả đạt được như sau:
kà so
6° .®
i š
£0 HH Lầu
i Ÿ5 20 5 20
Fro toš
a °° 100 200 se
Episode
Proximal Policy Optimization
Hinh 4.1: Thuật toán Policy gradient va Proximal Policy Optimization tới ngưỡng episode 500
‘Transaction sequence length
° 200 00 600
Episode
Hinh 4.2: Thuật toán Policy gradient va Proximal Policy Optimization tới ngudng episode 1000
8 8 8
“Transaction sequence length 8
100 300
Episode
“0
tpode
600 1000
Fy
®
8
kì
8
1000 2000 3000 4000
Episode Reinforce Algorightm
a =
#
&
‘Transaction sequence length 8
5 1000 — 200 3000 400 — 5900
Epsode Proximal Policy Optimization
Hành 4.3: Thuật toán Policy gradient va Proximal Policy Optimization tới ngưỡng episode 5000
Tw những lần chạy thực nghiệm chúng tôi đưa ra bang so sánh 2 thuật toán
như sau:
Bang 4.3: Dáng so sánh Policy gradient va Proximal Policy Optimization
Tiêu chí đánh giá Policy gradient PPO
Giá trị trung bình điểm số trong 0.62 0.51
5000 episode
Chiều dài trung bình của chuỗi giao 6.3962 5.1329
dịch được sinh ra trong 5000 episode
Tốc độ train trung bình 0.200320513 0.427350427
Thời gian chạy trong 500 episode 29 phút 16 phút
Thời gian chạy trong 1000 episode 48 phút 34 phút
Thời gian chạy trong 5000 episode | 5 tiếng 12 phút | 3 tiếng 15 phút
5Fừ day cho thay, càng huấn luyện thì cả 2 mô hình đều chưa hội tu, Policy gradient cho ra kết quả tốt hơn PPO, tuy nhiên càng huấn luyện trong thời
gian dài thì thời gian chạy càng lâu, ngược lại Proximal Policy Optimization
còn khá hạn chế về giá trị điểm số trung bình và chiều dài chuỗi giao dịch sinh ra chưa được tối ưu. Kết quả được phân tích theo từng tiêu chí:
— Giá trị trung bình điểm số trong 5000 episode:
Điểm số trung bình là một chỉ số quan trọng để đánh giá hiệu suất của mô hình. Trong trường hợp nay, Policy gradient và . Điểm số càng cao thể hiện khả năng tối ưu hóa tốt hơn của mô hình, do đó, Policy gradient có hiệu suất tốt hơn trong tiêu chí này.
— Chiều dài trung bình của chuỗi giao dịch được sinh ra trong 5000
episode:
Chiều dài trung bình của chuỗi giao dịch có thể đánh giá khả năng sinh
ra các giao dịch của mô hình. Trong trường hợp này, PPO có chiều dài trung bình của chuỗi giao dịch thấp hơn (5.1329) so với Poliey gradient (6.3962). Mô hình với chiều dai chuỗi giao dịch thấp hơn có thể cho thấy khả năng sinh ra các giao dịch ngắn hơn và tối ưu hơn.
— Tóc độ train trung bình:
Tóc độ train trung bình là thời gian mô hình cần để hoàn thành một lần huấn luyện trung bình. Trong trường hợp nay, Policy gradient có tốc
độ train trung bình thấp hơn (0.200320513) so với PPO (0.427350427). Tóc độ train càng nhanh thì mô hình được cập nhật và cải thiện nhanh
hơn.
— Thời gian chạy trong 500, 1000 và 5000 episode:
Thời gian chạy cho biết thời gian mô hình cần để hoàn thành một
số lượng episode nhất định. PPO có thời gian huấn luyện nhanh hơn khoảng gấp 2 lần so với Policy gradient điều này cho thấy PPO đã đánh bại được Poliey gradient trong tiêu chí này.
Từ bảng trên, Policy gradient có hiệu suất tốt hơn trong việc đạt điểm số cao hơn, có chiều dài chuỗi giao dịch ngắn hơn. Tuy nhiên, PPO có thời gian chạy ngắn hơn và tốc độ train trung bình thấp hon so với Policy gradient.
63
Tiêu chí đánh giá ContraMaster RLSCExploit
Tối ưu độ dài của chuỗi | Không Có
giao dịch được sinh ra
Khả năng đưa ra chuỗi | Có Có
giao dịch khai thác
Chọn giá trị hợp lý cho | Không Khong
tham số truyền vào các
hàm
Bang 4.4: So sánh công cụ ContraMaster va RLSCExploit
4.1.4. Đánh giá thực nghiệm
Chúng tôi đã tổng hợp tập dữ liệu VeriSmart[1] bằng cách chọn loc 50 file
Solidity gồm hai loại lõi: Re-entrancy và Suicidal (trong bài báo gốc[10] sử dụng 84 file solidity).
Tap dữ liệu được chia theo tỷ lệ 7:3 cho việc huấn luyện và kiểm thử tương ứng. Chúng tôi đã phân tích thủ công tất cả các tệp để đảm bảo quá trình huấn luyện có thể học hiệu quả từ tập dữ liệu đã thu thập.
Các phiên bản hợp đồng thông minh trong tập dữ liệu bao gồm 0.4.26 và 0.8.0, đại điện cho cả phiên bản cũ và phiên bản mới. Tỉ lệ phân phối giữa
phiên ban cũ và mới là 1:1, tương ứng với hai loại lỗi (Re-entrancy cho phiên bản 0.8.0 và Suicidal cho phiên ban 0.4.26).
O bước đánh giá thực nghiệm, chúng tôi sử dụng tập dữ liệu gồm 15 hợp
đồng thông minh có chứa lỗ hổng reentrancy và suicidal. Kết quả của thực
nghiệm dat được của RLSCExploit:
Bảng 4.5: Bảng thong kê kết quả thử nghiệm của mô hành RLSCExploit
Tiéu chí đánh giá Policy gradient | PPO Tong số
Số lượng hợp đồng đã được | 116 120 123
khai thác thành công trong tập
dt liệu huấn luyện
Số lượng hợp đồng đã được | 27 33 50
khai thác thành công trong tập
dữ liệu test
Tỉ lệ khai thác thành công | 94.31% 97.56% 100%
trong tập dữ liệu huấn luyện
Tỉ lệ khai thác thành công | 54.83% 81.16% 100%
trong tập dit liệu test
Nhóm đưa ra một số câu hỏi sau khi hoàn thành thực nghiệm:
Câu hỏi 1: Mô hình có khả năng khai thác các lỗ hổng mới không được
huấn luyện trước đó?
Mô hình RLSCExploit có khả năng khai thác các lỗ hổng mới không được huấn luyện trước đó trong một mức độ nhất định. Nếu lỗ hổng mới có các đặc điểm tương tự với các lỗ hổng đã được huấn luyện, mô hình có khả năng
tự động tìm ra cách khai thác. Tuy nhiên, nếu lỗ hổng mới có các đặc điểm đặc biệt yêu cầu có các kiểu dit liệu phức tạp như bytes và không tương tự với lỗ hổng đã biết, mô hình có thể gặp khó khăn trong việc khai thác.
Nếu lỗ hổng mới có độ phức tạp cao và yêu cầu các kiến thức chuyên môn đặc biệt, mô hình có thể không đạt được kết quả tốt trong việc khai thác.
Cần có sự cân nhắc về khả năng và giới hạn của mô hình trong việc xử lý
các lỗ hổng phức tạp và không được huấn luyện trước đó.
Câu hỏi 2: So với việc chọn ngẫu nhiên các chuỗi giao dịch thì việc chọn
chuỗi giao dịch có thứ tự như học tăng cường đem lại lợi ích như thế nào?
65
Đối với phương pháp chọn ngẫu nhiên các chuỗi giao dịch được đề cập trong bài báo [11] không đem lại hiệu suất tốt trong trường hợp file mã nguồn solidity có quá nhiều hợp đồng và nhiều hàm khác nhau. Khi sử dụng học tăng cường, chuỗi giao dịch có thứ tự
trên trạng thái và hành động trước đó.
ược xác định bởi chính mô hình dựa
Điều này tạo ra sự liên tục và hướng dẫn trong quá trình học, cho phép mô hình nắm bắt được quy luật và mô hình hóa hành vi tốt hơn so với việc cl họn ngẫu nhiên.
Mô hình RL có thể tự động khám phá các chuỗi giao dịch mới bằng cách
thử nghiệm các hành động khác nhau dựa trên kinh nghiệm đã học. Điều
này giúp mô hình khám phá và khai t 14c¢ những chuỗi giao dịch tiềm năng
có thể mang lại kết quả tốt khi sinh ra các chuỗi giao dịch.
4.1.5. Độ hiệu qua của công cụ RLSCexploit trong viéc phát
sinh chuỗi giao dich
Đảng 4.6: Bảng dánh giá các công cụ khai thác lỗ hổng
Tiêu chí đánh giá ContraMaster | Edchina RLSCExploit
Tối ưu độ dài của chuối | X ⁄ v
giao dich được sinh ra
Chọn giá trị phù hợp cho | X xX X
tham số truyền vào các
hàm
Khai thác lỗ hồng các hợp | X ⁄ ⁄
động phiên bản 0.8
Phát sinh chuỗi giao dịch | 4 X v
khai thác trong thời gian
ngắn hạn
Trong đó :
— X là không thỏa tiêu chí
— # là thỏa các tiêu chí
— O là không được đề cập đến.
67
Với bảng 4.6, chúng tôi đưa ra nhận định rằng công cu RLSCExploit với việc ứng dụng phương pháp học tăng cường, chiếm ưu thế cao về việc chọn chuỗi giao dịch khai thác và tiềm năng phát triển tốt hơn.
Chúng tôi tham khảo các công cụ tự động phát sinh chuỗi khai thác sử
dụng phương pháp symbolic execution có thể giúp tìm ra các giá trị đầu vào phù hợp cho các hàm trong hợp đồng, đây cũng là một hạn chế trong
mô hình của chúng tôi đưa ra.
Với RLSCexploit, chúng tôi tin rằng trong tương lai, việc kết hợp giữa phương pháp symbolic execution và học tăng cường sẽ đem lại hiệu quả tốt hơn và có thể đóng góp đáng kể vào phát triển công cụ khai thác lỗ hổng
và nâng cao bảo mật của các hợp đồng thông minh.