
Percorso di vulnerabilità verificato per CVE-2025-8110 (Gogs) e CVE-2025-3248 (Langflow) — triage del rischio, verifica della sfruttabilità, patch verificate.
TL;DR per dirigenti: vedi DEMO-WALKTHROUGH.md — lettura completa del demo dall'alto al basso in 8 minuti con output di esempio del verificatore, nessuna esecuzione richiesta.
Questo repository dimostra un percorso di vulnerabilità verificata end-to-end per due falle reali di esecuzione di codice remoto pubblicamente divulgate — portando ogni CVE attraverso quattro artefatti orientati al cliente.
| CVE | Prodotto | Classe | Severità |
|---|
| CVE-2025-8110 | Gogs ≤ 0.13.3 | RCE tramite path-traversal di symlink (autenticazione richiesta) | Alta (CVSS 8.7) |
| CVE-2025-3248 | Langflow < 1.3.0 | RCE Python exec non autenticata | Critica (CVSS 9.8) |
Entrambi i CVE hanno osservato sfruttamento in natura (Supershell C2 per Gogs, botnet Flodrix per Langflow). Entrambi sono nel catalogo CISA KEV — CVE-2025-3248 (aggiunto 2025-05-05) e CVE-2025-8110 (aggiunto 2026-01-12). Entrambi precedono questo demo di mesi — non sono teorici.
| # | Artefatto | Dove si trova in questo repo |
|---|---|---|
| 1 | Rapporto di vulnerabilità — riepilogo della divulgazione originale, severità, riferimenti, IoC | Sezione superiore del corpo dell'issue GitHub |
| 2 | Triage FAIR aziendale + conformità — stima di perdita-eccedenza Open FAIR §14 con verdetti del panel di revisori; allegato HTML brandizzato canonico | Sezione "Triage FAIR aziendale e conformità" nello stesso corpo dell'issue + HTML gemello in attachments/ |
| 3 | Verificatore di exploit — contenitore riproducibile che attiva deterministicamente la vulnerabilità (task Harbor: istruzione, ambiente, test, script di ricompensa) | Pull request di questo repository per quel CVE, sotto harbor-tasks/CVE-*/harbor/ |
| 4 | Patch verificata — commit di fix upstream verbatim applicato tramite il verificatore; ricompensa 1.0 = vulnerabilità corretta E regressione funzionale intatta | Stessa PR, harbor-tasks/CVE-*/ground_truth/fix.patch |
La coppia è stata scelta specificamente per esercitare superfici complementari:
Un agente di patch (e modello di rischio) che gestisce entrambi sta facendo un vero lavoro.
.
├── README.md # Questo file
├── attachments/ # Rapporti di triage HTML brandizzati canonici
│ ├── CVE-2025-8110.html
│ └── CVE-2025-3248.html
├── harbor-tasks/ # Arriva tramite PR per CVE (vedi Issues #1, #2)
│ ├── CVE-2025-8110/
│ │ ├── ground_truth/fix.patch # Upstream 553707f3 verbatim
│ │ ├── healthcheck.json # Specifica del gate di accettazione
│ │ └── harbor/
│ │ ├── environment/Dockerfile # debian:bookworm-slim + stage dipendenze Go 1.21
│ │ ├── instruction.md # Brief del task agente (ripulito)
│ │ ├── task.toml # Descrittore task Harbor
│ │ └── tests/ # Script verificatore + ricompensa
│ └── CVE-2025-3248/
│ └── ... (stessa forma, base python:3.13-slim-bookworm)
└── vulnerable/ # Sottoalberi upstream di sola lettura (squashati)
├── gogs/ # gogs/gogs @ v0.13.3
└── langflow/ # langflow-ai/langflow @ 1.2.0
Per ogni CVE, dopo che la PR corrispondente è stata unita (merged):
cd harbor-tasks/CVE-XXXX/docker build -t cve-xxxx-env -f harbor/environment/Dockerfile harbor/environment/bash harbor/tests/test.sh → reward=0.0 (l'exploit si attiva)git apply ground_truth/fix.patch, poi riesegui bash harbor/tests/test.sh → reward=1.0reward=1.0 è il gate di accettazione: la vulnerabilità è corretta E il test di regressione funzionale passa ancoraLa sezione di triage FAIR in ogni corpo dell'issue contiene un Record di Conversazione Agente Verificabile (VACR) firmato tramite COSE_Sign1 / Ed25519 (IETF RFC 9052). La chiave pubblica è VAC_SIGNING_PUBKEY; il payload firmato identifica la persona, il modello, gli hash dei contenuti degli artefatti grezzi e i verdetti del panel di revisori che hanno prodotto ogni riga.
healthcheck.json in ogni task Harbor è attualmente etichettato PENDING_DOCKER_VALIDATION — gli alberi dei file del verificatore sono strutturalmente completi, con il fix upstream canonico collegato, ma la validazione end-to-end docker build + ciclo di ricompensa non è stata ancora eseguita contro questi scaffold specifici. Il blocco operator_validation_steps in ogni healthcheck specifica i comandi esatti che un destinatario esegue per chiudere il gate. Il wiring di produzione del verificatore live e del ciclo di patch verificata arriva nella prossima iterazione.
Questo demo non esisterebbe senza i ricercatori che hanno divulgato originalmente:
Tutto il codice sorgente sotto vulnerable/ appartiene al rispettivo progetto upstream ed è regolato dalle loro licenze.