Broken by Default: A Formal Verification Study of Security Vulnerabilities in AI-Generated Code

Lo studio "Broken by Default" dimostra tramite verifica formale che il 55,8% del codice generato da sette modelli linguistici avanzati contiene vulnerabilità di sicurezza matematicamente provate, rivelando che gli strumenti di sicurezza attuali ne individuano solo una frazione minima e che le istruzioni esplicite non riescono a mitigare efficacemente il rischio.

Autori originali: Dominik Blain, Maxime Noiseux

Pubblicato 2026-04-08✓ Author reviewed
📖 5 min di lettura🧠 Approfondimento

Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Each language version is independently generated for its own context, not a direct translation.

Immagina di aver appena assunto il programmatore più intelligente e veloce del mondo. È un genio che scrive codice per te in un istante, 24 ore su 24. Ti chiede di scrivere una funzione per gestire i soldi, un sistema di sicurezza o un database. Lui lo fa subito.

Purtroppo, questo studio ci dice una cosa sconvolgente: questo genio è distratto e scrive codice pericoloso più della metà delle volte.

Ecco i punti chiave, spiegati con delle metafore:

1. Il "Genio Distratto" (I Risultati Principali)

Gli autori hanno chiesto a 7 diversi modelli di intelligenza artificiale (tra cui i più famosi come GPT-4o, Claude e Gemini) di scrivere 500 pezzi di codice su temi delicati (come la gestione della memoria o la crittografia).

  • Il risultato: In media, 56 volte su 100, il codice prodotto conteneva un buco di sicurezza grave.
  • La metafora: È come se tu chiedessi a un architetto di costruire 100 ponti. Di questi, 56 crollerebbero appena ci passi sopra con un'auto. Il modello migliore (Gemini) ne ha "salvati" solo 52 su 100, mentre il peggiore (GPT-4o) ne ha rovinati 62. Nessuno ha raggiunto un livello di sicurezza accettabile.

2. La "Prova Matematica" (Non sono solo sospetti)

Fino ad oggi, molti studi dicevano: "Ehi, questo codice sembra strano, forse è pericoloso".
Questo studio ha fatto di più. Ha usato un super-calcolatore matematico chiamato Z3 (immaginalo come un detective che non si accontenta di "sembra", ma vuole la prova fisica).

  • Cosa ha fatto: Il detective Z3 ha preso il codice generato dall'AI e ha detto: "Dimostrami matematicamente che se inserisco questo numero specifico, il sistema si rompe".
  • Il verdetto: L'AI ha fallito. Il detective ha trovato 1.055 prove matematiche che il codice si poteva hackerare. Non è un "forse", è un "sicuro".
  • La verifica reale: Hanno anche provato a rompere il codice nella vita reale (come un test crash di un'auto) e 6 volte su 7 il codice si è effettivamente rotto, confermando che i buchi erano reali.

3. Il "Furto di Abitudini" (Perché succede?)

Perché un'intelligenza così avanzata sbaglia così tanto?

  • La metafora: Immagina che l'AI sia uno studente che ha letto tutti i libri di codice mai scritti su internet. Il problema è che la maggior parte del codice scritto dagli umani in passato (specialmente in C/C++) conteneva errori di sicurezza. L'AI ha imparato a memoria questi errori, pensando che fossero la norma.
  • Il risultato: Quando le chiedi di scrivere codice sicuro, lei riproduce le "cattive abitudini" che ha imparato dai suoi libri di testo. È come se un cuoco che ha mangiato solo cibo spazzatura per anni, provasse a cucinare una cena sana: sa come si fa, ma il suo istinto lo porta a mettere troppo sale e zucchero.

4. Il "Falso Amico" (I Prompt di Sicurezza)

Molti pensano: "Basta chiedere gentilmente all'AI di stare attenta!".

  • L'esperimento: Hanno provato a dire all'AI: "Per favore, scrivi codice sicuro, controlla gli errori, sii prudente".
  • Il risultato: È stato inutile. Il codice è rimasto pericoloso quasi quanto prima.
  • La metafora: È come dire a un bambino che corre in strada: "Per favore, corri piano e guarda le macchine". Se il bambino ha l'abitudine di correre, un semplice "per favore" non basta a cambiare il suo comportamento istintivo. Le istruzioni di sicurezza sono state ignorate dal "cervello" dell'AI.
  • Un dettaglio importante: Quando gli autori hanno analizzato più da vicino questo fenomeno su un piccolo gruppo di 50 richieste (un sottogruppo del test totale), hanno visto che rimuovere queste istruzioni di sicurezza faceva peggiorare le prestazioni di circa 4 punti. Questo conferma che, anche su piccola scala, l'AI tende a ignorare le richieste di prudenza, ma il dato principale si riferisce all'intero test su larga scala.

5. I "Controllori del Pass" (Gli Strumenti di Sicurezza)

C'è un altro problema: gli strumenti che usiamo oggi per controllare il codice (come antivirus o scanner di sicurezza) non vedono questi errori.

  • La metafora: Immagina di avere un ispettore di sicurezza che controlla se le porte sono chiuse. L'AI però non ha lasciato la porta aperta; ha costruito il muro con dei mattoni che si sgretolano se ci metti sopra un peso specifico. L'ispettore guarda la porta e dice: "Tutto ok!", mentre il muro crolla.
  • Il dato: Gli strumenti professionali hanno trovato solo il 7% degli errori. Il 98% degli errori provati matematicamente dall'AI erano invisibili a questi strumenti.

6. Il "Paradosso del Critico" (L'AI sa di sbagliare)

Questa è la parte più strana e inquietante.

  • L'esperimento: Hanno preso il codice sbagliato generato dall'AI e lo hanno rimandato alla stessa AI, chiedendole: "C'è un errore qui?".
  • Il risultato: L'AI ha detto: "Sì, c'è un errore!" nel 79% dei casi.
  • Il paradosso: L'AI sa come scrivere codice sicuro e sa riconoscere gli errori quando li vede, ma quando deve scrivere il codice da zero, non lo fa. È come un professore di guida che sa esattamente come si guida in sicurezza, ma quando sale alla guida lui stesso, sbaglia frenate e sterzate.

In sintesi: Cosa dobbiamo fare?

Lo studio conclude con un messaggio forte: Non fidarsi ciecamente dell'AI per il codice critico.

  1. L'AI scrive codice "rotto" di default.
  2. Chiederle di stare attenta non basta.
  3. Gli strumenti attuali non la controllano abbastanza bene.
  4. Serve una verifica umana o matematica molto rigorosa prima di usare quel codice.

È come se avessimo trovato un nuovo tipo di cemento che sembra solido ma crolla sotto un peso specifico. Finché non impariamo a testarlo con metodi matematici (come fa questo studio), non dovremmo usarlo per costruire grattacieli.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →