Phát hiện lỗ hổng phần mềm nhờ học sâu
Từ khóa
DOI:
https://doi.org/10.31276/CNTT.2024.3026Tóm tắt
Việc phát triển các dự án phần mềm thành công luôn là mối quan tâm hàng đầu của các tổ chức, doanh nghiệp. Trong đó, việc đảm bảo chất lượng của phần mềm là ưu tiên cao nhất trong toàn bộ quá trình phát triển cũng như vận hành của phần mềm. Bài báo đề cập việc phát hiện các lỗ hổng của mã nguồn và tập trung vào phân tích cú pháp và ngữ nghĩa của các câu lệnh trong mã nguồn. Mô hình phát hiện lỗ hổng mã nguồn được thực hiện theo quy trình: (i) biểu diễn cú pháp và ngữ nghĩa; (ii) trích xuất đặc trưng của mã nguồn; (iii) cân bằng dữ liệu; (iv) phân loại mã nguồn. Đầu ra của mô hình cho biết mã nguồn đó hoặc bình thường, hoặc có lỗ hổng. Mô hình sử dụng bộ dữ liệu SARD để huấn luyện mô hình học sâu. Mạng học sâu sử dụng mô hình BERT (Bidirectional Encoder Representations from Transformers), mô hình Word2Vec kết hợp LSTM (Long Short-Term Memory) và mô hình Word2Vec với BiLSTM (Bidirectional Long Short-Term Memory) theo ba kịch bản. Kết quả phân loại được đưa qua một hàm softmax để trả về một vector chứa dự đoán xác suất xảy ra của từng loại lỗ hổng. Với tỷ lệ phát hiện lỗ hổng mã nguồn cho kết quả chính xác lên đến 82,63%, tương ứng với tỷ lệ bỏ sót chỉ còn 17,37%. Đây là một kết quả có thể chấp nhận được, chứng minh hiệu quả vượt trội đối với bài toán phát hiện lỗ hổng mã nguồn.