Phần mềm là một phần tất yếu trong cuộc cách mạng của nền kinh tế và xã hội hiện đại. Trong khi đó, các cuộc tấn công vào lỗ hổng phần mềm nhắm vào các hệ thống máy tính, đặc biệt là các hệ thống quan trọng như quản lý dữ liệu công dân quốc gia, giao thông, điều phối hàng không, vận tải, hoạt động công nghiệp hóa chất/hạt nhân và hệ thống an ninh quốc gia, có thể gây ra thiệt hại đáng kể. Theo khảo sát của Veracode về hơn 130,000 phần mềm vào năm 2020, hơn 75% trong số đó chứa ít nhất một lỗ hổng phần mềm. Các lỗ hổng phổ biến bao gồm kiểm soát truy cập, lỗi mã hóa, chèn SQL, và cấu hình bảo mật sai. Vì vậy, các công cụ phân tích tĩnh như Sonarqube, Klocwork, Coverity được sử dụng rộng rãi trong công nghiệp để phát hiện các lỗ hổng tiềm ẩn trong hệ thống phần mềm. Tuy nhiên, một vấn đề không thể tránh khỏi của các công cụ này là chúng thường tạo ra một số lượng lớn cảnh báo với tỷ lệ dương tính giả cao, và điều này đặc biệt nghiêm trọng khi kích thước và độ phức tạp của mã nguồn phần mềm là rất lớn. Vấn đề tỷ lệ dương tính giả cao tiêu tốn rất nhiều thời gian của nhà phát triển để đầu tư công sức điều tra những lỗi đã được cảnh báo. Trong luận văn này, học viên trình bày một phương pháp để xếp hạng các cảnh báo được sinh bởi công cụ phân tích tĩnh. Dựa trên ý tưởng rằng các cảnh báo có bối cảnh tương tự thường có nhãn giống nhau (là dương tính thật hoặc dương tính giả), giải pháp DeFP được xây dựng theo một kiến trúc với hai mô hình BiLSTM giúp trích xuất các thông tin ngữ nghĩa có trong ngữ cảnh của các cảnh báo. Sau đó, đối với một tập hợp các cảnh báo mới, DeFP có thể tính toán và xếp hạng chúng theo khả năng chúng là các cảnh báo thật (nghĩa là lỗi tương ứng có thực sự tồn tại). Kết quả thử nghiệm trên tập dữ liệu gồm 10 dự án mã nguồn mở của ngôn ngữ C/C++ cho thấy rằng bằng cách sử dụng DeFP, lập trình viên chỉ điều tra 60% cảnh báo thì đã có thể tìm thấy trên 90% số lỗi thực tế. Hơn nữa, DeFP cải thiện 30% phương pháp được trình bày trong nghiên cứu trước đó trong cả hai tiêu chí đánh giá về độ chính xác là Precision và Recall.
Readership Map
Content Distribution
Phần mềm là một phần tất yếu trong cuộc cách mạng của nền kinh tế và xã hội hiện đại. Trong khi đó, các cuộc tấn công vào lỗ hổng phần mềm nhắm vào các hệ thống máy tính, đặc biệt là các hệ thống quan trọng như quản lý dữ liệu công dân quốc gia, giao thông, điều phối hàng không, vận tải, hoạt động công nghiệp hóa chất/hạt nhân và hệ thống an ninh quốc gia, có thể gây ra thiệt hại đáng kể. Theo khảo sát của Veracode về hơn 130,000 phần mềm vào năm 2020, hơn 75% trong số đó chứa ít nhất một lỗ hổng phần mềm. Các lỗ hổng phổ biến bao gồm kiểm soát truy cập, lỗi mã hóa, chèn SQL, và cấu hình bảo mật sai. Vì vậy, các công cụ phân tích tĩnh như Sonarqube, Klocwork, Coverity được sử dụng rộng rãi trong công nghiệp để phát hiện các lỗ hổng tiềm ẩn trong hệ thống phần mềm. Tuy nhiên, một vấn đề không thể tránh khỏi của các công cụ này là chúng thường tạo ra một số lượng lớn cảnh báo với tỷ lệ dương tính giả cao, và điều này đặc biệt nghiêm trọng khi kích thước và độ phức tạp của mã nguồn phần mềm là rất lớn. Vấn đề tỷ lệ dương tính giả cao tiêu tốn rất nhiều thời gian của nhà phát triển để đầu tư công sức điều tra những lỗi đã được cảnh báo. Trong luận văn này, học viên trình bày một phương pháp để xếp hạng các cảnh báo được sinh bởi công cụ phân tích tĩnh. Dựa trên ý tưởng rằng các cảnh báo có bối cảnh tương tự thường có nhãn giống nhau (là dương tính thật hoặc dương tính giả), giải pháp DeFP được xây dựng theo một kiến trúc với hai mô hình BiLSTM giúp trích xuất các thông tin ngữ nghĩa có trong ngữ cảnh của các cảnh báo. Sau đó, đối với một tập hợp các cảnh báo mới, DeFP có thể tính toán và xếp hạng chúng theo khả năng chúng là các cảnh báo thật (nghĩa là lỗi tương ứng có thực sự tồn tại). Kết quả thử nghiệm trên tập dữ liệu gồm 10 dự án mã nguồn mở của ngôn ngữ C/C++ cho thấy rằng bằng cách sử dụng DeFP, lập trình viên chỉ điều tra 60% cảnh báo thì đã có thể tìm thấy trên 90% số lỗi thực tế. Hơn nữa, DeFP cải thiện 30% phương pháp được trình bày trong nghiên cứu trước đó trong cả hai tiêu chí đánh giá về độ chính xác là Precision và Recall.