AI-agent stelt beveiligingsfixes voor via Pull Requests

Een beveiligingswaarschuwing wordt geactiveerd. Een LLM leest de context. Het schrijft een configuratie-fix. Het opent een GitHub Pull Request. Een tweede LLM beoordeelt het werk. Een mens merget de fix.

De agent raakt de productieomgeving nooit aan. Hij voert nooit zelfstandig een merge uit.

Normale Kubernetes-controllers proberen het gewoon opnieuw. Als een pod crasht door een verkeerde configuratie, blijft de controller deze eindeloos herstarten. De oorzaak wordt niet opgelost. Beveiliging heeft hetzelfde probleem. Een SIEM geeft een waarschuwing. Een mens moet deze lezen en een fix schrijven. Dit proces is traag.

We hebben een agent gebouwd om dit op te lossen. Deze leest beveiligingswaarschuwingen en bekijkt de infrastructuur om een concept te schrijven. Dit is geen autopilot. Het is een conceptgenerator. De rest blijft onder menselijke en GitOps-controle.

Hoe het werkt:

• Wazuh detecteert aanvallen en slaat waarschuwingen op in een database. • Een bridge haalt nieuwe waarschuwingen op en start de agent. • De agent gebruikt beperkte tools. Hij kan bestanden lezen/schrijven, branches aanmaken en de GitHub API gebruiken. Hij bewerkt alleen configuratiebestanden. • ArgoCD houdt de repo in de gaten. Er wordt niets uitgerold totdat een mens de PR merget.

We gebruiken twee veiligheidslagen:

  1. Code-checks. Niet-LLM-regels verifiëren de diff. We controleren of de wijziging beperkt blijft tot configuratiebestanden. We controleren of het serverpad overeenkomt met de waarschuwing. We controleren de grootte van de diff. Als dit mislukt, wordt de PR stopgezet.

  2. Een tweede LLM-review. Een andere modelfamilie leest de PR. Deze geeft een oordeel. We gebruiken een ander model omdat modellen vaak met zichzelf instemmen. We vertellen het model ook dat het de PR-tekst niet moet vertrouwen. Dit voorkomt dat aanvallers commando's verbergen in de waarschuwing.

Wat we tijdens de ontwikkeling hebben aangepast:

• We zijn overgestapt van Cloud LLM's naar onze eigen server met behulp van Ollama. Dit houdt gegevens privé en voorkomt onderbrekingen van de dienstverlening. • We hebben "ToolCalling"-agents vervangen door "CodeAgent". Kleine modellen hebben moeite met het versturen van schone JSON. CodeAgent schrijft in plaats daarvan Python. Dit heeft het aantal fouten en stappen verminderd van meer dan 20 naar 3-8. • We hebben "run_shell"-tools vervangen door specifieke Git-tools. Dit voorkomt gevaarlijke commando's zoals "rm -rf". • We zijn overgestapt van een "push"-opstelling naar een "pull"-opstelling voor een betere netwerkstabiliteit.

We behandelen de LLM als een snelle junior developer. De concepten zijn nuttig omdat mensen en secundaire controles tussen de agent en je productieomgeving staan.

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

Optionele leercommunity: https://t.me/GyaanSetuAi