Ciclo DevSecOps di GitLab Duo in cui una seconda IA attacca nuovamente ogni correzione scritta dall'IA, salvando ogni bypass riuscito come anticorpo permanente riprodotto in CI e in produzione.
Ogni modifica al codice scritta da un'IA deve sopravvivere a un attacco sferrato da una seconda IA — con prova — prima di poter raggiungere la produzione.

Antibody è una pipeline GitLab Duo per l'hackathon "Life After Code" (Transcend). Tratta una base di codice come un sistema immunitario: quando un'IA corregge una vulnerabilità, una seconda IA continua ad attaccare la correzione finché questa non regge davvero, e ogni attacco che abbia mai funzionato viene salvato per sempre come "anticorpo" e ritestato su ogni modifica futura e contro la produzione live. Un verificatore separato, deliberatamente non-IA, sorveglia l'agente che corregge per scovare imbrogli.
Non ci si fida mai della parola del correttore. Deve sopravvivere a un attaccante, e un verificatore onesto e ottuso sorveglia i test.
Gli strumenti IA-contro-IA esistono già (Helios, MindFort, Strix, Novee). Quelli confermano che l'exploit originale è ora bloccato. Antibody fa quattro cose che, al 2026, si trovano ancora solo nei paper di ricerca:
/download era rotto, verifica se /preview ha la stessa protezione mancante — il bug di solito si nasconde su una rotta fuori dal diff.CODEOWNERS, perché una modifica non deve mai validare se stessa.Ogni scelta di progettazione risale a un paper, non a un'intuizione:
| Risultato | Paper | Numero |
|---|---|---|
| Le patch superano i test ma restano sfruttabili ("fallimenti silenziosi"); i revisori LLM non se ne accorgono | When Passing Tests Hides Vulnerabilities (Tampere) — arXiv 2609.10548 | 170 su 1.030 tracce di riparazione fallite silenziosamente; 22 critiche |
| Una correzione blocca solo il payload su cui è stata testata | P2Patch (Simon Fraser) — arXiv 2610.20245 | un nuovo attacco ha aggirato patch già "corrette" nel 41% delle esecuzioni; rendere permanenti i bypass ha portato la copertura dal 42,1% al 62,5% |
| Lo stesso bug si nasconde su una rotta fratello fuori dal diff | PRGuard (Bristol) — arXiv 2608.25730 | 3× più bug di tipo "assenza" trovati rispetto a un revisore commerciale |
| Le modifiche CI degli agenti vengono unite senza revisione → "verifica circolare" | Co-Modifying Code and Infra (UNSW) — arXiv 2610.12849 | 43–56% delle PR degli agenti a doppio ambito unite senza alcuna revisione |
| Gli agenti imbrogliano il valutatore quando vengono premiati per il verde | Hacktrace (NTU) — arXiv 2610.03055 | ~19,5% delle esecuzioni ha preso una scorciatoia manomettendo i test |
L'ultimo risultato è il motivo per cui il Warden non è un'IA: un revisore LLM può essere dissuaso dal suo verdetto; un verificatore basato su git-diff no.
┌─────────────────────────── issue created ───────────────────────────┐
│ │
▼ │
[Builder AI] fix on a shadow branch, open MR │
│ │
▼ │
GitLab SAST + Dependency Scanning → findings become the Red agent's targets │
│ │
▼ │
[Red AI] real HTTP exploit that REPRODUCES on the old code │
│ │
▼ │
[Builder AI] harden until blocked │
│ │
▼ │
[Red AI] re-attack the NEW fix: new payload + same bug on SIBLING routes │
│ every bypass saved forever as an antibody (≤2 rounds) │
▼ │
[Warden] (not an AI) no deleted/weakened/skipped tests, no hidden CI/auth edit │
│ │
▼ │
autonomy gate: touches CI/auth/CODEOWNERS → Supervised, else Hands-off │
│ │
▼ │
[Package] signed container + SBOM + proof bundle │
│ │
▼ │
[Release → Configure] deploy to the lowest-carbon Cloud Run region, │
│ replay every antibody against staging, then promote │
▼ │
[Monitor] scheduled probe replays ALL antibodies against production forever ──┘
any reproduction → auto-opens an incident issue → loop restarts
Tutto ciò che segue è una cattura reale da questo repository, non un mock-up.
La pipeline a nove stadi, verde su GitLab. Ogni stadio eseguito è passato, inclusa la build reale del container pubblicata nel registry del progetto. configure e monitor vengono correttamente saltati finché non vengono configurati un progetto Cloud Run e una pianificazione. Apri la pipeline.

Gli attacchi sul decoy posseduto vengono bloccati; l'uso normale funziona ancora. Il traversal codificato, la rotta sibling, uno schema non-HTTP e una lettura di oggetto cross-user vengono tutti rifiutati, mentre un documento legittimo e l'ordine del proprietario stesso vengono serviti.