Il modello propone la prova e un verificatore deterministico la giudica: lo schema rende la verifica formale una questione di budget di calcolo, con un perimetro che Anthropic stessa indica con precisione.
Il 22 ottobre il Frontier Red Team di Anthropic, insieme a Theorem, ha pubblicato i risultati di un lavoro in cui Claude ha scritto dimostrazioni formali di proprietà di sicurezza nel codice compilato di 123 librerie open source. Il verificatore di prove Rocq ha controllato ogni dimostrazione. L’impresa ha richiesto alcune settimane e ha coperto 239 punti di ingresso, cioè i test di fuzzing che il progetto OSS-Fuzz di Google mantiene per quelle librerie.

Ogni punto di ingresso del fuzzing è diventato una specifica: per qualsiasi input inferiore a 64 MB, il programma resta entro i confini della memoria e rispetta le proprie asserzioni. Gli errori esclusi sono quelli di sicurezza della memoria e le asserzioni fallite. Le prove riguardano il codice macchina RISC-V prodotto dalla compilazione, e ciò che viene dimostrato è dunque il binario eseguibile.
Le dimensioni sono quelle di un lavoro industriale. In totale le prove Rocq sfiorano i 180 milioni di righe, con una prova tipica di circa 600.000 righe, su binari la cui lunghezza mediana è di 18.000 istruzioni. Anthropic precisa che una singola prova può richiedere centinaia di milioni di token.
Claude scrive la prova, il nucleo di Rocq la controlla contro la specifica. La divisione dei compiti è il punto centrale: il modello può imboccare molte strade sbagliate, e l’errore resta innocuo perché il verificatore respinge ogni passaggio scorretto. Quando una dimostrazione fa emergere un bug, Claude corregge il codice, rigenera la specifica e rifà la prova.
Il metodo ha un rischio tipico, il reward hacking: il modello potrebbe rendere dimostrabile un teorema modificando il programma in modo banale. Anthropic ha penalizzato le correzioni che cambiano il comportamento, ha premiato quelle minime e ha registrato e controllato ogni patch.
Il conteggio esatto dei bug manca: Anthropic parla di “centinaia”. Gli esempi descritti mostrano quanto siano rari i percorsi che il fuzzing fatica a raggiungere:
Su zlib la specifica deriva dalla RFC 1950 ed è stata dimostrata sul binario x86 della versione inclusa nel kernel Linux. In una mezza dozzina di librerie sono emersi soltanto difetti minori e inutilizzabili per un attacco. Per un lettore di PDF il gruppo ha segnalato in una settimana tante falle di sicurezza quante se ne ricevono di norma in un anno.
Anthropic ricorda che “verificato formalmente” equivale a una garanzia sulla specifica, e la corrispondenza fra specifica e realtà resta fuori dalla portata del verificatore. Il rapporto elenca quattro limiti:
Anthropic rilascia un sottoinsieme delle prove, le semantiche affidabili e le specifiche per i test di fuzzing ancora da dimostrare. Theorem offre la pipeline ad altri progetti open source e ha pubblicato una skill per Claude.
Finora la verifica formale era appannaggio di codice piccolo e critico, perché scrivere le prove richiedeva anni di lavoro di specialisti. Qui il costo si converte in token e in settimane di calcolo, mentre il giudizio finale resta a un componente piccolo, deterministico e controllabile. Lo schema vale oltre il caso di specie: un modello generativo propone, un verificatore indipendente decide, e la delega regge nella misura in cui il controllo costa meno del compito.
Il contesto è quello ricostruito nel deep del 22 ottobre di questa sala stampa sul caso PHP2Shell, dove falle critiche scoperte con l’IA hanno messo sotto pressione i tempi dei manutentori. La stessa capacità che cerca vulnerabilità può dimostrare l’assenza di intere classi di difetti, entro la specifica scelta. Per chi acquista o integra componenti open source, le domande utili al fornitore sono tre: quale proprietà è stata dimostrata, su quale piattaforma e con quale base fiduciaria.
Il primo nodo è economico: se il costo per prova scende abbastanza da entrare nei cicli di rilascio ordinari, la verifica formale smette di essere un lavoro per progetti eccezionali. Il secondo è editoriale: la specifica è la parte che il verificatore lascia al giudizio umano, e chi la scrive decide che cosa significhi “sicuro”. Resta da vedere se l’audit delle specifiche diventi il nuovo mestiere della sicurezza del software, e chi lo eserciterà.