Nghiên Cứu Phương Pháp Học Sâu Để Phát Hiện Lỗ Hổng Bảo Mật Phần Mềm Trong Khóa Luận Tốt Nghiệp

Khóa luận tốt nghiệp nghiên cứu 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, vận dụng lý thuyết vào thực tế, đề xuất giải

Chuyên ngành

An toàn thông tin

Người đăng

Ẩn danh

Thể loại

khóa luận tốt nghiệp

2023

85
18
4

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

DANH MỤC CÁC HÌNH VẼ

DANH MỤC CÁC BẢNG BIỂU

MỞ ĐẦU

0.1. TỔNG QUAN ĐỀ TÀI

0.2. Giới thiệu vấn đề

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

1. CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI

1.1. Giới thiệu vấn đề

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

1.3. Những thách thức

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

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

2.1. Lỗ hổng phần mềm

2.1.1. Khái niệm

2.1.2. Thực trạng hiện nay

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

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

2.2.1. Khai niệm

2.2.2. Thiết kế của AST

2.3. Mô hình học sâu

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

3. CHƯƠNG 3: PHƯƠNG PHÁP PHÁT HIỆN LỖ HỔNG BẰNG HỌC SÂU

3.1. Ý tưởng chính

3.2. Phương pháp trích xuất các SeVC (Semantics-based Vulnerability Candidate) từ mã nguồn

3.2.1. Các định nghĩa cơ bản

3.2.2. Trích xuất SyVC từ mã nguồn

3.2.3. Chuyển đổi SyVC thành SeVC

3.2.4. Gắn nhãn cho SeVC. Token hóa các SeVC và nhúng vào các vector

3.2.5. Huấn luyện mô hình học sâu

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

4.1. Thiết lập thí nghiệm

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

4.2.1. Bộ dữ liệu SySeVR

4.2.2. Bộ dữ liệu Vuldeepecker

4.2.3. Xây dựng mô hình nhúng vector

4.2.4. Xây dựng mô hình học sâu để phát hiện và phân loại mã nguồn chứa lỗ hổng

4.3. Mô hình GCN

4.4. Mô hình RNN, LSTM, BiLSTM, GRU, BiGRU

4.5. Kết quả thí nghiệm

4.5.1. Đánh giá kết quả trên tập dữ liệu Vuldeepecker

4.5.2. Đánh giá kết quả trên tập dữ liệu SySeVR

4.5.3. Hướng phát triển

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Phương pháp học sâu

Phương pháp học sâu là một lĩnh vực con của học máy, tập trung vào việc sử dụng các mạng nơ-ron nhân tạo để giải quyết các vấn đề phức tạp. Trong khóa luận này, học sâu được áp dụng để phát hiện lỗ hổng bảo mật trong phần mềm. Các mô hình như RNN, LSTM, và Transformer được sử dụng để xử lý dữ liệu mã nguồn, giúp tăng độ chính xác trong việc phát hiện lỗi. Học sâu đặc biệt hiệu quả trong việc xử lý ngôn ngữ tự nhiên và mã nguồn, nhờ khả năng học từ dữ liệu lớn và tự động hóa quá trình phân tích.

1.1. Mô hình RNN

Mô hình RNN (Recurrent Neural Network) là một mạng nơ-ron có khả năng xử lý chuỗi dữ liệu bằng cách tạo ra các kết nối tuần hoàn giữa các nút. Điều này cho phép mô hình ghi nhớ thông tin từ các bước trước, phù hợp để phân tích mã nguồn có cấu trúc tuần tự. Tuy nhiên, RNN thường gặp vấn đề về việc mất thông tin khi chuỗi dữ liệu dài.

1.2. Mô hình LSTM

Mô hình LSTM (Long Short-Term Memory) là một cải tiến của RNN, được thiết kế để giải quyết vấn đề mất thông tin trong chuỗi dài. LSTM sử dụng các cổng điều khiển để quyết định thông tin nào cần lưu giữ hoặc loại bỏ, giúp mô hình học được các mối quan hệ phức tạp trong mã nguồn. Điều này làm cho LSTM phù hợp hơn cho việc phát hiện lỗ hổng bảo mật.

II. Phát hiện lỗ hổng bảo mật

Phát hiện lỗ hổng bảo mật là một quá trình quan trọng trong an ninh mạng, nhằm xác định các điểm yếu trong phần mềm có thể bị khai thác. Trong khóa luận này, các kỹ thuật như Program Dependence Graph (PDG)Control Flow Graph (CFG) được sử dụng để phân tích mã nguồn. Các mô hình học sâu được huấn luyện trên các bộ dữ liệu như SySeVRVuldeepecker để phát hiện các lỗ hổng một cách tự động và chính xác.

2.1. Kỹ thuật Program Slicing

Kỹ thuật Program Slicing được sử dụng để trích xuất các đoạn mã liên quan đến lỗ hổng từ mã nguồn. Các slice này chứa cả thông tin cú pháp và ngữ nghĩa, giúp mô hình học sâu hiểu rõ hơn về cấu trúc của mã. Kỹ thuật này đặc biệt hữu ích khi làm việc với các ngôn ngữ lập trình phức tạp như C và C++.

2.2. Trích xuất mẫu từ mã nguồn

Việc trích xuất các mẫu từ mã nguồn là bước quan trọng để tạo dữ liệu huấn luyện cho mô hình. Các mẫu này được trích xuất từ cây cú pháp trừu tượng (AST) và các sơ đồ PDGCFG. Các mẫu chứa lỗ hổng được gán nhãn và chuyển đổi thành vector để làm đầu vào cho mô hình học sâu.

III. Ứng dụng trong khóa luận tốt nghiệp

Khóa luận này tập trung vào việc áp dụng phương pháp học sâu để phát hiện lỗ hổng bảo mật trong phần mềm. Các mô hình như CodeBERTGCN được sử dụng để nhúng vector và phân tích mã nguồn. Kết quả thí nghiệm cho thấy hiệu quả của các mô hình này trong việc phát hiện lỗ hổng trên các bộ dữ liệu VuldeepeckerSySeVR. Khóa luận cũng đề xuất hướng phát triển trong tương lai, bao gồm việc mở rộng sang các ngôn ngữ lập trình khác và cải thiện độ chính xác của mô hình.

3.1. Thí nghiệm và đánh giá

Các thí nghiệm được thực hiện trên hai bộ dữ liệu chính là VuldeepeckerSySeVR. Kết quả cho thấy các mô hình học sâu như LSTMBiLSTM đạt hiệu suất cao trong việc phát hiện lỗ hổng. Các chỉ số đánh giá như độ chính xác, recall và F1-score được sử dụng để so sánh hiệu quả của các mô hình.

3.2. Hướng phát triển

Khóa luận đề xuất các hướng phát triển trong tương lai, bao gồm việc áp dụng học sâu cho các ngôn ngữ lập trình khác ngoài C và C++, cũng như cải thiện các kỹ thuật trích xuất mẫu để tăng độ chính xác của mô hình. Ngoài ra, việc tích hợp các mô hình tiên tiến như TransformerGNN cũng được khuyến nghị.

21/02/2025
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

Trích đoạn nội dung tài liệu

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. 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. Lỗ hồng phần mềm 2. 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ọng củ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 an chứ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. 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 10 đượ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.000 vào năm 2014 trước khi tăng vọt lên hơn 17. 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]. 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ị đó.

Khi thà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ến hà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âm nhập vào hệ thống nhưng không thông báo cho nhà phát triển. Những lỗ hổng như 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 tin tặ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át hiệ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. Cây cú pháp trừu tượng (Abstract Syntax Tree - AST) 2.

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. condition assign while b # 0: af a6. a:=a-b else: 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. 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 13 câu lệnh gan.

Mô hình học sâu 2. Mô hành RNN (Recurrent Neural Network) 2. Cau tric 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.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à: 14 he = ƒ(h TL, ị 24) (2.1) 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,. 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" 15 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. Mô hành LSTM (Long short-term memory) 2.

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ều nhà 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 16 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. 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ột cách linh hoạt, và điều này được thực hiện thông qua các cổng (gate) được điều chỉ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ớ.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Phương Pháp Học Sâu Phát Hiện Lỗ Hổng Bảo Mật Phần Mềm Trong Khóa Luận Tốt Nghiệp là một tài liệu chuyên sâu tập trung vào việc ứng dụng kỹ thuật học sâu (deep learning) để phát hiện các lỗ hổng bảo mật trong phần mềm. Tài liệu này cung cấp cái nhìn chi tiết về cách thức các mô hình học sâu có thể được huấn luyện để nhận diện các điểm yếu bảo mật, từ đó giúp cải thiện an toàn thông tin trong quá trình phát triển phần mềm. Độc giả sẽ được hưởng lợi từ việc hiểu rõ hơn về quy trình áp dụng AI trong lĩnh vực bảo mật, cũng như cách thức tích hợp các phương pháp này vào các dự án thực tế.

Nếu bạn quan tâm đến việc mở rộng kiến thức về ứng dụng học sâu trong bảo mật, hãy khám phá Khóa luận tốt nghiệp an toàn thông tin sử dụng kỹ thuật học sâu trong phát hiện tấn công ứng dụng web, nơi tập trung vào việc phát hiện các cuộc tấn công trên ứng dụng web. Bên cạnh đó, Khóa luận tốt nghiệp an toàn thông tin thiết kế và triển khai hệ thống phát triển phần mềm tự động và an toàn theo mô hình devsecops cung cấp góc nhìn về việc tích hợp bảo mật vào quy trình phát triển phần mềm tự động. Cả hai tài liệu này đều là nguồn tham khảo quý giá để hiểu sâu hơn về các phương pháp bảo mật hiện đại.