
CVE-2024-3094 - XZ Utils बैकडोर
केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए।
CVE-2024-3094 एक बैकडोर है जो XZ उपयोगिताएँ (liblzma) के संस्करण 5.6.0 और 5.6.1 में पेश किया गया था, जिसे 29 मार्च 2024 को सुरक्षा शोधकर्ता एंड्रेस फ्रॉइंड द्वारा खोजा गया। इसे 10.0 (गंभीर) का CVSS स्कोर दिया गया।
यह एक आपूर्ति श्रृंखला हमला है जिसे 'जिया तान' (JiaT75) नामक एक खतरे के अभिनेता ने दो वर्षों से अधिक समय तक अंजाम दिया, जिसने परियोजना के भीतर विश्वास बनाया और सह-अनुरक्षक का दर्जा प्राप्त करने के बाद बैकडोर को सीधे वितरण टारबॉल में शामिल कर दिया।
बैकडोर निम्नानुसार काम करता है:
liblzma.so OpenSSH में RSA_public_decrypt() फ़ंक्शन को glibc के IFUNC तंत्र के माध्यम से हुक करता है, SSH प्रमाणीकरण प्रक्रिया को बाधित करता है।system() के माध्यम से एम्बेडेड कमांड निष्पादित करता है।यह प्रयोगशाला मूल अभिनेता की कुंजियों (जो कभी सार्वजनिक नहीं की गईं) के बजाय कस्टम Ed448 कुंजियों का उपयोग करके बैकडोर तंत्र का अनुकरण करती है।
वास्तविक प्रभावित सिस्टम में कोई chroot नहीं था। बैकडोर सीधे सिस्टम के sshd पर काम करता था, जो किसी भी अन्य साझा लाइब्रेरी की तरह दुर्भावनापूर्ण liblzma.so को लोड करता था — सिस्टम और उसके प्रशासकों के लिए पूरी तरह से पारदर्शी।
इस प्रयोगशाला में हम केवल एक व्यावहारिक कारण से chroot का उपयोग करते हैं: हमें होस्ट सिस्टम की लाइब्रेरीज़ को बदले बिना liblzma.so के एक विशिष्ट संस्करण के साथ sshd चलाने की आवश्यकता है। यह शोध वातावरण के लिए एक डिज़ाइन निर्णय है, न कि यह दर्शाता है कि उत्पादन में बैकडोर कैसे काम करता था।
| घटक | विवरण |
|---|---|
env_fs/ | न्यूनतम Ubuntu 22.04 फ़ाइलसिस्टम जिसे chroot के रूप में उपयोग किया जाता है |
मूल बैकडोर के लिए बहुत विशिष्ट शर्तों की आवश्यकता होती है जो प्रयोगशाला वातावरण में स्वचालित रूप से मौजूद नहीं होती हैं। निम्नलिखित संशोधन आवश्यक थे:
MagpieRYL के मूल रिपॉजिटरी में शामिल liblzma.so.5 एक अज्ञात Ed448 कुंजी का उपयोग करता है जो शामिल xzbot बाइनरी के साथ असंगत है। मूल और प्रामाणिक liblzma.so.5.6.1 को Debian स्नैपशॉट से डाउनलोड किया गया (sha256 सत्यापित) और amlweems/xzbot से patch.py का उपयोग करके seed=0 के साथ पैच किया गया:
original sha256: 605861f833fc181c7cdcabd5577ddb8989bea332648a8f498b4eef89b8f85ad4
patched sha256: ea7206ab4b0c3479ff1b478c8803adc9e7aeba243254a9f601b626ef8aa80e3d
patched offset: 0x24470
मूल अभिनेता की Ed448 सार्वजनिक कुंजी को इससे बदल दिया गया:
5b 3a fe 03 87 8a 49 b2 82 32 d4 f1 a4 42 ae bd
e1 09 f8 07 ac ef 7d fd 9a 7f 65 b9 62 fe 52 d6
54 73 12 ca ce cf f0 43 37 50 8f 9d 25 29 a8 f1
66 91 69 b2 1c 32 c4 80 00
मूल सेवा Type=notify का उपयोग करती है, जिसके लिए sshd को systemd को एक स्टार्टअप सूचना भेजने की आवश्यकता होती है। chroot के अंदर sshd इसे नहीं भेजता, जिससे टाइमआउट होता है। Type=simple में बदल दिया गया।
sshd को विशेषाधिकार पृथक्करण के लिए /run/sshd की आवश्यकता होती है। यह निर्देशिका chroot में मौजूद नहीं है और प्रत्येक रीबूट पर मिटा दी जाती है क्योंकि run/ एक tmpfs है। एक ExecStartPre के साथ हल किया गया जो प्रत्येक सेवा प्रारंभ से पहले इसे स्वचालित रूप से पुन: उत्पन्न करता है।
./xzbot -addr 127.0.0.1:2024 -cmd 'echo pwned > /tmp/result'
cat /home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/result
./xzbot -addr <TARGET_IP>:2024 -cmd 'echo pwned > /tmp/result'
कमांड chroot के अंदर निष्पादित होता है, इसलिए बैकडोर संदर्भ में /tmp/ के अंतर्गत बनाई गई कोई भी फ़ाइल यहाँ संग्रहीत की जाती है:
/home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/
अर्थात, यदि कमांड echo pwned > /tmp/result है, तो फ़ाइल यहाँ मिलेगी:
/home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/result
शोषण द्वारा उत्पन्न किसी भी फ़ाइल का पता लगाने के लिए:
find /home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/ -type f
संदेश ssh: handshake failed: EOF अपेक्षित और सही व्यवहार है। बैकडोर कमांड निष्पादित करता है और SSH सत्र स्थापित किए बिना कनेक्शन बंद कर देता है। यह विफलता का संकेत नहीं देता है।
यह प्रयोगशाला एक कस्टम क्रिप्टोग्राफ़िक कुंजी युग्म (seed=0) का उपयोग करती है। पैच किया गया liblzma.so केवल संबंधित निजी कुंजी से हस्ताक्षरित पेलोड को स्वीकार करता है, जो इस वातावरण में संकलित xzbot द्वारा उपयोग की जाती है। कोई भी अन्य क्लाइंट बिना निष्पादन के EOF प्राप्त करेगा।
यह उपकरण केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है। उन सिस्टमों के विरुद्ध अनधिकृत उपयोग जिनके आप मालिक नहीं हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति नहीं है, अवैध है। लेखक किसी भी दुरुपयोग के लिए जिम्मेदार नहीं है।
env_fs/usr/lib/x86_64-linux-gnu/liblzma.so.5 | कस्टम Ed448 कुंजी के साथ पैच किया गया liblzma 5.6.1 |
/etc/systemd/system/xzback.service | पोर्ट 2024 पर कमजोर sshd लॉन्च करने वाली systemd सेवा |
/xzbot/xzbot | स्रोत से संकलित शोषण क्लाइंट |