1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp An toàn thông tin: Nghiên cứu phương pháp phát hiện lỗ hổng bảo mật phần mềm bằng phương pháp học sâu

85 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu phương pháp phát hiện lỗ hổng bảo mật phần mềm bằng phương pháp học sâu
Tác giả Chau Thuan Phat, Vu Le Anh Quan
Người hướng dẫn ThS. Phan The Duy, ThS. Nguyen Van Kiet
Trường học Đại học Quốc gia Hồ Chí Minh
Chuyên ngành An Toàn Thông Tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 85
Dung lượng 44,53 MB

Nội dung

Nhiều công trình nghiên cứu được triển khai để cung cấp một phương phápphát hiện lỗ hong bảo mật một cách tự động, trong đó có ứng dụng mô hình học sâu Deep Learning.. Theo khảo sát của

Trang 1

ĐẠI HỌC QUỐC GIA HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

CHAU THUẬN PHAT - 19520827

VŨ LE ANH QUAN - 19520233

A STUDY ON DEEP LEARNING APPROACH FOR SOFTWARE

VULNERABILITY DETECTION

KY SU NGANH AN TOAN THONG TIN

GIANG VIEN HUGNG DAN:

ThS Phan Thé Duy

ThS Nguyễn Văn Kiệt

TP.Hồ Chí Minh - 2023

Trang 2

LỜI CẢM ƠN

Trong quá trình nghiên cứu và hoàn thành khóa luận, nhóm đã nhận được sự

định hướng, giúp đỡ, các ý kiến đóng góp quý báu và những lời động viên của

các giáo viên hướng dẫn và giáo viên bộ môn Nhóm xin bày tỏ lời cảm ơn tới

thầy Phan Thế Duy, thầy Nguyễn Văn Kiệt đã tận tình trực tiếp hướng dẫn,

giúp đỡ trong quá trình nghiên cứu.

Nhóm xin gửi lời cảm ơn đến gia đình và bạn bè đã động viên, đóng góp ý

kiến trong quá trình làm khóa luận.

Nhóm cũng chân thành cảm ơn các quý thầy cô trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM, đặc biệt là các thầy cô khoa Mang máy tính và Truyền thông, các thầy cô thuộc bộ môn An toàn Thông tin đã giúp đỡ nhóm.

Châu Thuận Phát Vũ Lê Anh Quân

Trang 3

CHUGNG 1 TONG QUAN DE TAI 2

11 Giới thiệu van đỀ ee 2

1.2 Giới thiệu những nghiên cứu liên quan 3

121 Mô hình họcsâu ẶẶẶẶ 3

1.2.2 Sơ đồ Program Dependence Graph (PDG) va Control Flow

Graph (CFG) 6 eee 4

1.2.3 Kithuật Program Slicing 5

1.2.4 Trích xuất các mẫu từ mã nguồn để làm dữ liệu huấn luyện 6

1.3 Những thách thức ee ee 6

1.4 Cấu trúc khóa luận tốt nghiệp 8

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 9

2.1 Lỗ hổng phần mềm SSS 9

21.1 Khái nệm Q2 9 2.1.2 Thực trạng hiện nay 2 00.00- 9

Trang 4

2.3 Mô hình học sâu 000000 2 ee ee 13

2.3.1 Mô hình RNN (Recurrent Neural Network) 13

2.3.2 Mô hình LSTM (Long short-term memory) 15

2.3.3 Mô hình BiLSTM (Bi-directional long short-term memory) 17 2.3.4 Mô hình GRU (Gated Recurrent Unit) và BiGRU (Bidi-rectional Gated Recurrent Unit) 18

2.3.5 Mô hình Transformer 0 21

2.3.6 Mohinh BERT 22

2.3.7 Mô hình CodeBERT 23

2.3.8 Mô hình GNN (Graph Neural Network) 24

2.3.9 Mô hình GCN (Graph Convolutional Network) 26

2.4 Các công trình nghiên cứu liên quan 28

2.4.1 Hướng 1 - Tu động hóa việc học các biểu diễn ngữ nghĩa của chương trình để dự đoán lỗ hổng 28

2.4.2 Hướng 2 - Dự đoán end-to-end lỗ hổng tràn bộ đệm từ mã nguồn thô thông qua mạng nơron 29

2.4.3 Hướng 3- Trích xuất từ mã nguồn các mẫu (code pattern) chứa lỗ hong để huấn luyện mô hình 30

2.4.4 Hướng 4- Giải pháp phát hiện 16 hổng cho mã nhị phân 31 CHƯƠNG 3 PHƯƠNG PHÁP PHÁT HIỆN LỖ HỒNG BẰNG HỌC SÂU 33 3.1 Ý tưởng chính cv 33 3.2 Phương pháp trích xuất các SeVC (Semantics-based Vulnerability Candidate) từ mã nguồn 2 0 0000000000 ee 36 3.2.1 Các định nghĩa cơ bản ee 37 3.2.2 Trích xuất SyVC từ mã nguồn 37

3.23 Chuyển đổi SyVC thành Se€VC 39

3.2.4 Gắn nhãn cho SeVC 2 ee 44 3.3 Token hóa các SeVC và nhúng vào các vectlor 45

Trang 5

3.4 Huấn luyện mô hình hoc sâu 47

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

4.1 Thiết lập thínghiệm 0.00.00 eee eee 51

4.2 Bộ dữ liệu và phương pháp trích xuất 51

4.21 Bộ dữ 4.2.2 Bộ dữ 4.3 Xây dựng mô

4.4 Xây dựng mô

lệu SySeVR cv 52 lệu Vuldeepecke 54 tình nhúng vector Ặ 56

nình học sâu để phát hiện và phân loại mã nguồn chứa lỗ hong c2 Sa 57

441 Mô hình GCN 000.000.0005 58 4.4.2 Mô hình RNN, LSTM, BLSTM, GRU, BGRU_ 59

TÀI LIỆU THAM KHẢO 73

Trang 6

DANH MỤC CÁC KÝ HIỆU, CÁC CHU VIET TAT

AST Cây cú phap trừu tượng

PDG Program Dependence Graph

CFG Control Flow Graph

CVE Common Vulnerabilities and Exposures

NVD_ National Vulnerability Database

SyVC Syntax-based Vulnerability Candidate SeVC Semantics-based Vulnerability Candidate

fs Forward Slice

bs Backward Slice fs’ Forward Slice lién thu tuc bs’ Backward Slice lién thu tuc

ps Program Slice

Trang 7

DANH MỤC CÁC HINH VE

Hình 11 Ví dụ về Control Flow Graph 5

Hình 1.2 Ví dụ về Program Dependence Graph - 6

Hình 1.3 Ví dụ về Program Slicing 7

Hình 2.1 Cay cấu trúc trừu tượng dựa trên thuật toán Euclid 12

Hình 2.2 Cấu trúc trải phẳng của mang nơ-ron truy hồi 13

Hình 23 Cau trúc của mô hình LSTM 15

Hình 2.4 Hình ảnh mô tả một cổng của mô-đun 17

Hình 25 Hình ảnh mô tả mô hình BLSETM 18

Hình 26 Cấu trúc về một mô-đun của GRU 19

Hình 2.7 Kiến trúc của mô hình Transformer 21

Hình 2.8 Mô hình huấn luyện BEBRT 23

Hình 29 Mô hình huấn luyện CodeBERT 24

Hình 2.10 Mô hinhGNN 2 2 2 so 25 Hình 2.11 Minh họa cách biểu diễn nút của GCN 27

Hình 3.1 Kiến trúc phương pháp đề xuất XGraphVulBERT phát hiện lỗ hổng bằng phương pháp học sâu 35

Hình 3.2 So đồ trích xuất các đặc điểm cú pháp và ngttnghia 36

Hình 3.3 Trích xuất SyVC từ chương trình 38

Hình 3.4 Tạo sơ đồ PDG cho SyVC 'data`” 42

Hình 3.5 Tạo program slice cho SyVC 'data` 43

Hình 3.6 Chuyển đổi program slice thành SeVC 43 Hình 3.7 Các bước sử dung mô hình đề xuất GCN để huấn luyện va

dự đoán kết qua 2 Q Q Q Q TQ Q 48

Trang 8

Hình 4.1 Biểu đồ phan bố ty lệ gán nhãn cho bộ dữ liệu SeVC_ 5ã

Hình 4.2 Biểu đồ phân bố tỷ lệ gán nhãn cho bộ dữ liệu Vuldeepecker 57

Hình 43 Biểu đồ so sánh kết quả đánh giá các phương pháp nhúng

vector trên bộ dữ liệu Vuldeepecker [l4] - 62

Hình 44 Biểu đồ so sánh các chỉ số đánh giá của các mô hình học

sâu huấn luyên sử dụng phương pháp nhúng CodeBERT trên tap

dữ liệu Vuldeepecker [l4] ẶẶ So 64

Hình 4.5 Biểu đồ so sánh kết quả đánh giá các phương pháp nhúng

vector trên bộ dữ liệu SySeVR [l5] 65

Hình 46 Biểu đồ so sánh các chỉ số đánh giá của các mô hình học

sâu huấn luyên sử dụng phương pháp nhúng CodeBERT trên tập

dữ liệu 5y5eVRAD⁄27 416 Ses G7

Trang 9

DANH MUC CAC BANG BIEU

Bang 2.1 Bảng thống kê các bai báo theo hướng l 29

Bang 2.2 Bảng thống kê các bài báo theo hướng 2_ 30

Bảng 2.3 Bảng thống kê các bài báo theo hướng 3_ 31

Bảng 2.4 Bảng thống kê các bài báo theo hướng 4 32

Bang 4.1 Bảng thống kê số lượng SeVC sau khi được gán nhãn 54

Bảng 4.2 Bảng thống kê số lượng code gadget sau khi được gán nhãn 56 Bảng 4.3 Bảng so sánh kết quả đánh giá các phương pháp nhúng vector trên bộ dữ liệu Vuldeepecker [H4] 61

Bang 4.4 Bảng so sánh kết quả đánh giá các mô hình sử dụng phương pháp nhúng CodeBERT trên bộ dữ liệu Vuldeepecker [14| 63

Bảng 4.5 Bảng so sánh kết quả đánh giá các phương pháp nhúng vector trên bộ dữ liệu SySeVR[l5|} 64

Bảng 4.6 Bảng kết quả đánh giá phân loại mã nguồn chứa lỗ hong dựa trên bộ dữ liệu SySeVR [ö] 66

Trang 10

TÓM TẮT ĐỀ TÀI

Trong thời gian gần đây, việc phát hiện các lỗ hổng bảo mật trong ứng dụngthu hút được nhiều sự quan tâm vì sự nguy hiểm của các lỗ hồng Tác động của

chúng gây ảnh hưởng không nhỏ đến việc bảo mật và đảm bảo an toàn thông

tin Nhiều công trình nghiên cứu được triển khai để cung cấp một phương phápphát hiện lỗ hong bảo mật một cách tự động, trong đó có ứng dụng mô hình

học sâu (Deep Learning) Deep Learning là một bộ phận của Machine Learning

và có tác dụng hỗ trợ cho máy tính tự huấn luyện để có thể thực hiện mọi tác

vụ tương tự như con người Đối với công việc yêu cầu cao về độ chính xác như

phát hiện lỗ hồng thì Deep Learning rất phù hợp do khả năng xử lí các dữ liệu

về ngôn ngữ rất tốt và có độ chính xác cao Các nghiên cứu vẫn đang được phát

triển để phát hiện được nhiều loại lỗ hổng ở nhiều ngôn ngữ khác nhau

Sau khi nghiên cứu, nhóm chúng tôi nhận thấy đây là một trong những đề tài

có tiềm năng và có tính ứng dụng thực tế Do đó, chúng tôi mong muốn cung

cấp phương pháp phát hiển 16 hong bảo mật tối ưu và có độ chính xác cao thông

qua những kết quả thực nghiệm mà chúng tôi đã thực hiện.

Trang 11

CHƯƠNG 1 TONG QUAN DE TÀI

Chương này giới thiệu về van đề và các nghiên cứu liên quan Đồng thời,

trong chương này chúng tôi cũng trình bày phạm vi và cấu trúc của Đồ án.

1.1 Giới thiệu vẫn đề

Trong những năm gần đây, với sự phát triển không ngừng của công nghệ,

ngày càng có nhiều phần mềm được phát triển bởi con người Trong khi mọi người tận hưởng sự tiện lợi do phần mềm mang lại, họ cũng bị đe dọa bởi các

lỗ hong phần mềm Có thể nói, lỗ hong phần mềm là một trong những vấn đề

lớn nhất đe dọa đến hoạt động bình thường của phần mềm Đối với người dùng

phần mềm, thiệt hại kinh tế trực tiếp và gián tiếp do lỗ hong phần mềm trên

toàn thế giới gây ra đã vượt quá hàng chục tỷ đô la.

Thật vậy, một thực tế không thể chối cãi là hầu hết các phần mềm đều có

nhiều 16 hổng khác nhau Có nhiều loại lỗ hong phần mềm, chang hạn nhưCVE-2015-8558 [21], được giải thích chỉ tiết trên CVE [4] Lỗ hong tồn tại cànglâu thì càng dễ bị tin tặc khai thác và thiệt hại cho công ty, tổ chức càng lớn[26] nên khả năng tự động phát hiện lỗ hồng trong phần mềm trong một khoảng

thời gian nhất định đã trở thành một trong những những nghiên cứu tiên tiến

nhất hiện nay.

Trong khi đó, công nghệ học sâu cho chúng ta khả năng tự động phát hiện

các lỗ hổng chính xác hơn Với sự cải cách và phát triển liên tục của công nghệ

học sâu trong những năm gần đây, đã có những tiến bộ vượt bậc trong lĩnh vực

xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) Đặc biệt, hàng

loạt mô hình như GPT [22] và BERT [7] đã đưa công nghệ NLP tiến một bước

dài Mã nguồn thực chất là một văn bản ở định dạng đặc biệt Việc sử dụng

Trang 12

công nghệ NLP để xử lý mã là khả thi về mặt logic Trên thực tế, các mô hình

như CodeBERT [8] đã được đề xuất bởi một số hoc giả và một số nhiệm vụ ở mức code-level đã được giải quyết và đã đạt được một số kết quả nhất định.

Những kết quả này cho thấy việc sử dụng công nghệ NLP để nghiên cứu côngnghệ phát hiện lỗ hồng tự động có rất nhiều tiềm năng để phát triển

Tuy nhiên, có rất nhiều hướng nghiên cứu sử dụng học sâu để phát hiện lỗ

hồng bảo mật Theo khảo sát của Peng Zeng, Guanjun Lin và các cộng sự [33],

có 4 hướng nghiên cứu chính: Đầu tiên là sử dụng mô hình học sâu để học các

biểu diễn ngữ nghĩa của chương trình của Wang [30], thứ hai là giải pháp có thểphát hiện 16 hồng Buffer Overflow end-to-end của Choi [3], thứ ba là trích xuất

từ mã nguồn các mẫu (code pattern) chứa lỗ hồng để huấn luyện mô hình của

Li [14], thứ tư là giải pháp phát hiện lỗ hong cho mã nhị phân của Linu [19]

Các hướng nghiên cứu nêu trên đều có ưu điểm và nhược điểm riêng Từ

những kết quả nghiên cứu, nhóm nhận thấy hướng nghiên cứu trích xuất các

mẫu chứa lỗ hồng để làm bộ dữ liệu huấn luyện đạt được kết quả rất khả quan,

có hiệu quả tương đối tốt và eó khả năng phát triển thêm trong tương lai Tiêubiểu cho hướng nghiên cứu này ngoài bài báo về VulDeePecker của Li [14], còn

có SySeVR của Li [15], VulDeBERT của Kim [1]], Do đó, nhóm muốn đề xuất một mô hình nghiên cứu sử dụng một mô hình pre-train là CodeBERT để thực

hiện nhúng các vector, sau đó đưa các vector vào các mô hình cơ bản như LSTM,

BiLSTM và đánh giá kết quả mô hình của nhóm với các bài báo trước đó.

1.2 Giới thiệu những nghiên cứu liên quan

1.2.1 Mô hành học sâu

Deep Learning, hay học sâu, là một lĩnh vực con của Machine Learning, nơi

mà các máy tính có khả năng tự học và cải thiện bản thân thông qua việc ấp

dụng các thuật toán Deep Learning đã đạt được những thành tựu đáng kể trong

nhiều lĩnh vực như nhận dạng hình ảnh, nhận dạng giọng nói, dịch máy, và thậm

Trang 13

chí chơi game.

Deep Learning được xây dựng dựa trên các khái niệm phức tạp hơn nhiều

so với Machine Learning và chủ yếu hoạt động bằng cách sử dụng mạng nơ-ron

nhân tạo được thiết kế để xử lý thông tin theo cách tương tự như hệ thốngnơ-ron trong não người Các mạng nơ-ron này bao gồm nhiều lớp an (hiddenlayers) để xử lý dữ liệu phức tap Các lớp an này giúp mạng nơ-ron hoc đượccác mức độ trừu tượng và biểu diễn dữ liệu theo cách phức tạp hơn Điều này

cho phép Deep Learning giải quyết các vấn đề phức tạp hơn so với các phương pháp Machine Learning truyền thống.

Một trong những lợi ích quan trọng của Deep Learning là khả năng học từ dữ

liệu lớn Với sự phát triển của công nghệ và khả năng tính toán, Deep Learning

đã trở thành một công cu mạnh mẽ để giúp cải thiện tự động hóa quá trình

phân tích dữ liệu, nhận diện mẫu, dự đoán và thực hiện nhiều tác vụ khác nhau.

1.2.2 Sơ đồ Program Dependence Graph (PDG) va Control Flow

Graph (CFG)

Sơ đồ Phụ thuộc Dữ liệu (Program Dependence Graph - PDG) và Sơ đồ Ngữ

nghĩa Diéu khiển (Control Flow Graph - CFG) là hai công cụ phân tích mã

nguồn được đề xuất bởi Jeanne Ferrante vào năm 1987 [9] Cả hai sơ đồ này

được sử dụng giúp biểu diễn và phân tích các đặc điểm ngữ nghĩa quan trọng

từ các hàm trong của mã nguồn chương trình.

Trang 14

int isabsequal(int x, int y)

Hình 1.1: Ví du vé Control Flow Graph

1.2.3 Ki thuật Program Slicing

Program Slicing là ki thuật trích xuất các slice từ chương trình Ki thuật này được công bố bởi Frank [27] năm 1995 Slice được trích xuất sử dụng trong

nghiên cứu này sẽ bao gồm các đặc điểm et pháp và ngữ nghĩa của chương trình

Slice sau đó sẽ được chuyển thành vector làm đầu vào để huấn luyện cho mô

hình học sâu.

Trang 15

Hinh 1.2: Vi du vé Program Dependence Graph

1.2.4 Trích xuất các mau từ mã nguồn để lam dữ liệu huấn luyện

Ngoài việc chọn mô hình học sâu hiệu quả thì việc trích xuất các mẫu làm dữ

liệu đầu vào cũng quan trọng không kém, do nó sẽ ảnh hướng đến kết quả đầu

ra của mô hình Với nghiên cứu này, nhóm chúng tôi chọn phương pháp trích

xuất các mẫu của Li [15] bằng việc sử dụng cây cú pháp trừu tượng (Abstract

syntax tree - AST) nhằm tách các đặc điểm về cú pháp (syntax) của các đoạn

mã chứa lỗ hồng, sử dụng hai sơ đồ Program Dependence Graph (PDG) để diễn

tả sự phụ thuộc dữ liệu, Control Flow Graph (CFG) nhằm tách các đặc điểm

về ngữ nghĩa (semantic) cùng với kĩ thuật Program Slicing để tách các slice từ

mã nguồn làm đầu vào cho mô hình.

1.3 Những thách thức

Dù có thể phát hiện lỗ hồng với độ chính xác cao, tuy nhiên hầu hết các nghiên cứu chỉ hoạt động với những mã nguồn C và C++ và chỉ phát hiện được

Trang 17

một số loại lỗ hổng nhất định Nguyên nhân chủ yếu là do việc thiếu số lượng

dữ liệu mã nguồn chứa lỗ hồng của những ngôn ngữ khác và việc trích xuất cácmẫu từ mã nguồn chỉ hoạt động với vài loại lỗ hổng Do là những thách thức

mà hiện tại nhóm chúng tôi vẫn đang tiếp tục nghiên cứu.

1.4 Cau trúc khóa luận tốt nghiệp

Chúng tôi xin trình bày nội dung của Luận án theo cấu trúc như sau:

e Chương 1: TONG QUAN DE TÀI

Giới thiệu tổng quan về đề tài của Khóa luận và những nghiên cứu liên

quan.

e Chương 2: CƠ SỞ LY THUYET

Trình bày cơ sở lý thuyết và kiến thức nền tảng liên quan đến đề tài.

e Chương 3: PHƯƠNG PHÁP PHÁT HIEN LO HỒNG BẢO MAT

PHAN MEM BẰNG HỌC SÂU

Trình bày phương pháp phát hiện lỗ hồng bằng học sâu.

e Chương 4: THÍ NGHIỆM VÀ ĐÁNH GIÁ

Trình bày thực nghiệm và đánh giá.

e Chương 5: KET LUẬN

Kết luận và hướng phát triển của đề tài

Trang 18

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

Chương này trình bày cơ sở lý thuyết của nghiên cứu: Bao gồm lỗ hổng phần

mềm, cây cú pháp trừu tượng (AST), kỹ thuật chuyển đổi từ đoạn mã sang

vector và mô hình học sâu.

2.1 Lỗ hồng phần mềm

2.1.1 Khái niệm

Lỗ hồng phần mềm là một lỗi, một điểm yếu hoặc một khuyết điểm trong

phần mềm hoặc hệ điều hành và có thể bị ảnh hưởng bởi các tấn công hoặc các hành động gây hại cho hệ thống hoặc thông tin mà phần mềm đó đang xử lý.

Các lỗ hổng phần mềm có thể bị khai thác bởi các kẻ tấn công để thực hiện các

hành vi như truy cập trái phép hệ thống, đánh cắp các thông tin nhạy cẩm, can trở hoạt động bình thường của hệ thống hay tạo điều kiện để thực hiện các tấn

công khác.

Với tốc độ phát triển của các kỹ thuật tấn công mới, mức độ nghiêm trọngcủa lỗ hong phần mềm ngày càng gia tăng Tất cả các hệ thống đều tiềm anchứa các lỗ hổng, tuy nhiên, câu hỏi đặt ra là liệu những lỗ hồng này có bị khai

thác và gây ra thiệt hại hay không.

2.1.2 Thực trạng hién nay

Ngày càng có nhiều cuộc tấn công mạng bắt nguồn từ lỗ hong phần mềm,dẫn đến rò ri dữ liệu người dùng và ton hại danh tiếng của công ty [17] Mặc dùnhiều nghiên cứu đã được đề xuất để hỗ trợ phát hiện lỗ hổng, lỗ hong vẫn làmối đe dọa đối với hoạt động an toàn của cơ sở hạ tầng CNTT [29] Số 16 hồng

Trang 19

được tiết lộ trong Common Vulnerabilities and Exposures (CVE) va National

Vulnerability Database (NVD) dai diện cho các kho lưu trữ dữ liệu lỗ hong đã

tăng từ khoảng 4.600 trong năm 2010 lên 8.000 vào năm 2014 trước khi tăng

vọt lên hơn 17.000 vào năm 2017 [14], [23] Những lỗ hổng này có thể đã gây ra

các mối đe dọa tiềm an đối với việc sử dụng an toàn các sản phẩm và thiết bị

kỹ thuật số trên toàn thé giới [5].

2.1.3 Cách thức khai thác lỗ hổng

Khi một lỗ hồng bảo mật được phát hiện, kẻ tấn công có thể tận dụng nóbằng cách viết các chương trình để xâm nhập và kiểm soát thiết bị đó Khithành công trong việc truy cập vào mục tiêu, những kẻ tấn công có thể tiếnhành nghiên cứu hệ thống để tìm hiểu về nó Từ đó, chúng có thể thực hiện

nhiều hành vi khác nhau như truy cập vào các tệp tin quan trọng hoặc thực thi

các chương trình độc hại Nhờ vào quyền kiểm soát đó, kẻ tấn công có thể kiểm

soát máy tính và lấy cắp dit liệu từ thiết bị của nạn nhân.

Các lỗ hồng đôi khi được phát hiện chính bởi các nhà phát triển phần mềm

hoặc nhờ cảnh báo từ người dùng và nhà nghiên cứu Tuy nhiên, trong một số

trường hợp, tin tặc hoặc các tổ chức gián điệp có thể khám phá cách thức xâmnhập vào hệ thống nhưng không thông báo cho nhà phát triển Những lỗ hổngnhư thế được gọi là "zero day", bởi vì nhà phát triển chưa có cơ hội để vá chúng

Kết quả là, phần mềm hoặc phần cứng tiếp tục bị đe dọa cho đến khi có bản vá hoặc sửa lỗi được phân phối cho người dùng.

Lỗ hổng phần mềm có thể dẫn đến hậu quả nghiêm trọng, như cho phép tintặc tiếp cận và chiếm quyền kiểm soát thiết bị Để ngăn chặn điều này, việc pháthiện và vá lỗ hong là cực kỳ quan trọng Tuy nhiên, đôi khi 16 hong chi được

phát hiện sau khi bị khai thác, gây thiệt hại lớn cho người dùng Để giảm thiểu

rủi ro, việc cập nhật phần mềm và phần cứng thường xuyên để áp dụng các bản

vá và bản sửa lỗi là cần thiết.

Trang 20

2.2 Cây cú pháp trừu tượng (Abstract Syntax Tree

-AST)

2.2.1 Khai niém

Trong lĩnh vực khoa học máy tinh, cây cú pháp trừu tượng (Abstract Syntax

Tree) là một biểu diễn cây của cấu trúc cú pháp trừu tượng của một đoạn văn

bản (thường là mã nguồn) được viết bằng ngôn ngữ chính thức Mỗi nút trong cây đại diện cho một cấu trúc xuất hiện trong văn bản.

Sự trừu tượng trong cây cú pháp được thể hiện bởi việc nó không biểu diễn

mọi chỉ tiết xuất hiện trong cú pháp thực, mà chỉ tập trung vào các chỉ tiết liên quan đến cấu trúc và nội dung Ví dụ, các dấu ngoặc đơn không cần thiết trong

cấu trúc cây không được biểu điễn dưới dạng các nút riêng biệt Tương tự, một

cấu trúc cú pháp như câu lệnh điều kiện "if" eó thể được biểu diễn bằng một

nút đơn có ba nhánh.

Cây cú pháp trừu tượng là một công cụ quan trọng trong phân tích cú phấp

của ngôn ngữ lập trình Ñó cung cấp một biểu diễn cấu trúc trừu tượng của mãnguồn, giúp các chương trình phân tích và biên dịch hiểu và xử lý mã nguồn một

cách dễ dàng Sự trừu tượng trong cây cú pháp cho phép chúng ta tập trung

vào các thành phần cú pháp quan trọng và bỏ qua các chỉ tiết không cần thiết.

Điều này giúp quá trình phân tích và xử lý ngôn ngữ đơn giản hơn, đồng thời

cung cấp một cấu trúc dễ dàng để làm việc và tương tác với mã nguồn

Trang 21

b:=b<a return a

Hinh 2.1: Cay cấu trúc trừu tượng dua trên thuật toán Euclid

2.2.2 Thiết kế của AST

Thiết kế của AST thường được liên kết chặt chẽ với thiết kế của trình biên dịch Yêu cầu cốt lõi của thiết kế bao gồm những điều sau đây:

e Các biến phải được giữ nguyên, cũng như vị trí khai báo của chúng trong

mã nguồn.

e Thứ tự của các câu lệnh thực thi phải được biểu diễn và xác định rõ ràng

e Các thành phần bên trái và bên phải của toán tử nhị phân phải được lưu

trữ và xác định chính xác.

e Các định danh và giá trị được gán của chúng phải được lưu trữ trong các

Trang 22

RNN là một lớp mang nơ-ron trong đó các kết nối giữa các nút có thể tao ra

một chu kỳ, cho phép đầu ra từ một số nút ảnh hưởng đến đầu vào tiếp theo

đến cùng một nút RNN được thiết kế đặc biệt để đáp ứng yêu cầu biểu diễn

ngôn ngữ bằng cách kết nối các từ trong quá khứ với các từ hiện tại, từ đó tạo

ra một mối liên hệ chuỗi Nếu chúng ta xem xét mỗi từ một cách độc lập, chúng

ta sẽ không thể hiểu được ý nghĩa của câu nói Tuy nhiên, thông qua việc sửdụng các từ xung quanh, chúng ta có thể hiểu rõ trọn vẹn một câu hoàn chỉnh

đ) ® @® @® đ)

Hình 2.2: Cấu trúc trải phẳng của mạng no-ron truy hồi

Trong cấu trúc mô tả ở Hình 2.2, mạng nơ-ron sử dụng đầu vào là một vector

+; và tao ra một đầu ra là một giá trị ẩn hy Đầu vào x; được truyền vào một

mạng no-ron A có tính chất truy hồi Sau đó, kết quả của mạng nơ-ron này được

chuyển tiếp đến đầu ra hy

Công thức cho trạng thái hiện tại của ñh¿ là:

Trang 23

Ap dung thém ham Activation tanh:

hy = tanh(Wrphs-1 + Went) (2.2)

Trong đó, W là trong số của mô hình, b là vector an đơn lẻ, Why, là trọng

số của trạng thái an trước đó, W/„„ là trọng số của trạng thái đầu vào hiện tai,

tanh là ham Activation.

Kết quả dau ra:

Trong đó, là trang thái đầu ra, Wp, là trọng số tại trạng thái dau ra.

Trong mạng nơ-ron truy hồi, vòng lặp A đóng vai trò không thể thiếu va là

một phan quan trọng trong cách mạng nơ-ron hoạt động N6 tao ra một chuỗi

lặp lại của cùng một cấu trúc, cho phép các thành phần kết nối với nhau một cách liền mạch theo mô hình chuỗi Mỗi vòng lặp nhận đầu ra từ vòng lặp trước làm đầu vào và tiếp tục quá trình này.

Kiến trúc RNN được ứng dụng vào nhiều công việc như: Nhận diện giọng nói,

các tác vụ ngôn ngữ, chú thích hình ảnh,

2.3.1.2 Hạn chế

Hạn chế lớn nhất của RNN là không thể giải quyết được những phụ thuộc

dai hạn (long-term dependecies), Ví dụ: "Trời hôm nay rất nắng Tôi đang di

đến trường Toi đang rất néng" Để điền được từ móng, chúng ta cần phải xét

ngữ cảnh dài hơn so với một câu, tức là phải biết được ngữ cảnh "trời rất nắng"

Trang 24

thì ta mới điền được Thực nghiệm cho thấy, RNN giải quyết các liên kết ngữ

nghĩa dài hạn này rất kém.

2.3.2 Mô hành LSTM (Long short-term memory)

2.3.2.1 Tong quan vé LSTM

LSTM là một phiên bản sửa đổi của RNN, được sinh ra dé giúp ghi nhớ dit

liệu quá khứ trong bộ nhớ dễ dang hơn LSTM được công bố bởi Hochreiter và

Schmidhuber [10] và sau đó được cải tiến và pho biến nhờ sự đóng góp của nhiềunhà nghiên cứu khác LSTM hiện nay là một trong những mô hình học sâu phổ

biến nhất do hiệu quả cao của nó với nhiều bài toán khác nhau.

Cấu trúc của LSTM giống như RNN, là một mạng hồi quy gồm một chuỗi các module lặp lại của mạng nơ-ron Tuy nhiên, module trong LSTM có cấu

trúc khác biệt so với RNN, với ba cổng (gate) bao gồm:

Input Gate Output Gate

Hình 2.3: Cấu trúc của mô hình LSTM

Trang 25

2.9.2.2 Cấu trúc của mô hành LSTM

Ý tưởng cốt lõi của LSTM là sử dụng trạng thái tế bào (cell state), biểu diễn

bởi một đường ngang chạy qua phía trên của module trong Hình 2.3.

LSTM có khả năng loại bỏ hoặc bổ sung thông tin vào trạng thái tế bào mộtcách linh hoạt, và điều này được thực hiện thông qua các cổng (gate) được điềuchỉnh một cách can thận Các cổng hoạt động như bộ lọc thông tin, và chúng

được thực hiện bằng cách kết hợp một lớp mang sigmoid và một phép nhân.

Input Gate là cổng đầu tiên trong LSTM, có chức năng xác định giá trị nào

từ dữ liệu đầu vào sẽ được sử dụng để điều chỉnh bộ nhớ Hàm sigmoid được

sử dụng để quyết định giá trị nào sẽ được truyền qua cổng (có giá trị từ 0 đến1), và hàm tanh được sử dụng để tạo ra các trọng số cho các giá trị truyền quacổng, quyết định mức độ quan trọng của chúng trong khoảng từ -1 đến 1

y= ơ(W; k [hi—-1, #:] + b;) (2.4)

C, = tanh(We + [hị~1 21] + be) (2.5)

Trong đó, i đại diện cho Input Gate va Œ đại diện cho trạng thái tế bao.

Cổng tiếp theo là Forget Gate dùng để xác định các chỉ tiết cần được loại bỏ

khỏi trạng thái tế bào của khối hiện tại Các chi tiết bị loại bỏ này được quyết định bởi ham sigmoid Hàm này sẽ xem xét trạng thái trước đó h¿_¡ và đầu vào hiện tại z¿, và sẽ trả về một giá trị từ 0 đến 1 cho mỗi phan tử trong trang thái

tế bào trước đó Cy_-1.

fi = a(Wr , (he, Xt] + br) (2.6)

Trong đó, ƒ đại diện cho Forget Gate.

Cuối cùng là Output Gate, có tác dụng quyết định đầu ra dựa trên đầu vào

và bộ nhớ của khối hiện tại Hàm sigmoid được sử dụng để quyết định giá trịnào sẽ được truyền qua cổng (có giá trị từ 0 đến 1), và hàm tanh được sử dụng

Trang 26

để tạo ra trọng số cho các giá trị được truyền qua cổng, quyết định mức độ quan

trọng của chúng trong khoảng từ -1 đến 1 Kết quả của ham sigmoid sau đó

được nhãn với đầu ra của hàm tanh để tao ra đầu ra cuối cùng của LSTM

Oo —= ơ(Ms : [ht-1, :] + bo) (2.7)

Trong đó, o đại diện cho Output Gate.

— `—

Hinh 2.4: Hình ảnh mô tả một cổng của mé-dun

2.3.3 Mô hành BiLSTM (Bi-directional long short-term memory)

LSTM hai chiều (Bi-directional LSTM) là mang nơ-ron hồi quy được sử dung

phổ biến trong xử lý ngôn ngữ tự nhiên Không giống như LSTM tiêu chuẩn,

đầu vào của BiLSTM chảy theo cả hai hướng và có khả năng sử dụng thông tin

từ cả hai phía Điều này cho phép mạng nơ-ron nắm bắt và sử dụng thông tin

giữa các từ và cụm từ theo cả hai hướng của chuỗi.

BiLSTM bổ sung thêm một lớp LSTM theo hướng ngược lại với lớp LSTM

ban đầu, nhằm tạo một hướng đảo ngược của luồng thông tin Lúc này, mô hình

sẽ có hai lớp LSTM với hướng ngược nhau Sau đó, kết hợp các đầu ra từ cả hai

lớp LSTM theo một số cách, chang hạn như tính trung bình, tính tổng, nhân

hoặc nối lại.

Trang 27

Xt

inputs

Kiểu kiến trúc này có nhiều ưu điểm quan trọng trong việc xử lí ngôn ngữ

tự nhiên Một trong những lợi thế chính của nó là mọi thành phần trong chuỗi đầu vào đều có thông tin từ cả quá khứ và hiện tại Điều này tạo ra khả năng cho BiLSTM tao ra đầu ra có ý nghĩa hơn, bằng cách kết hợp thông tin từ cả

hai hướng sử dụng các lớp LSTM.

BiLSTM sẽ có đầu ra khác nhau cho mọi thành phần của chuỗi Do đó, mô

hình BiLSTM có lợi trong nhiều nhiệm vu xử lí ngôn ngữ tự nhiên, chang hạn

như dịch thuật, phân loại câu và nhận dạng thực thể Ngoài ra, nó còn tìm thấy

các ứng dụng của nó trong nhận dạng giọng nói, dự đoán cấu trúc protein, nhận

dạng chữ viết tay và các lĩnh vực tương tự.

2.3.4 Mô hành GRU (Gated Recurrent Unit) va BiGRU

(Bidirec-tional Gated Recurrent Unit)

2.3.4.1 Tổng quan vé GRU

GRU được giới thiệu bởi Cho [2], nhằm mục đích giải quyết van dé vanishing gradient đi kèm với mạng RNN tiêu chuẩn GRU cũng có thể được coi là một

Trang 28

biến thể của LSTM vì cả hai đều được thiết kế tương tự nhau và trong nhiều

trường hợp, tạo ra kết quả xuất sắc như nhau.

Để giải quyết vấn đề vanishing gradient của RNN tiêu chuẩn, GRU sử dụnghai cổng quan trọng là cổng cập nhật (update gate) và cổng đặt lại (reset gate).Các cổng này quyết định thông tin nào sẽ được truyền đi và đóng góp vào đầu

ra của mô hình Diều đặc biệt là cổng cập nhật và cổng đặt lại có khả năng đượchuấn luyện để giữ lại thông tin quan trọng trong một khoảng thời gian dài mà

không bị mất dần theo thời gian, đồng thời loại bỏ những thông tin không cần thiết cho quá trình dự đoán.

Hình 2.6: Cấu trúc vé một mô-đun của GRU

2.3.4.2 Chi tiết vé cách hoạt động của GRU

Update Gate hoạt động tương tự như Input Gate và Forget Gate của LSTM.

Cổng này quyết định loại bỏ thông tin nào và thêm thông tin mới nào Công

thức như sau:

Trang 29

Trong đó, z đại diện cho Update Gate.

Reset Gate là một cổng khác được sử dụng để quyết định lượng thông tin

trong quá khứ cần quên Công thức như sau:

Trong đó, r đại diện cho Reset Gate.

Để có thể tính toán được vector hạ, trước tiên ta cần phải tính giá tri hy trước.

Khi tính toán giá tri này, ta không xem xét toàn bộ vector h; mà sẽ thông qua

Reset Gate để quyết định lượng thông tin cần chọn từ vector hy Lúc này hy

được tính như sau:

hy = tanh(WỨ% - [re * hị—1, 04] + bạ) (2.11)

Sau khi đã có giá trị của hu, ta sử dung giá trị Update Gate z để quyết định

những thông tin nào từ hy sẽ được đưa vào h¿ và sử dụng (1 — x) để quyết định

cần giữ những thông tin gì từ vector h¿_¡ trước đó Công thức như sau:

hy = (L— 4) * hea +e * het (2.12)

2.3.4.8 Tổng quan vé BiGRU

BiGRU cũng giống như BiLSTM đưa dữ liệu đầu vào từ hai phía có chiều

ngược nhau Về cấu trúc của mô hình BiGRU thì bao gồm 2 lớp GRU có chiều

ngược nhau, sau đó kết hợp đầu ra từ hai lớp để đưa ra kết quả cuối cùng

BiGRU được tạo ra cho việc xử lý các tác vụ liên quan đến ngôn ngữ tự nhiên

và độ hiệu quả của mô hình ngang ngửa với BiLSTM.

Trang 30

2.3.5 Mô hành Transformer

Transformer [28] là mô hình sử dụng cơ chế attention cho phép tính toán trọng số của từng phần tử đầu vào, cho phép mô hình tập trung vào các thành phần quan trong của dữ liệu đầu vào Ngoài ra Transformer giải quyết hai vấn

đề của các mô hình dựa trên RNN bao gồm có thể xử lý các đoạn văn bản lớn

và các câu dài và cho phép huấn luyện song song, giúp tăng tốc độ huấn luyện

và cải thiện độ chính xác của mô hình.

Trang 31

Cấu trúc của Transformer được xây dựng trên nền tảng kiến trúc

Encoder/De-coder Phan Encoder của Transformer bao gồm hai lớp là lớp Multi-Head

At-tention và lớp Feed Eorward Ở Decoder thì bao gồm ba lớp, ngoài hai lớp giống

ở Encoder thì còn có thêm một lớp Multi-Head Attention Một mô hình

Trans-former sẽ bao gồm nhiều Encoder va Decoder, do đó TransTrans-former có thể huấn

luyện đồng thời các từ.

Encoder va Decoder của mô hình sử dụng lớp Head Attention

Multi-Head Attention đơn giản là nhiều Self Attention hợp lại với nhau Self Attention

là cơ chế mã hóa một từ dựa vào thông tin của những từ khác liên quan đến từ

đó, hiểu đơn giản là cơ chế này sẽ tìm kiếm các từ sao cho có liên quan nhiều

nhất với từ đang được mã hóa, sau đó mã hóa tất cả thông tin trên Với một

Self Attention chúng ta chỉ mã hóa được một mẫu thông tin, để có thể mã hóa

được nhiều mẫu, chúng ta sử dụng nhiều Self Attention, tạo thành Multi-Head

Attention Lúc này, mô hình ngoài mã hóa một từ, nó còn có thể chú ý đến các

từ trước và sau từ đó, giúp cải thiện độ chính xác cho mô hình.

2.3.6 Mô hành BERT

BERT [7] là mô hình mở rộng của Transformer, sử dụng kiến trúc bao gồm

một số lượng lớn các lớp Transformer để mã hóa thông tin đầu vào Ngoài ra,

mô hình này cung cấp khả năng sử dụng mô hình đã được đào tạo trước đó

(pre-training) để điều chỉnh và tái sử dụng (ñne-tuning) mô hình trên dữ liệu

mới.

Giai đoạn pre-training đào tạo mô hình trên một lượng lớn dữ liệu văn bản

không có nhãn (unlabeled data) để học các đặc trưng ngôn ngữ tổng quát, bao

gồm cả cấu trúc ngữ pháp, từ vựng và ngữ nghĩa của các từ Sau quá trình

pre-training, mô hình đã học được kiến thức về ngôn ngữ tự nhiên và có khả

năng biểu diễn từ và câu một cách hiệu quả

Sau đó, mô hình được tiếp tục huấn luyện trong giai đoạn fine-tuning để thựchiện các tác vụ cụ thể, bao gồm việc huấn luyện trên tập dữ liệu chứa các chương

Trang 32

trình phần mềm Quá trình fine-tuning này giúp tiết kiệm tài nguyên và thời

gian so với việc huấn luyện mô hình mới từ đầu.

CodeBERT [8] được giới thiệu là một mô hình BERT đào tạo trước

(pre-trained) được xây dựng bằng cách kết hợp cả mã hóa ngôn ngữ tự nhiên (NL)

và mã hóa ngôn ngữ lập trình (PL) để tạo ra mô hình tổng thể phù hợp để tinh

chỉnh cho bài toán huấn luyện trên mã nguồn Mô hình này được đào tạo trên

bộ dữ liệu lớn từ các kho lưu trữ mã nguồn và các tài liệu lập trình, nhờ đó giúp cải thiện hiệu quả trong quá trình huấn luyện trên các chương trình phần mềm

và phân tích mã nguồn.

Trong giai đoạn pre-train, dit liệu đầu vào được tạo thành là sự kết hợp của

hai phân đoạn với token phân tách đặc biệt, cụ thể là [CLS], wi, tua, tua, [SEP]

,C1, C2; +;Cm; (EOS) Trong đó, một phân đoạn là văn ban ngôn ngữ tự nhiên va

phân đoạn còn lại là mã từ một ngôn ngữ lập trình nhất định [CLS] là một

token đặc biệt ở phía trước của hai phân đoạn Theo cách xử lý văn bản tiêu

Trang 33

wy ——> (MASK eet * Ww, — —- replaced

& * [MASK], —pi _ C tạ — => replaced

Hình 2.9: Mô hành huấn luyện CodeBERT

chuẩn trong Transformer thì văn bản ngôn ngữ tự nhiên là một chuỗi các từ và

chia nó thành các WordPiece [31] Chúng tôi coi một đoạn mã là một chuỗi các

token Dau ra của CodeBERT bao gồm (1) biểu diễn vector theo ngữ cảnh củatừng token, cho cả ngôn ngữ tự nhiên va mã, và (2) biểu diễn của [CLS], hoạtđộng như một chuỗi biểu diễn tổng hợp

2.3.8 Mô hành GNN (Graph Neural Network)

Dau tiên ta cần biết định nghĩa về đồ thi (graph) D6 thị là một cấu trúc dữ liệu trong khoa học máy tính bao gồm hai thành phần nút và đường G = (V,

FE) Mỗi nút có một cạnh liên kết (E) kết nối nó với moi nút khác (V) Một đồ

thị có hướng có mũi tên trên các cạnh của nó, được gọi là sự phụ thuộc hướng.

Nếu không, các đồ thị là vô hướng.

Do khả năng biểu đạt cực kỳ mạnh mẽ của chúng, đồ thị đang nhận được sựquan tâm đáng kể trong lĩnh vực Học máy Mỗi nút được nhúng vào một vector

Việc nhúng này thiết lập vị trí của nút trong không gian dữ liệu GNN là cấu trúc liên kết của các mạng neural hoạt động trên đồ thị.

Mục tiêu chính của kiến trúc GNN là tìm hiểu một vector được nhúng chứathông tin về vùng lân cận của nó Chúng ta có thể sử dụng tính năng nhúngnày để giải quyết nhiều vấn đề khác nhau, bao gồm gắn nhãn cho nút, dự đoán

Trang 34

nút và cạnh,

Nói cách khác, GNN là một lớp con của các kỹ thuật Học sâu được xây dựng

đặc biệt để thực hiện suy luận trên dit liệu dựa trên đồ thị GNN được áp dụng

cho đồ thị và có khả năng thực hiện các tác vụ dự đoán ở cấp độ nút, cạnh và

Edge Training Setting Task

Embedding * Supervised + Node-level

* Semi-supervised * Edge-level

Graph

Embedding

Hinh 2.10: Mô hành GNN

GNN được chia thành ba loại:

e Recurrent Graph Neural Network: đồ thi trong mạng này là hai chiều trong

đó dữ liệu chảy theo cả hai hướng Áp dụng hàm truyền đồ thị trên các

cạnh để truyền đầu ra của hướng ban đầu trở lại các nút đồ thị, nhưng điềuchỉnh trọng số cạnh dựa trên sửa đổi độ dốc đã áp dụng trước đó cho nút

đó.

e Spectral Convolutional Network: có ý tưởng tương tự như CNN Như đã

biết trong ƠNN, tích chập được thực hiện bằng cách tính tổng các giá trịcủa các điểm dit liệu lân cận xung quanh một điểm dữ liệu trung tam bằngcách sử dụng bộ lọc và các trọng số có thể học được Mạng kết hợp khônggian hoạt động theo nguyên tắc tương tự, tổng hợp các thuộc tính của các

Trang 35

nút lân cận đối với nút trung tam Tuy nhiên, các phương pháp based thường có độ phức tạp tính toán cao và đã dần bị thay thế bởi các

spectral-phương phấp spatial-based.

e Spatial Convolutional Network: cung cấp một cách tiếp cận đơn giản và

hiệu quả hơn để xử lý dữ liệu Phương pháp này thực hiện thông qua ý

tưởng nhúng các nút phụ thuộc vào các nút lân cận.

2.3.9 Mô hành GCN (Graph Convolutional Network)

GCN [12] là một kiến trúc mang neural rất mạnh mẽ dành cho máy hoc trên

đồ thị Trên thực tế, chúng mạnh đến mức ngay cả GCN hai lớp được khởi tạo

ngẫu nhiên cũng có thể tạo ra các biểu dién đặc điểm hữu ích của các nút trongmạng Hình 2.11 minh họa biểu dién hai chiều của từng nút trong mang do GCN

đó tạo ra Lưu ý rằng độ gần tương đối của các nút trong mạng được bảo toàn

trong biểu diễn hai chiều ngay cả khi chưa huấn luyện

Cu thể mô hình GCN nhận dữ liệu đầu vào là đồ thị G = (V, E), ta có:

e Một ma trận đặc điểm đầu vào N x F0, X, trong đó N là số nút và F° là

số đặc điểm đầu vào của mỗi nút.

^ A ` ^ 2 ox 4 ya x

e Một ma trận N x N, A, là ma tran biéu diễn câu trúc của đồ thị.

Do đó, một lớp an trong GCN có thé được viết là Ht = ƒ(H~!, A) trong đó

H9 = X và ƒ là quy tắc lan truyền Mỗi lớp H” tương ứng với một ma trận đặc

trưng N x Ƒ”, trong đó mỗi hàng là một đại diện đặc trưng của một nút O mỗi

lớp, các đặc điểm này được tổng hợp để tạo thành các đặc điểm của lớp tiếptheo nhờ sử dụng quy tắc lan truyền ƒ Bằng cách này, các đặc điểm ngày càngtrở nên trừu tượng hơn ở mỗi lớp liên tiếp Các biến thé của GCN chỉ khác nhau

trong việc lựa chọn quy tắc lan truyền ƒ.

Trang 37

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

Có rất nhiều hướng nghiên cứu sử dụng học sâu để phát hiện lỗ hồng bảo

mật Theo khảo sát của Peng Zeng, Guanjun Lin và các cộng sự [33], có 4 hướng

nghiên cứu chính:

e Sử dụng mô hình học sâu để tự động học các biểu diễn ngữ nghĩa của chương

trình của Wang [80].

e Giải pháp dự đoán lỗ hồng Buffer Overflow từ mã nguồn thô của Choi [3]

e Trích xuất từ mã nguồn các mẫu (code pattern) chứa lỗ hong để huấn luyện

mô hình của Li [14].

e Giải pháp phát hiện lỗ hổng cho mã nhị phan của Liu [19]

2.4.1 Hướng 1 - Tự động hóa tiệc học các biểu diễn ngữ nghia của

chương trinh để dự đoán lỗ hổng

Nghiên cứu của Wang [30] là nghiên cứu tiên phong 4p dụng mang DBN

(Deep Belief Network) để tìm hiểu các biểu diễn ngữ nghĩa của một chương

trình Mục đích của nghiên cứu là sử dụng các biểu diễn ngữ nghĩa cấp cao được

học bởi các mạng nơ-ron như các đặc điểm chứa lỗ hồng Cu thể, nó cho phép tự

động học các đặc điểm chỉ ra mã nguồn chứa lỗ hổng mà không cần dựa vào kỹthuật thủ công Phương pháp này không chỉ phù hợp để dự đoán lổ hồng nằmbên trong dự án mà còn có thể áp dụng cho dự đoán 16 hong giữa nhiều dự án.AST được sử dụng làm đại diện cho chương trình để đưa vào DBN làm dữ liệu

đào tạo.

Một phương pháp xử lý dữ liệu được đề xuất với bốn bước.

e Bước đầu tiên là phân tích mã nguồn thành token.

e Bước thứ hai là ánh xạ token tới một nhận dạng là số nguyên.

Trang 38

` _| Cac biểu | Mô hình ae Le

Bài báo Nguon dữ dién/dai | mạng Mite do phat

liéu ` hiện

diện no-ron

Wang va cong su [30] nguồn mổ AST DBN Mức độ file

Liu và cộng sự [20] nguồn nộ AST BiLSTM | Mức độ hàm

Dự án mã `

Lin và cộng sự [18] | nguồn mở na nguồa LSTM Mức độ hàm

và SARD

Bang 2.1: Bảng thống kê các bài báo theo hướng 1

e Bước thứ ba là sử dụng DBN để tự động tạo ra các đặc trưng ngữ nghĩa.

e Bước cuối cùng sử dụng DBN là thiết lập mô hình dự đoán lỗ hồng.

2.4.2 Hướng 2 - Dự đoán end-to-end lỗ hổng tràn bộ đệm từ ma

nguồn thô thông qua mang nơ-ron

Nghiên cứu của Choi [3] là sản phẩm đầu tiên cung cấp giải pháp end-to-end

để phát hiện các lỗ hồng tràn bộ đệm Các nghiên cứu thực nghiệm chứng minh

rằng mạng nơ-ron có đủ khả năng để học trực tiếp các đặc điểm liên quan đến

lỗ hong từ mã nguồn thô mà không cần phân tích mã Mạng nơ-ron được déxuất trang bị các khối bộ nhớ tích hợp để ghi nhớ các phụ thuộc mã có phạm

vi rất dài Do đó, sửa đổi mạng này là rất quan trọng để xác định lỗ hồng tràn

bộ đệm Kết quả thử nghiệm cho thấy phương pháp này có thể phát hiện chính

xác các loại tràn bộ đệm khác nhau.

Tuy nhiên, phương pháp này vẫn còn những hạn chế cần cải tiến thêm Hạn

chế đầu tiên là nó không phát hiện được các sự cố tràn bộ đệm nằm trong các hàm bên ngoài do mã trong các tệp bên ngoài bị loại trừ trong dữ liệu đầu vào.

Hạn chế thứ hai là mỗi hàng phải chứa một số phép gán dữ liệu để mô hình nàyhoạt động Không dễ để áp dụng ngay phương pháp này cho mã nguồn có chứa

Trang 39

wee Nguồn dit Cac bie u|Mô hình Mức độ phát

Bài báo ` diễn/đại mạng CỐ

liệu ` hiện

diện no-ron

ws yen Cac dong ˆ

Choi và cộng sự [3] Dữ liệu tự của mã Mạng bộ Mức độ hàm

Bang 2.2: Bang thống kê các bài báo theo hướng 2

các câu điều kiện vì các giá trị chú ý được tính toán để tìm các vị trí mã có liên quan nhất.

2.4.3 Hướng 3 - Trích xuất từ ma nguồn các mau (code pattern)

chứa lỗ hổng để huấn luyện m6 hành

VulDeePecker của Li [14] là nghiên cứu đầu tiên áp dụng mô hình BiLSTM

để phát hiện lỗ hồng BiLSTM trích xuất và học các phụ thuộc tầm xa từ các chuỗi mã Dữ liệu đào tạo của công cụ được lấy từ code gadget đại diện cho

chương trình và đưa làm đầu vào của BiLSTM Có ba giai đoạn để xử lý code

gadget:

e Giai đoạn đầu tiên là trích xuất các lát cắt chương trình (slice) tương ứng

của các lệnh gọi hàm thư viện/API.

e Giai đoạn thứ hai là tạo và gắn nhãn các code gadget.

Trang 40

¬= Nguồn dit Các bie u|Mô hình Mức độ phát

Bài báo ` diễn/đại mạng am

Bảng 2.3: Bảng thông kê các bài báo theo hướng ở

e Giai đoạn thứ ba là chuyển đổi code gadget thành vecto.

Kết quả thử nghiệm cho thấy VulDeePecker có thể xử lý nhiều lỗ hong vakinh nghiệm của con người có thể giúp cải thiện hiệu quả của VulDeePecker

Tuy nhiên, phương pháp này có những hạn chế cần cải thiện thêm Hạn chế đầu

tiên là VulDeePecker chỉ có thể xử lý các chương trình viết bằng C/C++ Hanchế thứ hai là VulDeePecker chỉ có thể xử lý các lỗ hồng liên quan đến lệnh gọihàm thư viện/API Hạn chế thứ ba là tập dữ liệu để đánh giá hiệu suất có quy

mô nhỏ vì nó chỉ chứa hai loại lỗ hồng

2.4.4 Hướng 4 - Giải pháp phát hiện lỗ hổng cho mã nhị phan

Nghiên cứu của Liu [19] đề xuất một công cụ phát hiện lỗ hong dựa trên họcsâu cho mã nhị phân Công cụ này được phát triển nhằm mục đích mở rộng

lĩnh vực phát hiện lỗ hong bằng cách giảm thiểu sự thiếu thốn của mã nguồn.

Dé đào tao dữ liệu, các phân đoạn nhị phân được đưa vào mạng BiLSTM có sử

Ngày đăng: 02/10/2024, 04:05

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN