- Phát hiện lỗ hổng mã nguồn dựa trên phân tích thủ công: Đặc điểm của nhóm phương pháp này là các chuyên gia sẽ tự mình phân tích mã nguồn, sau đó dựa trên các kinh nghiệm, tập luật hoặc dấu hiệu để xác định đâu là mã nguồn chứa lỗ hổng và đâu là mã nguồn bình thường. Một số kỹ thuật thường được áp dụng theo hướng tiếp cận này là: dịch ngược, kiểm thử.... Với các tiếp cận này thì các lỗ hổng sẽ được phát hiện chính xác và mang lại hiệu quả cao. Tuy nhiên nhược điểm của phương pháp này là yêu cầu người phân tích phải có trình độ cao đồng thời tốn rất nhiều thời gian.
- Phát hiện lỗ hổng mã nguồn dựa trên phân tích tự động: Đây là hướng tiếp cận mới và áp dụng nhiều hiện nay do có nhiều công nghệ tính toán cũng như phương pháp hỗ trợ mạnh mẽ. Đặc điểm của phương pháp này là các mã nguồn sẽ được phân tích và trích xuất thành các vector đặc trưng. Các vector đặc trưng này thể hiện sự khác biệt giữa các mã nguồn bình thường và mã nguồn bất thường. Sau đó chúng sẽ được mang đi phân loại nhờ các thuật toán học máy hoặc học sâu. Như vậy, có thể thấy rằng, hướng tiếp cận phát hiện lỗ hổng mã nguồn dựa trên phân tích tự động sẽ phụ thuộc vào 2 quá trình chính là phân tích và trích xuất đặc trưng mã nguồn và phân loại đặc trưng mã nguồn. Đối với vấn đề phân tích và trích xuất đặc trưng mã nguồn.Các nghiên cứu gần đây theo hướng tiếp cận tự động thường tập trung vào phân tích mã nguồn theo dạng ngữ nghĩa và cú pháp bằng cách sử dụng một số thuật toán xử lý ngôn ngữ tự nhiên như: wor2vec, doc2vec, cod2vec... Bên cạnh đó, để cải tiến các phương pháp truyền thống này một số nghiên cứu gần đây thường tập trung áp dụng các kỹ thuật phân tích đồ thị kết hợp với các thuật toán học máy hoặc học sâu . Theo đó, các hướng tiếp cận thường phân tích mã nguồn thành các dạng đồ thị như cây cú pháp trừu tượng (Abstract syntax tree -AST), Đồ thị luồng điều khiển (Control Flow Graph -CFG), Đồ thị phụ thuộc chương trình (Program Dependence Graph -PDG). Đối với vấn đề phân loại đặc trưng mã nguồn thì các hướng tiếp cận chủ yếu sử dụng một số thuật toán học máy và học sâu để phát hiện các lỗ hổng của mã nguồn dựa trên vector đặc trưng của mã nguồn. Một số thuật toán học máy và học sâu thường được áp dụng bao gồm: Support Vector Machines (SVM); Decision Tree (DT), random forest (RF); Multi-layer Perceptron (MLP); Recurrent Neural Network (RNN); Convolutional Neural Network (CNN); Long short term memory (LSTM) và Bidirectional Long Short Term Memory.
» Tin mới nhất:
» Các tin khác: