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ớ.