
Xây dựng hệ thống khai thác lỗ hổng bằng AI, Phần 1
"This article details a three-layer pipeline for prioritizing vulnerability findings using AI. The pipeline filters scanner results through multi-scanner agreement, structural verification via AST analysis, and deployment context analysis using IaC templates. The goal is to reduce false positives and focus engineer attention on exploitable vulnerabilities."
Pipeline này giúp giảm báo động giả và tăng độ tin cậy của kết quả quét lỗ hổng. Việc xác minh cấu trúc bằng AST giúp đảm bảo rằng các lỗ hổng được báo cáo thực sự tồn tại trong codebase.
Việc tự động hóa quy trình ưu tiên lỗ hổng giúp tiết kiệm thời gian và nguồn lực cho các đội bảo mật. Pipeline này có thể giúp các doanh nghiệp Việt Nam giảm thiểu rủi ro bảo mật và cải thiện tư thế bảo mật.
AWS vừa công bố một pipeline ba lớp để ưu tiên các kết quả quét lỗ hổng bằng AI. Pipeline này lọc kết quả từ nhiều công cụ quét, kiểm tra cấu trúc bằng phân tích AST (Abstract Syntax Tree - Cây cú pháp trừu tượng), và phân tích ngữ cảnh triển khai bằng template IaC (Infrastructure as Code - Mã hóa cơ sở hạ tầng). Mục tiêu là giảm thiểu báo động giả và tập trung sự chú ý của kỹ sư vào các lỗ hổng có thể khai thác được.
Số lượng kết quả quét lỗ hổng thường vượt quá khả năng xử lý thủ công. Các nhà phát triển triển khai nhiều code và dependencies hơn, dẫn đến số lượng kết quả tiềm năng tăng lên. Nhiều kết quả quét không thực sự có thể khai thác. Những kết quả quan trọng cần đến tay kỹ sư nhanh chóng, kèm theo bằng chứng để họ có thể hành động ngay lập tức thay vì phân tích lại.
Bài viết này trình bày cách thu hẹp khoảng cách giữa phát hiện và hành động. Pipeline được xây dựng gồm ba lớp, lọc các kết quả quét thô thành một tập hợp ưu tiên nhỏ với bằng chứng khai thác được. Bài viết tiếp theo sẽ đề cập đến file cấu hình điều khiển hành vi của mô hình bên trong pipeline này.
Giá trị của pipeline nằm ở logic lọc và tiêu chuẩn bằng chứng, không phải công cụ cụ thể nào. Bạn có thể thay thế công cụ quét và mô hình AI của riêng mình mà không thay đổi kiến trúc. Nhà cung cấp AI, stack cơ sở hạ tầng và bộ công cụ quét của bạn có thể khác với của AWS. Các quyết định kiến trúc – lọc ở mỗi lớp, bằng chứng nào được chấp nhận, khi nào ngừng tin tưởng mô hình – vẫn áp dụng được.
Hệ thống khai thác lỗ hổng là gì
Hệ thống khai thác lỗ hổng là một framework tự động, cung cấp các đầu vào được kiểm soát cho hệ thống và quan sát xem đầu ra có khớp với hành vi mong đợi hay không. Trong phát hiện lỗ hổng, hệ thống này lấy từng kết quả tiềm năng, xây dựng một bài kiểm tra để đánh giá khả năng khai thác, thực thi bài kiểm tra trong môi trường được kiểm soát và ghi lại bằng chứng.
Các công cụ SAST (Static Application Security Testing - Kiểm thử bảo mật ứng dụng tĩnh) truyền thống dựa vào khớp mẫu, với phân tích luồng dữ liệu khác nhau tùy theo công cụ và ngôn ngữ. Chúng phát hiện tốt các điểm cuối đã biết nhưng gặp khó khăn với các chuỗi nhiều bước, lỗi logic nghiệp vụ, khử trùng phụ thuộc vào ngữ cảnh và khả năng tiếp cận điểm cuối từ đầu vào do kẻ tấn công kiểm soát. Phân tích tăng cường AI giải quyết khoảng cách suy luận đó: theo dõi qua các file, suy luận ý định và đánh giá ngữ cảnh triển khai.
Điểm khác biệt quan trọng là chúng ta không chạy mô hình trên codebase. Codebase là ngữ cảnh được truyền cho mô hình với một prompt cụ thể. Mô hình nhận code và áp dụng suy luận về cách dữ liệu lưu chuyển, ranh giới tin cậy ở đâu và các mẫu bảo mật liên quan có tồn tại hay không.
Xây dựng pipeline
Các công cụ quét bảo mật có thể tạo ra một lượng lớn kết quả mỗi khi chạy. Nhiều kết quả trong số này là báo động giả. Để phân tách các vấn đề thực sự khỏi tiếng ồn, pipeline lọc kết quả qua ba lớp. Mỗi lớp áp dụng một loại bằng chứng khác nhau. Đến cuối cùng, một số lượng nhỏ các vấn đề được ưu tiên, được hỗ trợ bởi bằng chứng tài liệu, sẽ còn lại.
Lớp 1: Đồng ý giữa nhiều công cụ quét
Độ tin cậy được đặt lên hàng đầu. Chạy nhiều công cụ quét độc lập trên cùng một codebase: khi hai hoặc nhiều công cụ cùng xác định một kết quả, độ tin cậy sẽ tăng lên. Nếu chỉ một công cụ báo cáo một vấn đề và không có công cụ nào khác đồng ý, pipeline sẽ đánh dấu kết quả đó để xem xét kỹ hơn.
Phương pháp này – đồng ý giữa nhiều công cụ quét – là một cách tiết kiệm chi phí để tăng độ tin cậy. Nó hoạt động với các công cụ hiện có của bạn và không yêu cầu cơ sở hạ tầng mới.
Lớp 2: Xác minh cấu trúc
Lớp thứ hai xác minh cấu trúc. Các công cụ quét được hỗ trợ bởi AI mô tả cách chúng nghĩ rằng một lỗ hổng hoạt động: dữ liệu đi vào qua một hàm, đi qua một hàm khác và đến một điểm có thể gây hại. Tuy nhiên, những mô tả này có thể không chính xác.
Trước khi một kết quả được chuyển tiếp, pipeline sẽ xác minh nó so với code thực tế. Nó kiểm tra xem hàm mà công cụ quét đề cập có tồn tại, file có tồn tại và dữ liệu có thể lưu chuyển theo đường dẫn do công cụ quét mô tả hay không. Nếu không, pipeline sẽ từ chối kết quả.
Bước xác minh này sử dụng cây cú pháp trừu tượng (AST) của code: một bản đồ có cấu trúc về cách các hàm, file và luồng dữ liệu kết nối trong codebase của bạn. Bước này giúp bảo vệ độ tin cậy của đầu ra pipeline. Nếu người đánh giá không xác minh kết quả, các nhóm sẽ nhanh chóng học cách không tin tưởng kết quả, làm giảm giá trị bảo mật của công cụ.
Lớp 3: Ngữ cảnh triển khai
Lớp cuối cùng thêm ngữ cảnh triển khai. Các lỗ hổng tồn tại trong ngữ cảnh của một kiến trúc, có thể bao gồm các biện pháp kiểm soát bảo vệ. Các biện pháp kiểm soát này có thể bao gồm các quy tắc AWS WAF, phân vùng mạng, yêu cầu xác thực và xác thực đầu vào.
Lớp này đọc các template cơ sở hạ tầng dưới dạng mã (IaC) của bạn – chẳng hạn như file CloudFormation hoặc Terraform xác định kiến trúc đám mây của bạn – cùng với mã nguồn ứng dụng của bạn. Sau đó, nó kiểm tra xem kẻ tấn công có thể khai thác lỗ hổng bằng cách bỏ qua các biện pháp kiểm soát tại chỗ hay không.
Câu hỏi thường gặp
Pipeline này gồm có bao nhiêu lớp?
Pipeline này gồm ba lớp: đồng ý giữa nhiều công cụ quét, xác minh cấu trúc và ngữ cảnh triển khai. Mỗi lớp áp dụng một loại bằng chứng khác nhau để lọc kết quả quét lỗ hổng.
AST là gì?
AST là viết tắt của Abstract Syntax Tree (Cây cú pháp trừu tượng). Đây là một bản đồ có cấu trúc về cách các hàm, file và luồng dữ liệu kết nối trong codebase của bạn. Nó được sử dụng để xác minh cấu trúc của các lỗ hổng tiềm năng.
IaC là gì?
IaC là viết tắt của Infrastructure as Code (Cơ sở hạ tầng dưới dạng mã). Nó đề cập đến việc quản lý và cung cấp cơ sở hạ tầng thông qua mã, chẳng hạn như file CloudFormation hoặc Terraform. Pipeline sử dụng IaC để đánh giá lỗ hổng trong ngữ cảnh triển khai thực tế.
Góc nhìn của Orange Cloud
Theo chúng tôi, pipeline này có thể giúp các đội vận hành ứng dụng ở Việt Nam giảm đáng kể thời gian xử lý các cảnh báo bảo mật. Thay vì phải tự mình kiểm tra từng kết quả quét, kỹ sư có thể tập trung vào những vấn đề đã được xác minh và ưu tiên cao. Điều đáng chú ý là việc tích hợp với các template IaC cho phép đánh giá lỗ hổng trong ngữ cảnh thực tế của hạ tầng, điều này đặc biệt quan trọng đối với các ứng dụng được triển khai trên AWS.