Un agente de IA propone correcciones de seguridad mediante Pull Requests
Se activa una alerta de seguridad. Un LLM lee el contexto. Escribe una corrección de configuración. Abre un Pull Request en GitHub. Un segundo LLM revisa el trabajo. Un humano fusiona la corrección.
El agente nunca toca producción. Nunca realiza el merge por sí mismo.
Los controladores normales de Kubernetes simplemente reintentan. Si un pod falla debido a una mala configuración, el controlador lo reinicia indefinidamente. No soluciona la causa raíz. La seguridad tiene el mismo problema. Un SIEM genera una alerta. Un humano debe leerla y escribir una corrección. Este proceso es lento.
Hemos construido un agente para resolver esto. Lee las alertas de seguridad y analiza la infraestructura para escribir un borrador. Esto no es un piloto automático. Es un generador de borradores. Todo lo demás permanece bajo el control humano y de GitOps.
Cómo funciona:
• Wazuh detecta ataques y guarda las alertas en una base de datos. • Un puente extrae las nuevas alertas e inicia el agente. • El agente utiliza herramientas limitadas. Puede leer/escribir archivos, crear ramas y usar la API de GitHub. Solo edita archivos de configuración. • ArgoCD vigila el repositorio. Nada se despliega hasta que un humano fusiona el PR.
Utilizamos dos capas de seguridad:
Comprobaciones de código. Reglas que no dependen de LLM verifican el diff. Comprobamos si el cambio se mantiene dentro de los archivos de configuración. Comprobamos si la ruta del servidor coincide con la alerta. Comprobamos el tamaño del diff. Si falla, el PR se detiene.
Una segunda revisión por LLM. Una familia de modelos diferente lee el PR. Proporciona una opinión. Utilizamos un modelo distinto porque los modelos suelen estar de acuerdo consigo mismos. También le indicamos al modelo que no confíe en el texto del PR. Esto evita que los atacantes oculten comandos en la alerta.
Qué cambiamos durante el desarrollo:
• Pasamos de Cloud LLMs a nuestro propio servidor usando Ollama. Esto mantiene los datos privados y evita interrupciones del servicio. • Reemplazamos los agentes "ToolCalling" por "CodeAgent". Los modelos pequeños tienen dificultades para enviar JSON limpio. CodeAgent escribe Python en su lugar. Esto redujo los errores y los pasos de más de 20 a entre 3 y 8. • Reemplazamos las herramientas "run_shell" por herramientas de Git específicas. Esto evita comandos peligrosos como "rm -rf". • Pasamos de una configuración de "push" a una de "pull" para una mejor estabilidad de red.
Tratamos al LLM como a un desarrollador junior rápido. Sus borradores son útiles porque los humanos y las comprobaciones secundarias se interponen entre el agente y su entorno de producción.
Fuente: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi
