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) và 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ư SySeVR và Vuldeepecker để 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ơ đồ PDG và CFG. 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ư CodeBERT và GCN đượ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 Vuldeepecker và SySeVR. 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à Vuldeepecker và SySeVR. Kết quả cho thấy các mô hình học sâu như LSTM và BiLSTM đạ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ư Transformer và GNN cũng được khuyến nghị.