Un agente AI propone correzioni di sicurezza tramite Pull Request

Si attiva un avviso di sicurezza. Un LLM legge il contesto. Scrive una correzione di configurazione. Apre una Pull Request su GitHub. Un secondo LLM revisiona il lavoro. Un essere umano integra la correzione.

L'agente non tocca mai la produzione. Non effettua mai il merge autonomamente.

I normali controller Kubernetes si limitano a riprovare. Se un pod va in crash a causa di una configurazione errata, il controller lo riavvia all'infinito. Non risolve la causa principale. Anche la sicurezza ha lo stesso problema. Un SIEM genera un avviso. Un essere umano deve leggerlo e scrivere una correzione. Questo processo è lento.

Abbiamo costruito un agente per risolvere questo problema. Legge gli avvisi di sicurezza e analizza l'infrastruttura per scrivere una bozza. Non si tratta di un pilota automatico. È un generatore di bozze. Tutto il resto rimane sotto il controllo umano e GitOps.

Come funziona:

• Wazuh rileva gli attacchi e salva gli avvisi in un database. • Un bridge recupera i nuovi avvisi e avvia l'agente. • L'agente utilizza strumenti limitati. Può leggere/scrivere file, creare branch e utilizzare l'API di GitHub. Modifica solo i file di configurazione. • ArgoCD monitora il repository. Nulla viene distribuito finché un essere umano non effettua il merge della PR.

Utilizziamo due livelli di sicurezza:

  1. Controlli del codice. Regole non basate su LLM verificano la diff. Controlliamo se la modifica rimane all'interno dei file di configurazione. Controlliamo se il percorso del server corrisponde all'avviso. Controlliamo la dimensione della diff. In caso di errore, la PR viene bloccata.

  2. Una seconda revisione tramite LLM. Una famiglia di modelli differente legge la PR. Fornisce un parere. Utilizziamo un modello diverso perché i modelli spesso concordano con se stessi. Diciamo inoltre al modello di non fidarsi del testo della PR. Questo impedisce agli attaccanti di nascondere comandi all'interno dell'avviso.

Cosa abbiamo cambiato durante lo sviluppo:

• Siamo passati dai Cloud LLM al nostro server utilizzando Ollama. Questo mantiene i dati privati e previene interruzioni del servizio. • Abbiamo sostituito gli agenti "ToolCalling" con "CodeAgent". I modelli piccoli hanno difficoltà a inviare JSON puliti. CodeAgent scrive invece in Python. Ciò ha ridotto gli errori e i passaggi da oltre 20 a 3-8. • Abbiamo sostituito gli strumenti "run_shell" con strumenti Git specifici. Questo impedisce comandi pericolosi come "rm -rf". • Siamo passati da una configurazione "push" a una "pull" per una migliore stabilità di rete.

Trattiamo l'LLM come un rapido sviluppatore junior. Le sue bozze sono utili perché gli esseri umani e i controlli secondari si frappongono tra l'agente e l'ambiente di produzione.

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

Community di apprendimento opzionale: https://t.me/GyaanSetuAi