Phát hiện lỗ hổng mã nguồn bằng cách sử dụng xử lý ngôn ngữ Nature và mạng đồ thị sâu

09:18 | 28/04/2025

Ngành Công nghiệp sản xuất phần mềm hưởng lợi từ các công cụ tự động sinh mã, tuy nhiên cũng gặp thách thức về lỗ hổng phần mềm trong các mã sinh tự động đó. Liên quan đến phát hiện lỗ hổng phần mềm viết bằng các ngôn ngữ C và C++, bài báo đề xuất mô hình hỗn hợp giữa Graph Convolution Network (GCN) kết hợp với mô hình Bidirectional Encoder Representations from Transformers (BERT) và Dropout, gọi tắt là GBD. 

Trong pha 2 của mô hình GBD thực hiện đồng thời (i) trích xuất đặc trưng của đỉnh và cạnh dựa trên mạng tích chập đồ thị GCN; (ii) trích xuất đặc trưng đoạn mã sử dụng mô hình BERT; rồi thực hiện (iii) xây dựng hồ sơ mã nguồn, nhờ đồ thị đặc trưng mã CPG (Code Property Graph). Pha 3 của mô hình sẽ sử dụng kĩ thuật Dropout tránh quá khớp. Pha 4 của mô hình là bộ phân loại, xác định mã nguồn có lỗ hổng hay không. Các kết quả thực nghiệm cho thấy sự vượt trội của mô hình đề xuất so với các hướng tiếp cận khác trên tất cả các độ đo lần lượt đạt 61.21% và 88.94% tỷ lệ dự đoán đúng lỗ hổng mã nguồn và file bình thường. Đồng thời từ kết quả phân loại có thể thấy với token length là 512 thì mô hình GBD mang lại kết quả tốt, đồng đều nhất trên tất cả các độ đo Accuracy, Precision, Recall và F1 lần lượt đạt 86.65%, 38.59%, 66.21% và 48.76%. Phù hợp theo khảo sát của chúng tôi trên bộ dữ liệu thực nghiệm Verum vì có khoảng 70% các file mã nguồn có chiều dài nhỏ hơn 512 và lớn hơn 256. Ngoài ra mô hình GBD không chỉ hoạt động tốt trên một bộ dữ liệu mà còn có thể cho kết quả tốt trên nhiều bộ dữ liệu khác nhau. Cụ thể với bộ dữ liệu Verum, khi so sánh mô hình GBD với 5 hướng tiếp cận khác gồm REVEAL [1], Russell [2], VulDeePecker [3], SySeVR [4], Devign [5] cho kết quả tốt hơn lần lượt là 4% và từ 15% đến 57% trên 3 độ đo còn lại Precision, Recall, F1_score. Tương tự, khi so sánh GBD với hướng tiếp cận SySeVR [4] thì kết quả của GBD đã vượt trội hơn từ 3% đến 25% trên tất cả các độ đo. Còn với Devign [5] thì mô hình GBD mang lại hiệu quả hơn từ 5% đến 39% trên 3 độ đo Precision, Recall, F1_score. Với bộ dữ liệu FFmpeg+Qume, dựa trên kết quả thực nghiệm với độ đo Accuracy mô hình GBD hiệu quả hơn tất cả các nghiên cứu khác từ 0.2% đến 10%. Độ đo Precision, GBD cũng tốt hơn từ 0.3% đến 9% so với các hướng tiếp cận khác. Còn độ đo Recall thì GBD chỉ thấp hơn hướng tiếp cận REVEAL [1] khoảng 1.5% còn lại cao hơn tất cả các tiếp cận còn lại từ 10% đến hơn 31% còn độ đo Recall, độ đo F1-score của GBD cũng thấp hơn 0.3% so với REVEAL và cao hơn các nghiên cứu khác từ 7% đến 30%. Điều này chứng tỏ mô hình GBD không chỉ hiệu quả trên một bộ dữ liệu mà còn hiệu quả trên nhiều bộ dữ liệu khác nhau.

Abstract - The software production sector gains advantages from automated code generating techniques, yet encounters issues related to vulnerabilities in the resulting code. This research presents a hybrid paradigm, termed GBD, for detecting vulnerabilities in software written in C and C++. It integrates Graph Convolution Network (GCN), Bidirectional Encoder Representations from Transformers (BERT), and Dropout. During Phase 2 of the GBD model, the subsequent tasks are executed concurrently: (i) obtaining node and edge features utilizing the GCN graph convolution network; (ii) deriving segment features employing the BERT model; (iii) constructing a source code profile via the Code Property Graph (CPG). Phase 3 of the model implements the Dropout strategy to mitigate overfitting. Phase 4 is the classifier that ascertains the presence of vulnerabilities in the source code. Experimental findings demonstrate the superiority of the proposed model relative to alternative methods, attaining a prediction accuracy of 61.21% for vulnerable code and 88.94% for normal files. Additionally, the classification outcomes demonstrate that with a token length of 512, the GBD model yields the most uniform results across all metrics: Accuracy (86.65%), Precision (38.59%), Recall (66.21%), and F1-score (48.76%). This corresponds with our analysis of the Verum experimental dataset, indicating that over 70% of the source code files have lengths exceeding 256 but less than 512. Furthermore, the GBD model exhibits strong performance across both individual and multiple datasets. For example, in the Verum dataset, the GBD model surpasses five alternative methodologies—REVEAL [1], Russell [2], VulDeePecker [3], SySeVR [4], and Devign [5] - by 4% in Accuracy and between 15% and 57% in Precision, Recall, and F1-score. In comparison to SySeVR [4], the GBD model exceeds it by 3% to 25% across all metrics. In comparison to Devign [5], GBD achieves improvements of 5% to 39% in Precision, Recall, and F1-score. Upon assessment of the FFmpeg+Qume dataset, the GBD model attains an Accuracy improvement ranging from 0.2% to 10% above all other studies. In terms of precision, GBD surpasses alternative methods by 0.3% to 9%. In terms of Recall, GBD is marginally worse than REVEAL by 1.5%, although surpasses all other methodologies by 10% to over 31%. In terms of F1-score, GBD is 0.3% inferior to REVEAL but surpasses other studies by 7% to 30%. The results indicate that the GBD model is effective on both individual and multiple datasets.

Bài viết được đăng tải đầy đủ tại đây.

Để lại bình luận