Audit di sicurezza con AI generativa 🤖🔒
Perché affidarsi all’AI per la sicurezza? 🧐
L’AI generativa non dorme mai, non si distrae e non si lamenta se le chiedi di rileggere per la decima volta lo stesso file. Ma può davvero sostituire l’occhio clinico di chi ha visto più bug che tramonti? Spoiler: no, ma può essere un alleato prezioso per scovare vulnerabilità, configurazioni insicure e pratiche da brividi.
Vantaggi:
- Analisi rapida di grandi codebase
- Individuazione di pattern rischiosi (anche quelli che pensavi di aver nascosto bene)
- Suggerimenti pratici e spesso… spietati
Limiti:
- Non capisce il contesto aziendale (ancora!)
- Può segnalare falsi positivi (o ignorare il bug che ti farà perdere il sonno)
- Non sostituisce la revisione umana, ma la rende più efficace
Come funziona un audit AI-driven? 🛠️
L’idea è semplice: fornisci all’AI un prompt ben strutturato, le dai in pasto il codice e aspetti che ti restituisca una lista di problemi (e qualche consiglio non richiesto). Il segreto? Scrivere un prompt chiaro, specifico e senza lasciare spazio a interpretazioni creative.
⚡️ Questo tipo di prompt offre i risultati migliori se utilizzato con agenti specializzati nell’analisi del codice, come GitHub Copilot, ChatGPT con plugin per il code review o strumenti simili.
Ecco un esempio di prompt che puoi usare per una code review di sicurezza:
1Analizza il codice ed esegui una code review focalizzata sulla sicurezza.
2
3Identifica:
4
5- vulnerabilità
6- configurazioni insicure
7- pratiche o pattern di programmazione insicuri
8- chiamate a funzioni deprecate o pericolose
9- credenziali hardcoded o informazioni sensibili
10- errori o eccezioni non gestite
11
12Per ogni problema rilevato riportando la sezione di codice coinvolta e fornisci:
13
14- una valutazione del rischio (Alta, Media, Bassa)
15- una descrizione chiara
16- un suggerimento pratico di mitigazione
17
18Esegui solo analisi sulla sicurezza, ignora refactoring generico o ottimizzazioni di performance, non aggiungere ulteriori considerazioni.
19
20Crea un file `AUDIT-{YYYYMMDD}.md` nella root del progetto.
Esempio di risultato audit:
1# Security Audit Report
2
3## Vulnerabilità Identificate
4
5### 1. Permessi File Non Sicuri
6
7**Severità: ALTA**
8
9**Localizzazione**:
10
11- pkg/model/operations.go:
12
13```go
14err := os.Mkdir(newDirPath, os.ModePerm) // 0777
15err := os.WriteFile(newFilePath, []byte{}, os.ModePerm) // 0777
16```
17
18**Descrizione**: L'uso di `os.ModePerm` (0777) per la creazione di file e directory concede permessi completi a tutti gli utenti, esponendo potenzialmente dati sensibili.
19
20**Mitigazione**:
21
22- Utilizzare permessi più restrittivi come 0750 per directory e 0640 per file
23- Implementare una funzione che determini i permessi appropriati basandosi sul contesto e l'utente
24
25### 2. Command Injection Vulnerability
26
27**Severità: ALTA**
28
29**Localizzazione**:
30
31- pkg/model/model.go:
32
33```go
34cmd := exec.Command("code", path)
35cmd := exec.Command("open", path)
36cmd := exec.Command("xdg-open", path)
37```
38
39**Descrizione**: L'esecuzione di comandi con input non sanitizzato può portare a command injection se il path contiene caratteri speciali o sequenze maligne.
40
41**Mitigazione**:
42
43- Validare e sanitizzare i path prima dell'esecuzione
44- Utilizzare filepath.Clean() per normalizzare i path
45- Implementare una whitelist di caratteri permessi
Best practice per audit AI e sicurezza 🦾
- Non fidarti ciecamente: l’AI può essere brillante, ma anche molto creativa…
- Valida sempre i risultati: ogni segnalazione va verificata da un umano (meglio se caffeinato)
- Integra l’AI nel processo: usala come primo filtro, poi passa la palla al team di sicurezza
- Documenta tutto: salva i report, annota le decisioni e aggiorna la documentazione. Un giorno ti ringrazierai.
Limiti e rischi da non sottovalutare ⚠️
- L’AI non conosce le policy interne né le eccezioni “storiche” del tuo progetto
- Potrebbe suggerire soluzioni non compatibili con il tuo stack
- Non sostituisce la formazione del team: la sicurezza è (ancora) una responsabilità umana
Conclusione 🎯
L’AI generativa è come un collega iperattivo: ti aiuta a trovare problemi che non sapevi di avere, ma ogni tanto va tenuta a bada. Usala per velocizzare l’audit di sicurezza, ma non delegare mai il giudizio finale. E ricorda: la miglior difesa resta sempre una buona dose di sano scetticismo (e qualche test in più).