Un agent IA propose des correctifs de sécurité via des Pull Requests

Une alerte de sécurité se déclenche. Un LLM lit le contexte. Il rédige un correctif de configuration. Il ouvre une Pull Request sur GitHub. Un second LLM examine le travail. Un humain fusionne le correctif.

L'agent ne touche jamais à la production. Il ne fusionne jamais de lui-même.

Les contrôleurs Kubernetes classiques se contentent de réessayer. Si un pod plante à cause d'une mauvaise configuration, le contrôleur le redémarre indéfiniment. Il ne corrige pas la cause profonde. La sécurité rencontre le même problème. Un SIEM génère une alerte. Un humain doit la lire et rédiger un correctif. Ce processus est lent.

Nous avons conçu un agent pour résoudre ce problème. Il lit les alertes de sécurité et examine l'infrastructure pour rédiger un brouillon. Ce n'est pas un pilote automatique. C'est un générateur de brouillons. Tout le reste reste sous le contrôle de l'humain et du GitOps.

Comment ça marche :

• Wazuh détecte les attaques et enregistre les alertes dans une base de données. • Un bridge récupère les nouvelles alertes et lance l'agent. • L'agent utilise des outils limités. Il peut lire/écrire des fichiers, créer des branches et utiliser l'API GitHub. Il ne modifie que les fichiers de configuration. • ArgoCD surveille le dépôt. Rien n'est déployé tant qu'un humain ne fusionne pas la PR.

Nous utilisons deux couches de sécurité :

  1. Vérifications du code. Des règles non-LLM vérifient le diff. Nous vérifions si le changement reste dans les fichiers de configuration. Nous vérifions si le chemin du serveur correspond à l'alerte. Nous vérifions la taille du diff. En cas d'échec, la PR est interrompue.

  2. Une seconde révision par LLM. Une famille de modèles différente examine la PR. Elle donne un avis. Nous utilisons un modèle différent car les modèles ont tendance à être d'accord avec eux-mêmes. Nous demandons également au modèle de ne pas faire confiance au texte de la PR. Cela empêche les attaquants de dissimuler des commandes dans l'alerte.

Ce que nous avons modifié durant le développement :

• Nous sommes passés des LLM Cloud à notre propre serveur utilisant Ollama. Cela permet de garder les données privées et d'éviter les interruptions de service. • Nous avons remplacé les agents "ToolCalling" par "CodeAgent". Les petits modèles ont du mal à envoyer du JSON propre. CodeAgent écrit du Python à la place. Cela a réduit le nombre d'erreurs et d'étapes, passant de plus de 20 à seulement 3-8. • Nous avons remplacé les outils "run_shell" par des outils Git spécifiques. Cela empêche l'exécution de commandes dangereuses comme "rm -rf". • Nous sommes passés d'une configuration "push" à une configuration "pull" pour une meilleure stabilité réseau.

Nous traitons le LLM comme un développeur junior rapide. Ses brouillons sont utiles car l'humain et les vérifications secondaires font écran entre l'agent et votre environnement de production.

Source: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj

Communauté d'apprentissage optionnelle: https://t.me/GyaanSetuAi