Đồ thi luồng điều khiển

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Tự động hóa phát hiện lỗ hổng bảo mật trên hợp đồng thông minh dựa trên mô hình học sâu và cơ chế Attention (Trang 40 - 48)

CHƯƠNG 2. CƠ SỞ LÝ THUYET

2.6.2. Đồ thi luồng điều khiển

Đồ thị luồng điều khiển (Control-flow graph) và đồ thị lời gọi hàm (call graph) đại diện cho các luồng thực thi mã phần mềm và các quan hệ cuộc gọi. Biểu đồ luồng điều khiển mô tả các tất cả các trình tự có thể có của các câu lệnh hoặc dòng mã có thể được duyệt qua trong một hàm trong quá trình thực thi chương trình. Ngược lại, một đồ thị cuộc gọi (call graph) biểu diễn mọi quan hệ cuộc gọi có thể có giữa các hàm trong một chương trình.

Đồ thị luồng điều khiển là một biểu đồ đại diện cho luồng điều khiển của một chương trình. No biểu thị cấu trúc của chương trình, các rẽ nhánh (branching),

vòng lặp (loop) và thứ tự thực thi các câu lệnh. CFG được tạo thành bằng cách chia nhỏ mã nguồn thành các khối cơ bản (như khối câu lệnh, điều kiện

rẽ nhánh,...) và các khối này đại diện cho một bước thực thi duy nhất trong chương trình, được kết nối thong qua các edge. Nghĩa là, trong một CFG thi các node đại diện cho các khối cơ bản và các edge đại diện cho các điều kiện và

quyết định luồng điều khiển. Vì vậy mà CFG có thể cung cấp một cái nhìn tổng quan về đường đi thực thi và các điểm cuối của chương trình, nó cũng hữu ích trong việc phân tích lỗi và tối ưu hoá kiểm tra chương trình. Hình 2.10 là một

ví dụ minh hoạ cho đồ thị luồng điều khiển

31

Node type: IF

Expression:

addressCetherStore).ba lance.

>= 10000000000

__ ⁄ Sw

( Node Type:

Node Type: Expression \ End_IF

Expression: Qq

etherStore.withdraudk)

Hình 2.10: Minh hoa đồ thị luồng điều khiển trong Solidity

2.6.3. Graph Convolutional Network

Graph Convolutional Network (GCN) thuộc loại mô hình của Graph Neural

Network (GNN), được thiết kế nhằm xử ly dữ liệu đồ thi. GCN được phát triển với mục đích học hỏi biểu diễn đặc trưng của các node dựa trên thông tin cấu

trúc của đồ thị đó. GƠN hoạt động thông qua việc hợp nhất các thông tin từ

các node lân cận để tạo ra đặc trưng cho mỗi node trong đồ thị. Mỗi tầng trong GCN thực hiện hai quy trình chính: tổng hợp thông tin (pooling) và cập nhật

đặc trưng.

e Tổng hợp thông tin: nó tính toán tổng hợp các đặc trưng của node lân cận

và chính node đang xét. Thường thì sẽ sử dụng một phép tổng hợp đơn giản

để lấy trung bình hoặc tổng của các node lân cận

e Cập nhật đặc trưng: nó thực hiện một bước cập nhật để tính toán đặc trưng

mới cho node. Bước này sẽ sử dụng một hàm kích hoạt (activation function)

phi tuyến để tạo ra biểu diễn mới

32

Điều quan trọng là các node trong GCN sẽ có các biểu diễn khác nhau ở mỗi

layer. Ví dụ như ở layer 0 thì nó sẽ giống đặc trưng của node. Nhưng ở layer thứ

k thì biểu diễn của một node phải tính toán bằng cách đi qua các node lân cạn của nó, lấy biểu diễn của nó từ layer k-1 trước đó và tính trung bình cộng của chúng. Sau đó sẽ biến đổi chúng bằng cách sử dụng ma trận tham số và thêm vào các thông tin riêng của từng node k-1. Giá trị kết quả sẽ được chuyển qua

một hàm phi tuyến tính như ReLU.

Mô hình GCN đã được áp dụng thành công trong nhiều nhiệm vụ trên đồ

thị, nó cho phép mô hình học được biểu diễn đặc trưng phụ thuộc vào ngữ cảnh

và mối quan hệ giữa các node trong đồ thị

2.7. Các công trình nghiên cứu liên quan

Tann [20] và các cộng sự sử dụng phương phấp học trình tự (sequence learning)

để phát hiện các 16 hong trong opcode của Smart Contract. Bài viết này sử dụng one-hot encoding và một ma trận embedding để biểu diễn opcode của Smart Contract. Các code vector thu được sẽ được sử dụng làm đầu vào (input) dé

huấn luyện mô hình LSTM cho việc xác định xem Smart Contract đó có dé bi tấn công hay không. Sun [19]va các cộng sự đã đề xuất một phương pháp dựa

trên mô hình CNN kết hợp với cơ chế attention để phát hiện lỗ hồng trong Smart

Contract. Các phương pháp này sở hữu khả năng khái quát hoá vượt trội, cho

phép chúng học các đặc điểm cấu trúc phức tạp từ dữ liệu tranining và nắm bắt các mẫu một cách hiệu quả. Do CNN được thiết kế đặc biệt để xử lý dữ liệu hai chiều nên nó phù hợp để phân tích biểu diễn có cấu trúc của mã Smart

Contract và nó vượt trội trong việc phát hiện tính năng cục bộ thông qua các

lớp tích chập (convolutional layers), cho phép họ tập trung vào các đoạn code

quan trọng và xác định các lỗ hồng một cách hiệu quả. Tuy nhiên thì nó vẫn

còn một số hạn chế liên quan đến việc CNN cần input có kích thước cố định,

33

điều này đặt ra các thách thức khi xử lý các Smart Contract có độ dài khác

nhau. Ngoài ra, CNN không giữ lại thông tin trình tự, khó có thể hiểu thứ tự câu lệnh và cấu trúc của Smart Contract tổng thể. Còn một hạn chế của CNN

là yêu cầu một lượng lớn dit liệu đào tao do CNN cần học các tính năng phức

tạp và tránh overfitting.

Qian [14| và các cộng sự đã đề xuất một cách tiếp cần mới để phát hiện tự động lỗ hổng reentrancy trong Smart Contract bằng cách sử dụng mô hình tuần

tự (sequential model). Các mô hình tuần tự như RNN và LSTM mang lại một

số lợi thế trong việc phát hiện các lỗ hong reentrancy. Thứ nhất thì các mô hình này có thể nắm bắt các phụ thuộc tạm thời và thứ tự các operations trong Smart

Contract, cho phép chúng xác định các kịch bản của reentrancy tiềm năng liên quan tới lệnh gọi hàm đệ quy. cung cấp một phân tích toàn diện hơn so với các

kỹ thuật phân tích tĩnh. Thứ hai, các mô hình tuần tự này có thể xử lý các chuỗi đầu vào có độ dài thay đổi, phù hợp với tính chất động và độ dài của Smart

Contract. Mặc dù vậy thì nó vẫn có hạn chế nhất định khi áp dụng mô hình

tuần tự để phát hiện lỗ hong reentrancy. Một thách thức là cần có dit liệu đào tạo đáng kể để đào tạo các mô hình hiệu quả. Ngoài ra nó có thể gặp khó khăn trong việc nắm bắt các mẫu reentrancy phức tạp hơn và phát hiện các biến thé tỉnh vi của các cuộc tấn công phát triển theo thời gian. Tóm lại thì việc sử dụng các mô hình tuần tự trong bài báo trình bày một cách tiếp cận đầy hứa hẹn để

phát hiện tự động quay lại trong các hợp đồng thông minh. Bằng cách tận dụng

các yếu tố phụ thuộc tạm thời và thứ tự hoạt động, các mô hình này giúp hiểu

rõ hơn về các lỗ hồng reentrancy. Do đó, những thách thức trong việc thu thập

dữ liệu đào tạo và nắm bắt các mẫu reentrancy phức tạp nên được xem xét khi

sử dụng các mô hình tuần tự. Mô hình BLSTM-ATT này và một số mô hình

khác đã được nhóm khảo sát và mô tả trong bảng 2.2

Bidirectional Encoder Representations from Transformers (BERT) [2| bao

gồm một bộ multi-layered Tranformer Eneoder và đã rất thành công trong nhiều

34

lĩnh vực xử lý ngôn ngữ tự nhiên. Đặc biệt nhiều nhà nghiên cứu đã sử dụng BERT để phân tích mã nguồn [4]. Hơn nữa Jeon [9] và các cộng sự đã đề xuất một

cơ chế phát hiện lỗ hong trong mã nguồn Smart Contract, dựa trên sự kết hợp của

mô hình ngôn ngữ BERT và các kỹ thuật machine learning - SmartConDetect.

Mô hình này trích xuất các code gadgets và tận dụng BERT để phát hiện lỗ hổng của các chương trình Solidity một cách hiệu quả. SmartConDetect là một

phương pháp tiếp cận dựa trên tính tương tự giữa các đoạn mã thông qua

biểu diễn trừu tường từ quá trình tokenizer. Đầu tiên thì tác giả trích xuất

các function từ mã Solidity và gan nhãn dựa vào Smartcheck, tao ra các code

gadgets và mã hoá nó bằng cách tập hợp các function đã được trích xuất. Đào tạo SmartConDetect bằng BERT và đưa ra các báo cáo phát hiện dưới dạng

JSON với các lỗ hong và function tương ứng. Kết quả cho thấy SmartConDetect

so với các phương pháp tiên tiến khác, tuy nhiên nó còn hạn chế trong việc phát

hiện một số loại lỗ hổng với các cú pháp Solidity bị ngắn.

Hazim Hanif [7] và các cộng sự đã đề xuất một phương pháp mới được lấy

cảm hứng từ kiển trúc Transformer, sử dụng mô hình VulBERTa cho phát hiện

lỗ hồng bảo mật trong mã nguồn. Mô hình này sẽ tập trung vào việc đơn giản hoá quá trình huấn luyện mô hình BERT, sử dụng kỹ thuật Pre-train để học kiến thức biểu diễn chuyên sâu về cú pháp, ngữ nghĩa và sẽ tận dụng để đào tạo các bộ phân loại phát hiện lỗ hổng. Các mã nguồn được lấy từ nhiều dự

án phần mềm khác nhau và được phân tích thông qua một quy trình token hoá đáng tin cậy (custom tokeniser kết hợp BPE), đảm bảo thông tin cơ bản nhưng van đủ quan trọng được cung cấp cho mô hình. Đồng thời, tác giả còn đề xuất

phương pháp xây dựng thông qua Masked Language Modelling (MLM) để giảm

kích thước dữ liệu và số lượng tham số của mô hình mà vẫn đảm bảo độ chính

xác và độ tin cậy. Với việc đào tạo trước như vậy giúp cho mô hình có khả năng

chuyển giao các trọng số nhúng (embedding weights) và được tái sử dụng trong

các kiến trúc ít phức tạp hơn như MLP và CNN. Mặc dù kết quả cao nhưng mô

39

hình vẫn còn một số hạn chế như bộ dữ liệu phát hiện lỗ hồng trong khi kiểm tra thủ công cho thấy nhãn không chính xác. Mặc dù DL có khả năng phục hoi

để chống nhiễu trong quá trình đào tạo nhưng nó vẫn làm giảm hiệu suất. Tác

giả của mô hình còn cho biết nguồn lực còn hạn chế và chưa khám phá các kết

hợp và mô hình lớn hơn để nâng cao hiệu suất.

Guo [6] và các cộng sự đã đề xuất một mô hình mã nguồn mới được đào

tạo trước trên dữ liệu mã nguồn và sử dụng đồ thị để biểu diễn mã nguồn

- GraphCodeBERT. Sau đó, mô hình được tinh chỉnh (fine-tuning) trên các

nhiệm vụ cụ thể để tăng độ chính xác trong việc phân loại và phát hiện lỗ hổng

trong mã nguồn. Thay vì sử dụng cú pháp trừu tượng (AST), thì tác giả bài

báo đề xuất sử dụng thông tin mã cấp ngữ nghĩa - data flow để đào tạo trước.

Data flow này là một graph, nó ít phức tạp hơn và không bị hệ thống phân cấp sâu không cần thiết, thuộc tính giúp mô hình hiệu quả hơn. Các phương pháp đào tạo trước được đề xuất trong bài báo sử dụng nhiêm vụ dự đooán

các data flow edges để học biểu dién từ cấu trúc mã và căn chỉnh thay đổi trên

mã nguồn và data flow để căn chỉnh biểu diễn giữa mã nguồn và cấu trúc mã.

GraphCodeBERT dựa trên kiến trúc Transformer và mở rộng bằng cách graph-

guided masked attention function để kết hợp cấu trúc mã. Kết quả nghiên cứu

cho thấy việc áp dụng data flow trong mô hình được đào tạo trước sẽ cải thiện

khả năng hiểu mã tốt hơn và mô hình đạt được hiệu suất cao trong việc phát hiện lỗ hồng.

Nhưng BERT vẫn có những nhược điểm như kích thước lớn và tài nguyên tính toán cao, tốc độ chậm, khả năng truyền thống hạn chế và không có khả

năng xử lý các từ mới. Nhờ đó ma DistilBERT [17] đã thể hiện được ưu điểm

là một mô hình Transformer nhỏ, nhanh, rẻ và nhẹ dựa trên kiến trúc BERT.

Việc chat lọc kiến thức được thực hiện trong giai đoạn Pre-training để giảm 40% kích thước của mô hình BERT. Với BERT, nhóm có thể cải thiện tỷ lệ chính xác dự đoán lỗ hổng của hợp đồng thông minh. Dựa trên những ưu điểm của

36

Bảng 2.1: Bảng kết qua đánh giá các mô hành

Phương pháp | Micro-R (%) | Micro-P (%) | Micro-F1 (%) | Accuracy (%)

RNN 83,3% 70,7% 76,5% 73,9%

LSTM 67,3% 76,3% 71,5% 74,3%

Bi-LSTM 70,7% 79,8% 74,9% 76,2%

LSTM-ATT 79,7% 81,7% 80,7% 80,7%

TextONN [1] 67,1% 71,9% 72,1% 71,0%

WBL-ATT (15) | 87,3% 87,7% 87,5% 88,1%

DistilBERT so với BERT, nhóm đã quyết định sử dụng các mô hình mã hóa

(DistiIBERT) để triển khai mô hình phát hiện lỗ hong tùy chỉnh cho các hợp

đồng thông minh.

Phát hiện lỗ hồng của Smart Contract là một nhiệm vụ đầy thách thức và làm cách nào để xây dựng một mô hình DL duy nhất để phát hiện nhiều loại

lỗ hong bảo mật. Có hai thuật toán phan loại là binary và multi-label. Một bộ phân loại binary chỉ có thể phân loại dữ liệu là có lỗ hồng hoặc không có lỗ hồng, tích cực hoặc tiêu cực, đúng hoặc sai. Không giống như phân loại binary,

bộ phân loại multi-label chỉ định hoặc gắn nhiều nhãn dữ liệu cho từng mẫu dữ

liệu. Để xác minh tính hiệu quả của mô hình được đề xuất bởi đề tài thì nhóm

đã tham khảo và có được kết quả của việc phân loại multi-label với các nghiên cứu sử dung DL. Kết quả đánhh giá được Shenyi Qia [15] và các cộng sự đã

khảo sát trên cùng một bộ dataset và được thể hiện trong bảng 2.1. Mô hình khảo sát trên 5 loại 16 hổng là Reentrancy, IntegerOverflow, IntegerOverflow,

TOD, Timestamp Dependency với tệp dataset gồm 5290 Smart Contract được

xác thực gồm các loại lỗ hong và xây dựng gồm 1000 Smart Contract không chứa lỗ hồng để có thể đào tạo mô hình phát hiện tốt hơn. Kết quả khảo sát

cho thấy sử dụng mô hình BiLSTM có hiệu quả cao hơn trong việc trích xuất thông tin ngữ nghĩa giữa các mã Smart Contract. Ngoài ra thì các chỉ số của LSTM-ATT được cải thiện rất nhiều so với BiLSTM và nó chứng minh được

việc bổ sung cơ chế attention có thể làm cho mô hình cân bằng các đặc trưng

37

Bảng 2.2: Bảng khảo sát các mô hành hiện có

Mô hình Phương pháp/ kĩ thuật | Phân loại Ưu điểm Nhược điểm

ằ mye ne an cải thiện kỹ thuật embeddi

Có thể xác định lỗ hong ở cấp độ Can Can ĐHỆP Xỹ Phuậy embecang

GCN binar chỉ tiết cấp dòng và cấp hợp đồn thêm các thuộc tính ngữ nghĩa hơn

MANDO [13] Call Graph + y ate là oe Pp °P š 5 của Smart Contract chẳng hạn

(7 loại) với kết quả vượt trội so với các ca CA ack

Control-flow graph hương pháp trước như data denpendencies và điều

P 8 Paap chỉnh các GNN mới và phức tạp hon

Mô hình sử dụng crucial data-flow

Pre-training (sử dụng graph ít phức tạp hơn và không

BERT và Transformer) binar mang lại hệ thống phân tích sâu Hiệu suất phụ thuộc vào việc

Peculiar [24] Graph-guided masked y không cần thiết, giúp mô hình gan nhãn thủ công và mô hình

: (reentrancy) xây R Cae ye, pen ae

attention Data-flow graph dé dang tập trung vào các đặc chỉ phát hiện 16 hong reentrancy + Crucial Data-flow graph trưng quan trọng, tránh được tình

trạng overfitting GNN (Interpretable Graph binary Mo hình sử dụng các expert m oo

feature va Expert (3 - reentrancy, attern giúp đóng sóp thông tin local Kho khăn trong việc biểu diễn

AME [11] Pattern Fusion) Timestamp p chính ao có Hà trị và số chế biết đồ thị ngữ nghĩa do các hàm

Control-flow + dependency, 8 ` khác nhau trong các Smart Contract

Data-flow graph Infinite loop) weight của từng feature khác nhau

BLSTM-ATT [14] BLSTM-ATT binary

(reentraeny)

Mô hình này không chỉ có thể nắm bắt các phụ thuộc dài hạn trong quá khứ hoặc tương lai mà còn làm nổi bật điểm chính bằng cơ chế attentionm

giúp nắm bắt thông tin ngữ nghĩa

thiết yếu và kiểm soát các phụ

thuộc control-flow

Mô hình chỉ giới hạn trong

việc phát hiện được duy nhất

lỗ hong reentraney

SmartConDetect [9]

Pre-training (stt dung BERT ) SVM, Eth2Vec, DR-GCN

multi-label

(6 loai)

C6 thể phat hiện nhiều lỗ hổng khác nhau (23 loại) và có thể sử dụng

mô hình áp dụng cho nhiều ngôn ngữ khác bằng cách cung cấp vocabulary

cho nó

Mô hình dễ bị nhiễu do

cú pháp Solidity quá ngắn

ESCORT [12| LSTM

Tranfer learning

multi-label

(6 loai)

Mo hinh nay cho phép phat hién

nhiều loại lỗ hổng hiệu qua và có thé

mở rộng quy mô do mỗi nhánh của

DNN nắm bắt ngữ nghĩa của một lớp 16 hồng cu thể nên chỉ cần đào tạo một DNN duy nhất và khi mở rộng chỉ cần đào tạo nhánh mới đó.

lỗ hổng với cú pháp

Solidity ngắn

với số lượng mẫu nhỏ và có thể tập trung vào được các dữ liệu đặc trưng quan

trọng.

38

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Tự động hóa phát hiện lỗ hổng bảo mật trên hợp đồng thông minh dựa trên mô hình học sâu và cơ chế Attention (Trang 40 - 48)

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

(89 trang)