Agen AI Mengusulkan Perbaikan Keamanan Melalui Pull Request
Sebuah peringatan keamanan terpicu. Sebuah LLM membaca konteksnya. Ia menulis perbaikan konfigurasi. Ia membuka GitHub Pull Request. LLM kedua meninjau pekerjaan tersebut. Seorang manusia melakukan merge pada perbaikan tersebut.
Agen tersebut tidak pernah menyentuh produksi. Ia tidak pernah melakukan merge sendiri.
Kontroler Kubernetes biasa hanya melakukan retry. Jika sebuah pod crash karena konfigurasi yang buruk, kontroler akan merestart-nya terus-menerus. Ia tidak memperbaiki akar masalahnya. Keamanan memiliki masalah yang sama. Sebuah SIEM memicu peringatan. Seorang manusia harus membacanya dan menulis perbaikan. Proses ini lambat.
Kami membangun sebuah agen untuk menyelesaikan masalah ini. Ia membaca peringatan keamanan dan memeriksa infrastruktur untuk menulis draf. Ini bukan autopilot. Ini adalah generator draf. Segala hal lainnya tetap berada di bawah kendali manusia dan GitOps.
Cara kerjanya:
• Wazuh mendeteksi serangan dan menyimpan peringatan ke dalam database. • Sebuah bridge menarik peringatan baru dan menjalankan agen. • Agen menggunakan alat yang terbatas. Ia dapat membaca/menulis file, membuat branch, dan menggunakan GitHub API. Ia hanya mengedit file konfigurasi. • ArgoCD memantau repo. Tidak ada yang dideploy sampai seorang manusia melakukan merge pada PR tersebut.
Kami menggunakan dua lapisan keamanan:
Pemeriksaan kode. Aturan non-LLM memverifikasi diff. Kami memeriksa apakah perubahan tetap berada di dalam file konfigurasi. Kami memeriksa apakah jalur server sesuai dengan peringatan. Kami memeriksa ukuran diff. Jika gagal, PR akan dihentikan.
Peninjauan oleh LLM kedua. Keluarga model yang berbeda membaca PR tersebut. Ia memberikan opini. Kami menggunakan model yang berbeda karena model sering kali setuju dengan dirinya sendiri. Kami juga memberi tahu model tersebut untuk tidak mempercayai teks PR. Hal ini mencegah penyerang menyembunyikan perintah di dalam peringatan.
Apa yang kami ubah selama pengembangan:
• Kami beralih dari Cloud LLM ke server kami sendiri menggunakan Ollama. Ini menjaga privasi data dan mencegah gangguan layanan. • Kami mengganti agen "ToolCalling" dengan "CodeAgent." Model-model kecil kesulitan mengirimkan JSON yang bersih. CodeAgent menulis Python sebagai gantinya. Ini mengurangi kesalahan dan langkah dari 20+ menjadi 3-8. • Kami mengganti alat "run_shell" dengan alat Git yang spesifik. Ini mencegah perintah berbahaya seperti "rm -rf". • Kami beralih dari pengaturan "push" ke pengaturan "pull" untuk stabilitas jaringan yang lebih baik.
Kami memperlakukan LLM seperti pengembang junior yang cepat. Drafnya berguna karena manusia dan pemeriksaan sekunder berdiri di antara agen dan lingkungan produksi Anda.
Sumber: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj
Komunitas pembelajaran opsional: https://t.me/GyaanSetuAi
