AI Agent Đề xuất các Bản sửa lỗi Bảo mật thông qua Pull Request
Một cảnh báo bảo mật được kích hoạt. Một LLM đọc ngữ cảnh. Nó viết một bản sửa lỗi cấu hình. Nó mở một GitHub Pull Request. Một LLM thứ hai xem xét công việc. Một con người sẽ merge bản sửa lỗi.
Agent này không bao giờ chạm vào môi trường production. Nó không bao giờ tự merge.
Các Kubernetes controller thông thường chỉ thực hiện thử lại (retry). Nếu một pod bị crash do cấu hình lỗi, controller sẽ khởi động lại nó mãi mãi. Nó không giải quyết được nguyên nhân gốc rễ. Bảo mật cũng gặp vấn đề tương tự. Một SIEM đưa ra cảnh báo. Một con người phải đọc nó và viết bản sửa lỗi. Quy trình này rất chậm.
Chúng tôi đã xây dựng một agent để giải quyết vấn đề này. Nó đọc các cảnh báo bảo mật và xem xét hạ tầng để viết một bản thảo. Đây không phải là chế độ tự lái (autopilot). Nó là một trình tạo bản thảo. Mọi thứ khác vẫn nằm dưới sự kiểm soát của con người và GitOps.
Cách thức hoạt động:
• Wazuh phát hiện các cuộc tấn công và lưu cảnh báo vào cơ sở dữ liệu. • Một bridge kéo các cảnh báo mới về và khởi chạy agent. • Agent sử dụng các công cụ bị giới hạn. Nó có thể đọc/ghi tệp, tạo branch và sử dụng GitHub API. Nó chỉ chỉnh sửa các tệp cấu hình. • ArgoCD theo dõi repo. Không có gì được deploy cho đến khi một con người merge PR.
Chúng tôi sử dụng hai lớp an toàn:
Kiểm tra mã nguồn. Các quy tắc không phải LLM sẽ xác minh diff. Chúng tôi kiểm tra xem thay đổi có nằm trong các tệp cấu hình hay không. Chúng tôi kiểm tra xem đường dẫn máy chủ có khớp với cảnh báo hay không. Chúng tôi kiểm tra kích thước của diff. Nếu thất bại, PR sẽ bị dừng lại.
Một LLM thứ hai xem xét. Một dòng mô hình (model family) khác sẽ đọc PR. Nó đưa ra ý kiến đánh giá. Chúng tôi sử dụng một mô hình khác vì các mô hình thường có xu hướng đồng ý với chính mình. Chúng tôi cũng yêu cầu mô hình không tin tưởng vào nội dung văn bản của PR. Điều này ngăn chặn kẻ tấn công ẩn các câu lệnh trong cảnh báo.
Những gì chúng tôi đã thay đổi trong quá trình phát triển:
• Chúng tôi đã chuyển từ Cloud LLMs sang máy chủ riêng sử dụng Ollama. Điều này giúp giữ dữ liệu riêng tư và ngăn chặn việc gián đoạn dịch vụ. • Chúng tôi đã thay thế các agent "ToolCalling" bằng "CodeAgent." Các mô hình nhỏ gặp khó khăn trong việc gửi JSON chuẩn. CodeAgent viết Python thay thế. Điều này đã giảm số lỗi và các bước thực hiện từ hơn 20 xuống còn 3-8. • Chúng tôi đã thay thế các công cụ "run_shell" bằng các công cụ Git cụ thể. Điều này ngăn chặn các câu lệnh nguy hiểm như "rm -rf". • Chúng tôi đã chuyển từ thiết lập "push" sang thiết lập "pull" để có độ ổn định mạng tốt hơn.
Chúng tôi coi LLM như một lập trình viên junior nhanh nhẹn. Các bản thảo của nó rất hữu ích vì con người và các bước kiểm tra phụ trợ luôn đứng giữa agent và môi trường production của bạn.
Source: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj
Optional learning community: https://t.me/GyaanSetuAi
