Quá trinh fine-tuning cho bài toán phát hiện da lỗ hổng

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 73 - 83)

CHƯƠNG 4. THÍ NGHIỆM VÀ ĐÁNH GIÁ

4.4. Tiêu chí đánh giá kết quả

4.6.3. Quá trinh fine-tuning cho bài toán phát hiện da lỗ hổng

Quá trình fine-tuning là quá trình kết hợp mô hình tiền huần luyén (pre-

trained models) với các lớp phần loại (classifer layer) để phù hợp với tác vụ

phân loại lỗ hong. Dưới day là các lớp phân loại sử dung lần lượt các kỹ thuật

(MLP, LSTM, BiLSTM) cho tác vụ phân loại nhị phân với nhãn 0 là không có

lỗ hồng, nhãn 1 là có lỗ hồng:

Mô hình phân loại đã lỗ hong kết hợp pretrained DistiIBERT với MLP:

Listing 2 Lớp phan loại của mô hình tinh chỉnh (Fine-tuned models) với các lớp MLP

(pre_classifier): Linear(in features=/68, out_features=768,

= bias=True)

(dropout): Dropout(p=0.3, inplace=False)

(classifier): Linear(in_features=768, out_features=2,

ô bias=True)

Lớp phan loại sử dung MLP này bao gồm các thành phan sau:

e Linear(in-features=768, out-features=768, bias=True): Một tầng kết nối

đầy đủ (fully connected) với kích thước đầu vào là 768, kích thước đầu ra cũng là 768 và sử dụng hệ số điều chỉnh (bias).

e Dropout(p=0.1, inplace=False): Một tang dropout với xác suất dropout là

0.1. Tang dropout giúp ngăn chặn overfitting bằng cách tắt ngẫu nhiên một

64

"

số nơ-ron trong quá trình huấn luyện.

e Linear(in-features=768, out-features=2, bias=True): Tầng kết nối đầy đủ

cuối cùng với kích thước đầu vào là 768 và kích thước đầu ra là 2. Tầng này

sẽ xuất ra giá trị logit cho mỗi lớp, sau đó có thể được chuyển đổi thành

xác suất bằng cách sử dụng hàm softmax.

Mô hình phân loại đã lỗ hồng kết hợp pretrained DistiIBERT với LSTM:

Listing 3 Lớp phân loại của mô hình tinh chỉnh (Fine-tuned models) với các lớp LSTM

(bilstm1): LSTM(768, 256, num_layers=2, batch_first=True, 4+ bidirectional=False)

(pre_classifier): Linear(in_features=512, out_features=256,

+ bias=True) (dropout): Dropout (p=0.1, inplace=False) (classifier): Linear(in_features=256, out_features=2, s+ bias=True)

Lớp phân loại sử dung LSTM này bao gồm các thành phan sau:

e LSTM(768, 256, num-layers=2, batch-first= True, bidirectional=False): Một

tầng LSTM với kích thước đầu vào là 768, kích thước đầu ra là 256, số lượng

tầng là 2, đặt batch-first=True để biểu diễn dữ liệu đầu vào với kích thước

(batch-size, sequence-length, input-size) và bidirectional=False chỉ ra rằng tầng LSTM này không là hai chiều (unidirectional).

e Linear(in-features=512, out-features=256, bias=True): Một tang kết nối

day đủ (fully-connected) với kích thước đầu vào là 512, kích thước đầu ra

là 256 và sử dụng hệ số điều chỉnh (bias).

e Dropout(p=0.1, inplace=False): Một tang dropout với xác suất dropout là

0.1. Tầng dropout giúp ngăn chặn overfitting bằng cách tắt ngẫu nhiên một

số nơ-ron trong quá trình huấn luyện.

65

e Linear(in-features=256, out-features=2, bias=True): Tầng kết nối đầy đủ

cuối cùng với kích thước đầu vào là 256 và kích thước đầu ra là 2. Tầng này

sẽ xuất ra giá trị logit cho mỗi lớp, sau đó có thể được chuyển đổi thành

xác suất bằng cách sử dụng hàm softmax.

Mô hình phân loại đã lỗ hong kết hợp pretrained DistiIBERT với BiLSTM:

Listing 4 Lớp phân loại của mô hình tinh chỉnh (Fine-tuned models) với các lớp BiLSTM

(bilstm1): LSTM(768, 256, num_layers=2, batch_first=True,

+ bidirectional=True)

(pre_classifier): Linear(in_features=512, out_features=256,

4 bias=True)

(dropout): Dropout(p=0.1, inplace=False)

(classifier): Linear(in_features=256, out_features=2,

s+ bias=True)

Lớp phan loại sử dung BiLSTM này bao gồm các thành phan sau:

e LSTM(768, 256, num-layers=2, batch-first= True, bidirectional=True): Một

tầng LSTM hai chiều (bidirectional) với kích thước đầu vào là 768, kích

thước đầu ra là 256, số lượng tang là 2, và đặt batch-first—True để biểu

diễn dữ liệu đầu vào với kích thước (batch-size, sequence-length, input-size). LSTM hai chiều sẽ xử lý dữ liệu theo cả hai hướng (về phía trước và ngược lại), giúp nắm bắt ngữ cảnh tốt hơn.

e Linear(in-features=512, out-features=256, bias=True): Một tầng kết nối

day đủ (fully connected) với kích thước đầu vào là 512, kích thước đầu ra

là 256 và sử dụng hệ số điều chỉnh (bias).

e Dropout(p=0.1, inplace=False): Một tang dropout với xác suất dropout là

0.1. Tầng dropout giúp ngăn chặn overfitting bằng cách tắt ngẫu nhiên một

số nơ-ron trong quá trình huấn luyện.

66

e Linear(in-features=256, out-features=2, bias=True): Tầng kết nối đầy đủ

cuối cùng với kích thước đầu vào là 256 và kích thước đầu ra là 2. Tầng này

sẽ xuất ra giá trị logit cho mỗi lớp, sau đó có thể được chuyển đổi thành

xác suất bằng cách sử dụng hàm softmax.

Các lớp phân loại trên có thể được sử dụng trong các tác vụ phân loại văn

bản nhị phân. Đầu vào của lớp này sẽ là đầu ra của mô hình mã hóa ngôn ngữ DistilBERT và dau ra của lớp nay là logit cho mỗi lớp.

Lớp phân loại sử dụng BiLSTM cho tác vụ phân loại đa lỗ hồng:

Listing 5 Lớp phân loại của mô hình tinh chỉnh (Fine-tuned models) với các

lớp BiLSTM phân loại đa lỗ hong

(bi_lstm): LSTM(768, 256, num_layers=2, batch_first=True,

+ bidirectional=True)

(pre_classifier): Linear(in_features=512, out_features=256,

„ bias=True)

(dropout): Dropout(p=0.1, inplace=False)

(classifier): Linear(in_features=256, out_features=8,

+ bias=True)

e LSTM(768, 256, num-layers=2, batch-first=True, bidirectional=True): Một

tang LSTM hai chiều (bidirectional) với kích thước đầu vào là 768, kích

thước đầu ra là 256, số lượng tầng là 2, và đặt batch-first—True để biểu

diễn dữ liệu đầu vào với kích thước (batch-size, sequence-length, input-size). LSTM hai chiều sẽ xử lý dữ liệu theo cả hai hướng (về phía trước và ngược lại), giúp nắm bắt ngữ cảnh tốt hơn.

e Linear(in-features=512, out-features=256, bias=True): Một tầng kết nối

đầy đủ (fully connected) với kích thước đầu vào là 512, kích thước đầu ra

là 256 và sử dụng hệ số điều chỉnh (bias).

e Dropout(p=0.1, inplace=False): Một tầng dropout với xác suất dropout là

67

0.1. Tầng dropout giúp ngăn chặn overfitting bằng cách tắt ngẫu nhiên một

số nơ-ron trong quá trình huấn luyện.

e Linear(in-features=256, out-features=8, bias=True): Tầng kết nối đầy đủ

cuối cùng với kích thước đầu vào là 256 và kích thước đầu ra là 8.

4.6.4. Thực nghiệm 1,2,3

Huấn luyên mô hình phân loại đa nhãn trên tập dit liệu SmartBug Wild. Tập

dữ liệu SmartBug Wild có danh sách lỗ hồng bao gồm 8 loại lỗ hổng sau: access-

control, arithmetic, denial-service, front-running, reentrancy, time-manipulation,

unchecked-low-calls, other. Bang 4.4 mô ta kết qua thực nghiệm:

Bang 4.4: két qua thực nghiệm 1,2,3 trên các mô hành (source code)

DistiIBERT-MLP | DistiIBERT-LSTM | DistilBERT-BiLSTM pre | recall} fl pre | recall | fl pre | recall fl support

access_ control 0.77 | 0.03 | 0.06 | 0.92 | 0.10 | 0.18 | 0.00 | 0.00 0.00 734

arithmetic 0.85 | 0.96 | 0.90 | 0.85 | 0.99 | 0.92 | 0.92 | 0.94 | 0.93 7496 denial_ service 0.59 | 0.21 | 0.31 | 0.73 | 0.46 | 0.57 | 0.69 | 0.45 0.54 2493 front_ running 0.42 | 0.04 | 0.07 | 0.64 | 0.22 | 0.33 | 0.68 | 0.13 0.22 1544

reentrancy 0.71 | 0.37 | 0.48 | 0.78 10.43 | 0.56 | 0.78 | 0.46 0.58 2960 time_manipulation | 0.93 | 0.04 | 0.09 | 0.94 | 0.04 | 0.08 | 0.00 | 0.00 | 0.00 829

unchecked_low_calls | 0.73 | 0.49 | 0.59 | 0.88 | 0.47 | 0.62 | 0.86 | 0.48 0.62 2927

other 0.70 | 0.88 | 0.78 | 0.77 | 0.82 | 0.80 | 0.76 | 0.86 | 0.81 5636

micro avg 0.76 | 0.62 | 0.69 | 0.81 | 0.66 | 0.73 | 0.83 | 0.65 | 0.73 24619 macro avg 0.71 | 0.38 | 0.41 | 0.82 | 0.44 | 0.50 | 0.59 | 0.42 0.46 24619 weighted avg 0.73 | 0.62 | 0.62 | 0.81 | 0.66 | 0.69 | 0.76 | 0.65 | 0.68 24619 samples avg 0.74 | 0.64 | 0.65 | 0.80 | 0.68 | 0.70 | 0.76 | 0.66 | 0.68 24619

Mô tả kết qua: Mô hình phân loại lỗ hong trong Smart Contract được nhóm

thực hiện và đánh giá kết quả trên ba mô hình khác nhau. Từ bảng kết quả

4.4 cho thấy mô hình phân loại lỗ hồng của DistilBERT-BiLSTM có kết quả

tốt nhất về fl-score so với mô hình DistilBERT-MLP và DistilBERT-LSTM

(93% với lỗ hong arithmetic). Tuy nhiên, điểm trung bình đánh giá trên nhiều loại lỗ hổng của mô hình DistiIBERTBiLSTM (macro-avg fl-score 46%)còn

thấp hơn mô hình DistilBERTLSTM (macro-avg fl-score 50%)vì đối với lỗ

68

hổng access_ control và time manipulation thì mô hình còn hạn chế. Ngoài

ra ta thấy đối với cả ba mô hình có thể phát hiện tốt các lỗ hổng arithmetic, unchecked_low_ calls và other. Nhưng đối với các lỗ hong như acces_ control, time_ manipulation có điểm precision cao (94% DistiIBERT-LSTM) nhưng có điểm recall và fl-score thấp (4%) chỉ ra điểm yếu của mô hình có khả năng phân loại chính xác các 16 hong được xác thực là positive nhưng có xu hướng bỏ sót một số lỗ hổng thực tế

4.6.5. Thực nghiệm 4

Huấn luyện mô hình DistiIBERT-BiLSTM phân loại đa nhãn trên tập dữ

liệu Hugging Face, bao gồm các lỗ hong: arithmetic, other, reentrancy, safe,

uncheck-call và access-control. Bang 4.5 mô tả kết quả thực nghiệm

Mô tả kết quả: Từ bảng kết quả 4.5 cho thấy mô hình DistilIBERT-BiLSTM

có kết quả phát hiện lỗ hong access-control tốt nhất với 82% điểm precision. Đồng thời mô hình cũng có kết quả phát hiện lỗ hổng uncheck-call tốt với 80%

điểm precision

4.6.6. Thực nghiém 5,6,7,8

Phân loại nhị phan trên tập dữ liệu SmartBug Wild và Hugging Face.

Mô tả kết quả: Đối với tác vụ phân loại nhị phan lỗ hồng reentrancy trong

bang 4.6 cho thấy mô hình DistilBERT-LSTM hoạt động tốt hơn (88,38% Recall)

mô hình DistilBERT-MLP (76,68%) trên cả hai tập dữ liệu và nó hoạt động tốt

nhất trên bộ dữ hiệu HuggingFace với 87,2% F1-score

4.6.7. Thực nghiệm 9,10,11

Bảng 4.7 mô tả kết quả thực nghiệm của mô hình DisitlBERT kết hợp (MLP,

LSTM, BiLSTM) trên từng hàm của Smart Contract. Mô hình được tỉnh chỉnh

69

Bảng 4.5: Kết quả thực nghiệm 4 trên mô hình DistiIBERT-BiLSTM (source

code)

DistilBERT- BiLSTM | precision | recall | fl-score | support

arithmetic 80% 14% 24% 2346

other 66% 26% 37% 2715 reentrancy 59% 35% 44% 4209

safe 83% 53% 65% 4846 uncheck-call 80% 68% 74% 5422

access-control 82% 73% | 77% 7289

micro avg 77% 53% | 63% | 26827 macro avg 75% 45% 53% 26827 weighted avg 76% 53% 60% 26827 samples avg 62% 56% 57% 26827

Bang 4.6: Kết qua thúc nghiệm phân loại nhị phân trên toàn bộ ma nguồn

Dataset 'W 2 Acc Pre] H Recall

HuggingFace `. 79.05% | 78.45% | 77.55% | 76.68%

ete —. 87.76% | 86.06% | 87.20% | 88.38%

SmartBugsWilds TP 81.09% | 70.59% | 63.42% | 57.58%

ơ.— 85.48% | 77.73% | 72.53% | 67.99%

dang phân loại nhị phan với nhãn là 0/1. Hình 4.4 mô tả biển đồ giá tri loss và

chỉ số accuracy theo từng epoch.

70

Bang 4.7: Kết quả thuc nghiệm phân loại nhị phân trên từng ham

Tập dữ liệu | Mô hình | Accuracy | Precision | Recall | E1 score

SmartBug | DSHBERTL go 82% 41% 54%

MLP

Wild eri 89% 81% 58% 68%

DistiIBERT

BiLSTM 91% 84% 70% 76%

4.7. Mo hình phát hiện dựa trên Graph

4.7.1. Quy trành mâu dựng đồ thà CFG

Sử dụng tập dữ liệu SmartBugs Will, nhóm thực hiện trích xuất các Đồ thị luồng điều khiển tương ứng với các hàm trong Smart Contract. Sử dụng về vị trí chính xác của 16 hong được cung cấp trong tập dữ liệu để gán nhãn cho các

đồ thị. Nhãn 0 tương ứng với đồ thị không chứa 16 hong. Nhãn 1 tương ứng với

đồ thì có chứa 16 hồng.

Dữ liệu của đồ thị được xây dựng sử dụng thư viện pytorch-geometric. Các thành phần của đồ thị bao gồm: ma trận giá trị của các nút trong đồ thì - bao

gồm các onehot vec-tơ, được chuyển đổi dựa trên loại nút của đồ thì CFG (được

mô tả trên phần 3); Ma trận liền kề biểu diễn

4.7.2. Huấn luyện mô hinh uới GCN

Trường hợp 1: Mô hình GCN thực nghiệm với CFG có giá trị nút là các

onehot-vector biểu diễn cho từng loại nút.

Trường hợp 2: Mô hình GCN thực nghiệm với CFG có giá trị nút là các vector nhúng của nút qua mô hình pre-trained DistilBERT.

e GCNConv(17, 64): Lớp đầu tiên của mang GCN, gọi là conv_layerl. Dây

là một lớp GCNConv với số lượng đặc trưng đầu vào là 17 và số lượng đặc

71

Training Loss Training acc Testing acc Testing Loss

Loss/acc

2 4 6 8 10

Epoch

Hình 4.4: Loss and accuracy mô hành DistiIBERT-BiLSTM (SmartBug Wild)

trưng dau ra là 64. GCNConv là một lớp tích chập trên đồ thi, nó cập nhật

đặc trưng của mỗi đỉnh dựa trên thông tin từ các đỉnh lân cận.

e GCNConv(64, 64): Lớp thứ hai của mang GCN, gọi là conv_ layer2. Tương

tự như convl, đây cũng là một lớp GCNConv với số lượng đặc trưng đầu vào là 64 và số lượng đặc trưng đầu ra là 64.

e GCNConv(64, 64): Lớp thứ ba của mang GCN, gọi là conv_layer3. Day

cũng là một lớp GCNConv với số lượng đặc trưng đầu vào là 64 và số lượng đặc trưng đầu ra là 64.

e Linear(in-features=64, out-features=2, bias=True): Lớp cuối cùng của mạng

GCN, gọi là lin. Day là một lớp Linear với số lượng đặc trưng đầu vào là

72

Listing 6 Các lớp trong mô hình GCN

GCN ¢

(conv_layer1): GCNConv(17, 64)

(conv_layer2): GCNConv(64, 64)

(conv_layer3): GCNConv(64, 64)

(lin): Linear(in_features=64, out_features=2, bias=True)

64 và số lượng đặc trưng đầu ra là 2. Lớp này chủ yếu dùng dé chuyển đổi

đặc trưng của đỉnh đã được cập nhật từ các lớp GCNConv trước đó thành dau ra cuôi cùng.

Mang GCN này có 3 lớp tích chập trên đồ thị (GCNConv) và một lớp kết nối

đầy đủ (Linear) để ánh xạ đặc trưng đỉnh đến đâu ra là 0 (nhãn không chứa lỗ hồng), 1 (nhãn chứa lỗ hồng).

4.7.3. Thực nghiệm 12

Hình 4.5 mô tả kết quả thực nghiệm mô hình GCN trên dữ liệu được trích

xuất từ Control-flow Graph của Smart Contract. Với các giá trị nút được biểu diễn bằng one-hot vec-tơ cho từng loại nút của đồ thị. Đồ thì CFg tổng cộng có

17 loại nút, nên one-hot vec-tơ sẽ có chiều là 17. Chỉ số Accuracy của mô hình duy trì ở mức khoảng 80% qua các epochs. Các chỉ số Precision, Recall, F1 biến

đổi với biên động lớn, chưa ổn định. Tuy chỉ số Precision cao trên 80%. Nhung

chỉ số Recall lại thấp biến động trong khoảng 50%, cho thấy việc dit đoán các

hàm có lỗ hổng còn kém. F1 cho thấy giá trị trung bình điều hòa của Recall và

Precision. F1 có giá trị khoảng 60%. Kết quả cho thấy việc trích xuất dit liệu

với các nút được biểu diễn bằng one-hot vec-tơ chưa mang lại hiểu quả cao.

73

Training and Validation Loss

Hình 4.5: Kết qua mô hành GCN phan loại dựa trên đồ thi CFG (biểu diễn

onehot vec-to của nút)

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 73 - 83)

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

(89 trang)