Mô hình tạo ra chuỗi lời gọi hàm

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Nghiên cứu phương pháp khai thác tự động lỗ hổng bảo mật trên hợp đồng thông minh (Trang 54 - 58)

BÊN TRONG HỢP ĐỒNG THÔNG

3.1. Mô hình tạo ra chuỗi lời gọi hàm

3.1.1. Tổng quan rnô hành đề xuất

Chúng tôi có tham khảo mô hình trong bai báo [9]. Qua nghiên cứu liên quan

này, nhóm nhận thấy được tiềm năng của việc áp dụng học tăng cường sâu vào

tạo chuỗi lời gọi hàm giao dịch. Để đánh giá lại đầy đủ khả năng tạo chuỗi lời

gọi hàm giao dịch của mô hình học tăng cường, chúng tôi chọn việc hiện thực

hóa mô hình như trong bài báo đã đề cập. Tuy nhiên, thay vì tập trung khai

thác lỗi Ether Leaking và Suicidal thì nhóm chọn khai thác lỗi Re-entrancy và Suicidal.

Reward

Hình 3.1: Mô hành tổng quan

Cải tiến chính của việc áp dụng học tăng cường vào mô hình khai thác so với việc thực hiện sinh ra nhiều chuỗi lời gọi hàm như truyền thống rồi thực thi, tất

cả nằm ở việc đánh giá số lần thực thi ít nhất chuỗi lời gọi hàm giao dịch mà vẫn đảm bảo được sự chính xác. Điểm đánh giá khả năng thực thi sẽ ảnh hưởng đến phần thưởng, vì vậy tác tử sẽ học được hành động nào nên sử dụng và hạn chế sử dụng để không ảnh hưởng tới khả năng khai thác.

47 Các bước hoạt động của mô hình:

1. Đầu tiên các tệp tin hợp đồng thông minh sau khi được biên dịch bằng sole

sẽ được deploy lên trên EVM [7] ở mạng local (ngữ cảnh nay chúng tôi dùng

Ganache để mô phỏng lại).

2. Ké đến, sau khi đã phân loại nhóm cho các hàm trong hợp đồng thông minh

thì tác tử sẽ cố gắng chọn được nhóm chứa các hàm mà có chức năng phù hợp và chọn ngẫu nhiên trong nhóm đó 1 hàm (bằng phương pháp học tăng

cường) để khai thác sau đó gởi về phía server.

3. Quan sát phần thưởng r và trang thái tiếp theo s’.

4. Luu lại kinh nghiệm vào trong(s,a,r,s’) bộ nhớ phát lại.

5. Tại server, môi trường tiếp nhận hành động và thực thi lời gọi hàm sau đó

kiểm tra việc vi phạm các tính chất đã đề ra đối với từng loại lỗi. Các kết

quả liên quan đến hàm có khả năng khai thác được trong chuỗi lời gọi hàm

sẽ làm phần thưởng cho tác tử

6. Cứ như vậy, qua nhiều lần thực hiện hành động trên các hợp đồng thông

minh khác nhau, mạng nơ ron của tác tử sẽ học dần và dự đoán các hành

động hợp lí để tối ưu hóa phần thưởng.

3.1.2. Chi tiết mô hinh đề xuất

8.1.2.1. Trang thái trong môi trường

Trạng thái của môi trường chính là các hàm thực hiện giao dịch được trích

xuất thành dạng các vec tơ thuộc tính. Để trích xuất các thuộc tính này, chúng

tôi da . Các vec tơ thuộc tính bao gồm:

Thuộc tính liên quan đến cả 1 hợp đồng thông minh:

e Trace: Chita số lượng opcode của 8 opcode: SHA, CALL, CREATE, SELF-

DESTRUCT, JUMP, JUMPI, SLOAD, SSTRORE.

48

e Coverage: Chita số lượng opcode của tất cả các hàm / số lượng opcode của

nguyên cả 1 hợp đồng thông minh

Thuộc tính liên quan đến 1 hàm trong hợp đồng thông minh:

e Opcode: Chita 25 opcode phổ biến nhất trong hàm được chọn thực thi, sau

đó mapping những opcode đó thành số (có bảng để mapping ở trang này

https: //ethervm. io/)

e Call: Chứa tần số mà hàm này được gọi trong tổng số lần gọi hàm trong 1

hợp đồng thông minh

e Arguments: Chita số lương tham số được truyền vào của hàm được thực thi

e Name: tokenize tên của các hàm thành vector 300 chiều

e Revert: nếu opcode cuối cùng của hàm được thực thi là Revert thì giá trị

sẽ là 1, ngược lại là 0

e Return: nếu opcode cuối cùng của hàm được thực thi là Return thì giá trị

sẽ là 1, ngược lại là 0

e Assert: nếu opcode cuối cùng của ham được thực thi là Assert thì giá tri sẽ

là 1, ngược lại là 0

e Coverage: Chứa số lượng opcode của hàm thực hiện / số lượng opcode của

1 hợp đồng thông minh

Đối với thuôc tính Name, Việc biến tên hàm thành vector không gian để cho ngôn ngữ máy có thể hiểu được thì ban đầu chúng tôi dự định dùng Word2vec

cho mô hình nhưng đối với việc tên hàm của hợp đồng thông minh phụ thuộc

vào cách người lập trình viên đặt tên nên "từ điển" trong mô hình Word2vec sẽ không thể chứa hết được những trường hợp này. Chính vì thế chúng tôi quyết định sử dụng mô hình Fasttext để giải quyết bài toán tên của các hàm trong hợp đồng thông minh không có nằm trong "từ điển" của word2vec.

49

Hai loại thuộc tính này sẽ tạo thành không gian vec tơ với tổng cộng 340

chiều.

8.1.2.2. trinh phát hiện trong môi trường

Re-entrancy Với loại lỗi re-entrancy thi đây là loại lỗi liên quan đến số dư

trong hợ đồng thông minh, do đó cần kiểm tra số dư trước và sau khi giao dich.

Cu thể, nếu số dư ban đầu của hợp đồng nạn nhân có 5 eth, số tiền của hợp

đồng tấn công có 2 eth. Lúc này chưa có phát sinh giao dịch giữa 2 hợp đồng. Sau khi thực hiện 1 hàm nào đó mà số tiền của hợp đồng tấn công tăng lên 7 và

số tiền của hợp đồng nạn nhân giảm xuống thì lúc này việc khai thác đã thành

công.

Suicidal Với loại lỗi Suicidal thì sau khi thực thi 1 hàm thì cần phải kiểm tra liệu xem là hợp đồng nạn nhân có còn tồn tại trên địa chỉ ban đầu lúc mới triển

khai hay không bằng cách gọi tới thuộc tính getCode của w3.provider.eth, nếu hợp đồng vẫn đang chạy bình thường thì kết quả nó sẽ ra được 1 chuỗi có

kiểu dữ liệu dạng byte, còn nếu hợp đồng đã bị hủy thì kết quả lấy ra được chỉ

là 1 byte rỗng.

3.1.2.3. phát sinh mẫu hợp đồng tan công(Đối uới uiệc khai thác lỗi Reentrancy)

Để phát sinh mẫu hợp đồng tấn công thì có những bước sau:

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Nghiên cứu phương pháp khai thác tự động lỗ hổng bảo mật trên hợp đồng thông minh (Trang 54 - 58)

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

(88 trang)