Tổng quan nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, ứng dụng web ngày càng phổ biến và trở thành phương tiện trung gian cung cấp dịch vụ cho hàng triệu người dùng. Theo báo cáo của ngành, hơn 79% các trang web hiện nay sử dụng ngôn ngữ PHP làm nền tảng phát triển, đồng thời các lỗ hổng bảo mật trên ứng dụng web cũng gia tăng với tần suất và mức độ phức tạp ngày càng cao. Việc phát hiện và xử lý kịp thời các lỗ hổng bảo mật là yêu cầu cấp thiết nhằm bảo vệ dữ liệu và đảm bảo an toàn cho người dùng cũng như doanh nghiệp. Tuy nhiên, quá trình kiểm tra bảo mật truyền thống thường tốn nhiều thời gian, chi phí và đòi hỏi chuyên môn cao.

Mục tiêu của luận văn là nghiên cứu và phát triển một công cụ sử dụng kỹ thuật học máy để tự động phát hiện lỗ hổng bảo mật trong mã nguồn ứng dụng web, tập trung vào ngôn ngữ PHP và các lỗ hổng dạng taint-style như SQL Injection và Cross-Site Scripting (XSS). Phạm vi nghiên cứu bao gồm việc biểu diễn mã nguồn dưới dạng đồ thị Code Property Graph (CPG), trích xuất đặc trưng từ các mẫu đồ thị phổ biến và huấn luyện mô hình học máy để phân loại mã nguồn an toàn hoặc không an toàn. Nghiên cứu được thực hiện trên bộ dữ liệu SARD với hơn 15.000 file mã nguồn PHP có gán nhãn lỗ hổng bảo mật, trong đó số lượng file an toàn và không an toàn được cân bằng bằng phương pháp lấy mẫu ngẫu nhiên.

Ý nghĩa của nghiên cứu thể hiện qua việc nâng cao hiệu quả phát hiện lỗ hổng bảo mật, giảm thiểu sai sót và tăng tính tự động hóa trong kiểm tra bảo mật ứng dụng web. Kết quả nghiên cứu góp phần hỗ trợ các tổ chức, doanh nghiệp trong việc bảo vệ hệ thống thông tin, đồng thời mở rộng ứng dụng học máy trong lĩnh vực an toàn thông tin.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Luận văn dựa trên các lý thuyết và mô hình sau:

  • Code Property Graph (CPG): Là mô hình biểu diễn mã nguồn dưới dạng đồ thị kết hợp từ cây cú pháp trừu tượng (AST), đồ thị luồng điều khiển (CFG) và đồ thị phụ thuộc chương trình (PDG). CPG cung cấp thông tin toàn diện về cú pháp, luồng điều khiển và luồng dữ liệu trong mã nguồn, giúp khai thác các mẫu đồ thị đặc trưng cho lỗ hổng bảo mật.

  • Khai phá dữ liệu đồ thị (Graph Mining): Sử dụng thuật toán gSpan để khai thác các mẫu đồ thị phổ biến từ tập dữ liệu CPG. Thuật toán này dựa trên biểu diễn DFS Code để xử lý vấn đề đẳng cấu đồ thị, giúp tìm ra các mẫu con phổ biến có giá trị phân loại cao.

  • Giải thuật MMRFS (Maximal Marginal Relevance Feature Selection): Thuật toán chọn lọc đặc trưng dựa trên độ liên quan và độ dư thừa giữa các mẫu đồ thị, nhằm giảm không gian đặc trưng, tránh overfitting và tăng hiệu quả huấn luyện mô hình.

  • Mô hình học máy: Áp dụng các thuật toán phân loại như Decision Tree, Random Forest và Support Vector Machine (SVM) để xây dựng bộ phân loại dự đoán sự tồn tại lỗ hổng bảo mật trong mã nguồn. Decision Tree và Random Forest tận dụng cấu trúc cây để phân loại dựa trên đặc trưng nhị phân, trong khi SVM tìm siêu phẳng tối ưu phân tách các lớp dữ liệu.

Các khái niệm chính bao gồm: lỗ hổng bảo mật dạng taint-style, biểu diễn mã nguồn bằng CPG, khai thác mẫu đồ thị phổ biến, chọn lọc đặc trưng MMRFS, và mô hình phân loại học máy.

Phương pháp nghiên cứu

  • Nguồn dữ liệu: Sử dụng bộ dữ liệu SARD, gồm khoảng 15.632 file mã nguồn PHP được gán nhãn an toàn hoặc không an toàn với các lỗ hổng SQL Injection và XSS. Bộ dữ liệu được xử lý để cân bằng số lượng file an toàn và không an toàn bằng phương pháp undersampling.

  • Phương pháp phân tích: Mã nguồn được biểu diễn dưới dạng Code Property Graph bằng công cụ PHPJoern, lưu trữ thông tin về cấu trúc, luồng điều khiển và phụ thuộc dữ liệu. Các nhãn hàm và biến được chuẩn hóa để tránh overfitting.

  • Khai thác đặc trưng: Thuật toán gSpan được sử dụng để khai thác các mẫu đồ thị phổ biến trong từng lớp dữ liệu (an toàn, không an toàn, không chứa lỗ hổng). Sau đó, giải thuật MMRFS chọn lọc các mẫu có độ liên quan cao và độ dư thừa thấp làm đặc trưng cho mô hình.

  • Huấn luyện mô hình: Tập dữ liệu được chia thành 70% huấn luyện, 10% điều chỉnh và 20% kiểm tra. Các mô hình Decision Tree, Random Forest và SVM được huấn luyện trên tập đặc trưng đã chọn, đánh giá bằng các chỉ số Precision, Recall, F1-score và Accuracy.

  • Timeline nghiên cứu: Nghiên cứu bắt đầu từ tháng 2/2021, hoàn thành thu thập và xử lý dữ liệu trong tháng 4/2021, phát triển công cụ và huấn luyện mô hình từ tháng 5 đến tháng 6/2021, hoàn thiện luận văn và bảo vệ vào tháng 7/2021.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

  1. Hiệu quả biểu diễn mã nguồn bằng CPG: Việc sử dụng Code Property Graph giúp biểu diễn đầy đủ thông tin cú pháp, luồng điều khiển và phụ thuộc dữ liệu trong mã nguồn PHP. Thời gian tạo đồ thị CPG tỷ lệ thuận với kích thước mã nguồn, trung bình khoảng vài giây cho mỗi file có kích thước trung bình 100 dòng.

  2. Khai thác mẫu đồ thị phổ biến: Thuật toán gSpan khai thác được hàng trăm mẫu đồ thị phổ biến trong mỗi lớp dữ liệu. Sau khi áp dụng giải thuật MMRFS, số lượng đặc trưng giảm xuống còn khoảng 50-70 mẫu, giúp giảm không gian vector đặc trưng và tăng hiệu quả huấn luyện.

  3. Hiệu quả mô hình học máy: Mô hình Random Forest đạt độ chính xác trung bình trên tập kiểm tra khoảng 89%, vượt trội hơn so với Decision Tree (khoảng 82%) và SVM (khoảng 85%). Chỉ số F1-score của Random Forest đạt khoảng 0.87, cho thấy khả năng cân bằng giữa Precision và Recall tốt hơn.

  4. Khả năng phân biệt lỗ hổng SQLi và XSS: Mô hình phân loại có thể phân biệt hiệu quả các loại lỗ hổng bảo mật với tỷ lệ chính xác trên 85%, giúp giảm thiểu nhầm lẫn giữa các loại lỗ hổng và tăng tính ứng dụng thực tế.

Thảo luận kết quả

Kết quả cho thấy việc biểu diễn mã nguồn bằng CPG kết hợp với khai thác mẫu đồ thị phổ biến là phương pháp hiệu quả để trích xuất đặc trưng có giá trị cho bài toán phát hiện lỗ hổng bảo mật. So với các phương pháp biểu diễn tuần tự hoặc chỉ sử dụng cây AST, CPG cung cấp thông tin toàn diện hơn về luồng dữ liệu và điều khiển, giúp mô hình học máy nhận diện chính xác hơn.

Việc áp dụng giải thuật MMRFS giúp giảm thiểu hiện tượng overfitting do không gian đặc trưng quá lớn, đồng thời giữ lại các đặc trưng có tính phân loại cao. So sánh với các nghiên cứu trước đây sử dụng học sâu hoặc các đặc trưng định nghĩa sẵn, phương pháp này có ưu điểm về tính linh hoạt và khả năng mở rộng.

Mô hình Random Forest thể hiện ưu thế nhờ khả năng kết hợp nhiều cây quyết định, giảm thiểu sai số và tăng độ ổn định. Tuy nhiên, mô hình này tiêu tốn nhiều thời gian dự đoán hơn so với Decision Tree đơn lẻ. SVM phù hợp với dữ liệu có phân tách rõ ràng nhưng kém hiệu quả hơn khi dữ liệu có nhiễu hoặc chồng chéo.

Dữ liệu nghiên cứu còn hạn chế về đa dạng loại lỗ hổng và kích thước bộ dữ liệu, do đó kết quả có thể được cải thiện khi mở rộng phạm vi và số lượng dữ liệu. Các biểu đồ so sánh độ chính xác, F1-score giữa các mô hình và phân bố mẫu đồ thị phổ biến có thể minh họa rõ nét hơn hiệu quả của phương pháp.

Đề xuất và khuyến nghị

  1. Mở rộng bộ dữ liệu huấn luyện: Thu thập thêm các mẫu mã nguồn với đa dạng loại lỗ hổng bảo mật và kích thước lớn hơn để tăng tính đại diện và cải thiện độ chính xác của mô hình. Thời gian thực hiện: 6-12 tháng. Chủ thể: Các nhóm nghiên cứu và doanh nghiệp phát triển phần mềm.

  2. Áp dụng kỹ thuật học sâu kết hợp CPG: Nghiên cứu tích hợp các mô hình học sâu như LSTM, GNN (Graph Neural Network) để khai thác sâu hơn các đặc trưng từ đồ thị CPG, nâng cao khả năng nhận diện các lỗ hổng phức tạp. Thời gian thực hiện: 12 tháng. Chủ thể: Các nhà nghiên cứu trong lĩnh vực AI và an toàn thông tin.

  3. Phát triển giao diện người dùng thân thiện: Cải tiến công cụ hiện tại với giao diện trực quan, hỗ trợ người dùng dễ dàng kiểm tra, đánh giá và cập nhật các loại lỗ hổng mới. Thời gian thực hiện: 3-6 tháng. Chủ thể: Đội ngũ phát triển phần mềm.

  4. Tích hợp công cụ vào quy trình phát triển phần mềm: Đề xuất tích hợp công cụ phát hiện lỗ hổng tự động vào quy trình CI/CD (Continuous Integration/Continuous Deployment) để kiểm tra bảo mật liên tục, giảm thiểu rủi ro khi triển khai ứng dụng web. Thời gian thực hiện: 6 tháng. Chủ thể: Các doanh nghiệp phát triển phần mềm và quản lý dự án.

Đối tượng nên tham khảo luận văn

  1. Nhà nghiên cứu và sinh viên ngành Khoa học Máy tính, An toàn Thông tin: Luận văn cung cấp kiến thức chuyên sâu về biểu diễn mã nguồn, khai thác dữ liệu đồ thị và ứng dụng học máy trong phát hiện lỗ hổng bảo mật, hỗ trợ nghiên cứu và phát triển công cụ mới.

  2. Chuyên gia phát triển phần mềm và kiểm thử bảo mật: Công cụ và phương pháp đề xuất giúp tự động hóa quá trình rà soát mã nguồn, giảm thiểu sai sót và tăng hiệu quả kiểm thử bảo mật trong các dự án phát triển ứng dụng web.

  3. Doanh nghiệp cung cấp dịch vụ bảo mật: Tham khảo để phát triển hoặc tích hợp các giải pháp phát hiện lỗ hổng bảo mật tự động, nâng cao chất lượng dịch vụ và bảo vệ khách hàng.

  4. Nhà quản lý dự án và kỹ sư DevOps: Hiểu rõ về các kỹ thuật phát hiện lỗ hổng bảo mật để tích hợp vào quy trình phát triển phần mềm, đảm bảo an toàn thông tin và giảm thiểu rủi ro vận hành.

Câu hỏi thường gặp

  1. Học máy có thể phát hiện được tất cả các loại lỗ hổng bảo mật không?
    Học máy hiệu quả với các loại lỗ hổng đã được huấn luyện trên dữ liệu có gán nhãn, đặc biệt là các lỗ hổng phổ biến như SQL Injection và XSS. Tuy nhiên, với các lỗ hổng mới hoặc phức tạp, mô hình cần được cập nhật dữ liệu và huấn luyện lại để duy trì hiệu quả.

  2. Tại sao lại sử dụng Code Property Graph thay vì biểu diễn tuần tự?
    CPG kết hợp thông tin cú pháp, luồng điều khiển và phụ thuộc dữ liệu, giúp mô hình học máy nắm bắt được cấu trúc và ngữ nghĩa phức tạp của mã nguồn, trong khi biểu diễn tuần tự thường mất thông tin về luồng dữ liệu và điều khiển.

  3. Giải thuật MMRFS có vai trò gì trong quá trình trích xuất đặc trưng?
    MMRFS giúp chọn lọc các mẫu đồ thị phổ biến có độ liên quan cao và giảm thiểu sự dư thừa, từ đó giảm không gian đặc trưng, tránh overfitting và tăng hiệu quả huấn luyện mô hình.

  4. Làm thế nào để xử lý bộ dữ liệu không cân bằng?
    Phương pháp undersampling được sử dụng để cân bằng số lượng file an toàn và không an toàn, giúp mô hình không bị thiên lệch và cải thiện độ chính xác phân loại.

  5. Công cụ phát hiện lỗ hổng này có thể áp dụng cho ngôn ngữ khác ngoài PHP không?
    Hiện tại công cụ tập trung vào PHP do đặc thù ngôn ngữ và bộ dữ liệu có sẵn. Tuy nhiên, phương pháp biểu diễn CPG và học máy có thể được mở rộng cho các ngôn ngữ khác nếu có bộ dữ liệu phù hợp và công cụ sinh đồ thị tương ứng.

Kết luận

  • Luận văn đã phát triển thành công công cụ sử dụng học máy kết hợp biểu diễn Code Property Graph để phát hiện lỗ hổng bảo mật trong mã nguồn PHP, tập trung vào các lỗ hổng SQL Injection và XSS.
  • Phương pháp khai thác mẫu đồ thị phổ biến và chọn lọc đặc trưng MMRFS giúp giảm không gian đặc trưng và tăng hiệu quả mô hình phân loại.
  • Mô hình Random Forest đạt hiệu quả cao nhất với độ chính xác khoảng 89% và F1-score 0.87 trên tập kiểm tra.
  • Công cụ có giao diện thân thiện, dễ sử dụng, phù hợp với các doanh nghiệp và nhà phát triển phần mềm trong việc kiểm tra bảo mật tự động.
  • Hướng phát triển tiếp theo bao gồm mở rộng bộ dữ liệu, áp dụng học sâu, cải tiến giao diện và tích hợp công cụ vào quy trình phát triển phần mềm.

Để tiếp tục nâng cao hiệu quả và ứng dụng thực tế, các nhà nghiên cứu và doanh nghiệp được khuyến khích hợp tác phát triển, mở rộng phạm vi nghiên cứu và áp dụng công cụ trong môi trường sản xuất. Hãy bắt đầu triển khai các giải pháp bảo mật tự động ngay hôm nay để bảo vệ hệ thống và dữ liệu của bạn một cách hiệu quả nhất!