Sicurezza e audit del codice 🔒
La sicurezza è il dominio dove l’agente è più utile come assistente e più pericoloso come sostituto. Può scansionare codice per secret, pattern vulnerabili e configurazioni insicure in pochi secondi. Ma non capisce il contesto aziendale, non conosce le threat model del tuo sistema, e non sostituisce mai la review umana. Questa guida definisce come usare l’agente per la sicurezza nel ciclo di sviluppo, non come fare security engineering in generale.
L’agente può trovare ciò che dimentichi. Non può decidere cosa è davvero pericoloso.
Confini con altri contenuti 📐
Questa guida non duplica la guida esistente Audit di sicurezza con AI generativa. Quella guida si concentra sul prompting per audit di sicurezza con LLM generici. Questa guida si concentra sul workflow dell’agente di coding: come integrare la sicurezza nel ciclo di sviluppo, come gestire i rischi specifici degli agenti (prompt injection, excessive agency, supply chain MCP), e quando fermarsi.
Quando usare l’agente per questo caso 🎯
- Secret scanning — cercare credenziali hardcoded, API key, token JWT nel codice.
- Analisi di diff — revisione di modifiche per pattern vulnerabili prima del merge.
- Scansione pre-commit — audit rapido prima di ogni commit.
- Verifica dipendenze — controllare che le librerie introdotte siano legittime.
- Aggiornamento policy — generare o aggiornare
.gitignore,.ignore, regole di sicurezza.
Quando NON usare l’agente ⛔
- Threat modeling completo — serve conoscenza del dominio aziendale.
- Audit di conformità — GDPR, PCI-DSS, SOC2 richiedono competenze specialistiche.
- Penetration testing — l’agente non può eseguire test di invasione.
- Revisione di architettura di sicurezza — decisioni di design, non scanning di codice.
Prompt di apertura 📝
“Scansiona [area/file] per: secret hardcoded, SQL injection, path traversal, XSS, credenziali in chiaro. Segnala con severità (CRITICA/ALTA/MEDIA/BASSA) e file:riga. NON applicare modifiche.”
Esempio concreto:
“Scansiona
src/per: (1) API key, token, password hardcoded; (2) query SQL non parametrizzate; (3) path traversal in input utente; (4) config con secret in chiaro. Segnala con severità e posizione esatta. NON applicare modifiche.”
Flusso di lavoro 🔧
1. Configurazione dei filtri 🛡️
Prima di tutto, assicurati che i segreti non entrino nella sessione dell’agente. Configura .gitignore e .ignore per escludere file sensibili.
# .gitignore — pattern essenziali
.env
.env.*
*.key
*.pem
credentials.json
service-account*.jsonSe l’agente legge un file
.envcon chiavi reali, quelle chiavi finiscono nel contesto della sessione. OWASP LLM02 classifica la divulgazione di dati sensibili come rischio critico.
2. Scansione dei segreti 🔑
Chiedi all’agente di cercare specificamente credenziali e segreti nel codice.
“Cerca nel codice: API key (AWS, GitHub, OpenAI, Stripe), token JWT, password hardcoded, certificati .pem, connection string con credenziali. Segnala ogni occorrenza con file:riga.”
3. Analisi dei pattern vulnerabili 🕵️
Richiedi l’analisi per le categorie OWASP principali:
- SQL Injection — query concatenane con input utente
- Command Injection — esecuzione comandi shell con input non sanitizzato
- Path Traversal — accesso a file con percorsi costruiti da input
- XSS — rendering di HTML non sanitizzato
- Hardcoded Credentials — segreti nel codice sorgente
“Analizza il codice rispetto a: SQL injection (query non parametrizzate), command injection (exec con input), path traversal (file access con input), XSS (HTML non sanitizzato). Per ogni vulnerabilità: severità, file:riga, descrizione, remediation.”
4. Verifica delle dipendenze 📦
Controlla che le librerie introdotte dall’agente siano legittime e non compromesse.
“Elenca tutte le dipendenze esterne importate nei file modificati. Per ogni dipendenza: verifica l’esistenza su registro ufficiale (npm, PyPI, Crates.io), segnala eventuali pacchetti insoliti o potenzialmente hallucinati.”
Questo passaggio protegge da slopsquatting: l’agente potrebbe inventare nomi di pacchetti che esistono ma sono malevoli.
5. Audit delle integrazioni MCP 🔌
Se il progetto usa server MCP, verifica che rispettino il principio del minimo privilegio.
“Ispeziona la configurazione MCP del progetto. Identifica server che concedono permessi di scrittura non vincolati o capacità di eseguire comandi shell arbitrari. Suggerisci regole di gating per operazioni ad alto impatto.”
6. Report e correzione 📝
Genera un report strutturato e applica le correzioni.
“Genera un report tabellare: Severità | File:Riga | Categoria OWASP | Rischio | Remediation. Poi applica le correzioni per i problemi CRITICI e ALTI.”
Template di prompt 📋
Template 1 — Audit completo
|
|
Template 2 — Audit MCP
|
|
OWASP Top 10 for LLM Applications 2025 📖
Riferimento rapido per le categorie più rilevanti nel contesto agenti di coding:
| ID | Nome | Rischio per agenti |
|---|---|---|
| LLM01 | Prompt Injection | Dati esterni con istruzioni nascoste che deviano l’agente |
| LLM02 | Sensitive Information Disclosure | File .env o chiavi nel contesto della sessione |
| LLM03 | Supply Chain Vulnerabilities | Librerie hallucinate o compromesse (slopsquatting) |
| LLM05 | Improper Output Handling | Output dell’agente usato senza sanitizzazione |
| LLM06 | Excessive Agency | Permessi eccessivi su tool, file system, shell |
| LLM07 | System Prompt Leakage | Esposizione delle regole di sicurezza configurate |
Anti-pattern 🚫
- Fidarsi ciecamente dell’agente — non correggere codice solo perché “l’AI l’ha generato sicuro”. Serve sempre un audit finale umano.
- Ignorare OWASP — non controllare l’output vs le categorie standard.
- Passare dati sensibili nel prompt — includere file
.envreali nella sessione. - Skill/plugin non attendibili — installare agenti o skill da fonti sconosciute.
- Delegare completamente la security review — il 45% del codice generato da AI contiene vulnerabilità (Veracode). L’agente è un prerevisione, non la revisione finale.
- Trascurare le dipendenze — anche in sicurezza, usare scanner per pacchetti.
Criteri di accettazione 📏
| Criterio | Requisito | Validazione |
|---|---|---|
| Zero segreti | Nessun hardcoded secret o token esposto | Scansione SAST (Trufflehog, Gitleaks) |
| Input sanitizzati | 100% query e comandi parametrizzati | Ispezione statica + test d’iniezione |
| Supply chain | Dipendenze validate su registri ufficiali | Check sum + analisi SBOM |
| Agenzia delimitata | Operazioni critiche con conferma umana | Audit log MCP + gate di autorizzazione |
Riferimenti della serie 📚
- Audit di sicurezza con AI generativa — prompting per audit (confini della serie)
- Configuring the repository — .gitignore, .ignore, configurazione
- Code review assistita — review di sicurezza come parte della code review
- Skills, hooks e MCP — sicurezza delle integrazioni MCP