xz sshd बैकडोर का रैबिट होल, उम्मीद से कहीं ज़्यादा गहरा
(twitter.com/bl4sty)- xz के sshd बैकडोर में शुरू में सामने आए
RSA_public_decryptहुक से आगे, पहुंचना अधिक कठिन अतिरिक्त कोड पाथ भी आंशिक रूप से ट्रिगर किए गए - अटैक फ्लो में छेड़छाड़ किए गए कमांड से
mm_answer_keyallowedहुक इंस्टॉल किया जाता है, फिर कई नकली ssh-rsa public keys का उपयोग करके कमांड बफर जोड़ा जाता है - इस “magic buffer” में अतिरिक्त बैकडोर कमांड और 2 ed448 signatures शामिल हैं, और signatures में host key SHA256 digest तथा KEX के
session_idको शामिल किया जाता है - मौजूदा PoC बड़े पैमाने पर संशोधित paramiko SSH client library का उपयोग करता है, और कमांड
0x03system()-आधारित RCE तथा uid/gid सेटिंग्स को सक्षम बनाता है - authentication bypass भी पुष्टि हो चुका है, और
mm_keyallowed_backdoor cmd 1सेmm_answer_authpasswordresponse को ओवरराइट करके किसी भी password से लॉगिन किया जा सकता है
और गहराई से जुड़े बैकडोर पाथ
- xz sshd बैकडोर में पहले ज्ञात व्यवहार से अधिक गहरी functionality शामिल है, और उसका कुछ हिस्सा सीधे ट्रिगर किया जा चुका है
- मुख्य entry point
RSA_public_decryptहुक है- सही तरीके से तैयार किया गया कमांड भेजने पर
sshdकेmm_answer_keyallowedfunction में एक और हुक इंस्टॉल हो जाता है - इसके बाद कई नकली
ssh-rsapublic keys देकर “magic buffer” को टुकड़ों में जोड़कर बनाया जाता है
- सही तरीके से तैयार किया गया कमांड भेजने पर
- “magic buffer” अतिरिक्त बैकडोर कमांड रखने वाला बफर है
- इसके भीतर 2 ed448 signatures भी शामिल हैं
- ये signatures
RSA_public_decryptवाले बैकडोर signatures की तरह host key के SHA256 digest से salt किए जाते हैं - आखिरी signature SSH initial key exchange (KEX) से निकले 0x20-byte
session_idको भी शामिल करता है
PoC और authentication bypass
- मौजूदा PoC बड़े पैमाने पर संशोधित paramiko SSH client library में implement किया गया है
- अभी ट्रिगर किया गया कमांड इस code path का
0x03है- यह
system()के जरिए बुनियादी RCE को फिर से संभव बनाता है - यह uid/gid सेट करना भी support करता है
- यह
- अभी भी समझे जाने के लिए और code बाकी है, और
mm_answer_keyallowedबैकडोर कमांड्स में से एक अंततःmm_answer_keyverifyको भी हुक करता है, इसलिए interactive session का पूरा authentication bypass संभव दिखता है - इसके बाद authentication bypass की पुष्टि हुई
mm_keyallowed_backdoor cmd 1mm_answer_authpasswordके response को user-defined value से ओवरराइट कर सकता है- यदि response को
{ u32(9), u8(13), u32(1), u32(0) }पर सेट किया जाए, तो किसी भी password से लॉगिन संभव है
1 टिप्पणियां
Hacker News की राय
https://threadreaderapp.com/thread/1776691497506623562.html
यह घटना कुछ मायनों में बहुत प्रोफेशनल लगती है, और कुछ मायनों में काफ़ी शौकिया, इसलिए अजीब लगती है
एक महत्वपूर्ण पैकेज का maintainer बनने लायक भरोसेमंद पहचान लंबे समय तक बनाई गई, कई लोगों की संलिप्तता जैसा दिखने वाला social engineering attack किया गया, असली पहचान और हमले के स्रोत को उजागर नहीं होने दिया गया, और obfuscation भी काफ़ी परिष्कृत थी
फिर भी production version में bug और performance regression का पहुँच जाना ढीला-ढाला लगता है। अगर कोई state-backed संगठन सच में बहुत सक्षम होता, तो लगता है कि वह public project में submit करने से पहले private तौर पर काफ़ी testing करके संदेह जगाने वाली performance गिरावट को हटा देता
हाल का iOS का “शायद backdoor” वाला मामला भी दिखाता है कि बहुत-सी vulnerabilities जमा करके रखने वाले संगठन इस बात की हमेशा परवाह नहीं करते कि उनमें से कुछ जल जाएँ
लक्ष्य server और appliance थे, और default image पर Valgrind चलाने वाले server या appliance कितने होंगे। बाद में सोचने पर लगता है “यह खयाल क्यों नहीं आया”, लेकिन संभव है कि उन्होंने उन्हीं system images पर test किया हो जिन्हें वे निशाना बना रहे थे, न कि किसी आम developer की custom image पर
Kevin Beaumont ने अनुमान लगाया कि “Jia Tan” ने यह देखकर तुरंत समझ लिया होगा कि backdoor निष्क्रिय हो सकता है, इसलिए इस exploit में लगी भारी मेहनत बेकार न जाने देने के लिए उसने जल्दी मचाई होगी [1], और यह बात सही लगती है
उसी deadline pressure की वजह से 5.6.0 में crash हुआ होगा, और performance regression को कम या खत्म करने जैसी polishing के लिए समय नहीं मिला होगा, जो इस घटना के पकड़े जाने का मुख्य कारण बना
[0]: https://github.com/systemd/systemd/pull/31550
[1]: https://doublepulsar.com/inside-the-failed-attempt-to-backdo...
जैसा Patrick McKenzie दूसरी जगहों पर देखते हैं, criminal organizations भी non-criminal organizations की तरह ही committee और consensus से चलती हैं। उस नज़र से देखें तो feature bloat से पैदा हुई performance गिरावट के कारण जहाज़ डूबना समझ में आता है। जिन कंपनियों में मैं रहा हूँ, वहाँ इससे भी ज़्यादा शौकिया गलतियाँ हुई हैं
शायद ऐसा भी हो कि उनके इस्तेमाल में कोई दूसरा backdoor या वैकल्पिक access route बंद हो गया हो, और उन्हें जल्दी में एक नया रास्ता चाहिए था
[1] https://en.wikipedia.org/wiki/Poisoning_of_Alexander_Litvine...
यहाँ जो sophistication है, वह सच में दिलचस्प है, लेकिन आखिरकार यह काफ़ी साफ़ दिखने वाली performance regression की वजह से पकड़ा गया
इससे एक असली crime program में सुना हुआ quote याद आता है: “हत्या में पकड़े जाने के दस लाख तरीके होते हैं, और अगर उनमें से आधे भी सोच सको तो तुम जीनियस हो”
कोई तीसरा व्यक्ति fake accounts संभाल रहा होगा और comments व PRs में interaction कर रहा होगा
समझ नहीं आता कि इस बार बस बदकिस्मती से यह पकड़ा गया, या ऐसे attacks को वास्तव में सफल बनाना ही बहुत मुश्किल है। उम्मीद है कि दूसरी बात सही हो, लेकिन सच में पता नहीं
यक़ीन है कि libsystemd के @teknoraver patch की वजह से उनकी deadline timing बदल गई
जब ऐसी घटनाओं पर बारीकियों में बहुत गहराई तक जाने वाले तकनीकी लेख आते हैं, तो अक्सर यह सोचकर हैरानी होती है कि सब लोग क्यों कहते हैं, “यह ज़रूर किसी nation-state का समर्थन प्राप्त ऑपरेशन है”, “timestamp देखो, यह अकाट्य सबूत है”
xz घटना गुप्त थी और लंबे समय तक मेहनत से तैयार किया गया हमला था, यह सही है, लेकिन क्या वाकई एक सक्षम व्यक्ति से आगे की किसी चीज़ की ज़रूरत है? यह तथ्य कि ऑनलाइन मौजूद अलग-अलग लोग इसका विश्लेषण और समझ कर सकते हैं, यह भी दर्शाता है कि यह एक व्यक्ति की समझ की सीमा के भीतर है
ऐसा क्यों नहीं हो सकता कि यह किसी बुद्धिमान लेकिन असंतुष्ट व्यक्ति ने अकेले किया हो
इस तरह की मुनाफ़ा-केंद्रित योजना तर्कसंगत नहीं लगती। इससे यह पूरी तरह खारिज नहीं होता कि कोई अतार्किक actor या पैसे के अलावा किसी और मकसद वाला व्यक्ति हो सकता है, लेकिन इससे nation-state actor सबसे संभावित उम्मीदवार लगता है
अगर यह सफल हो जाता, तो इसे बेचने की संभावित कीमत बहुत बड़ी होती, लेकिन critical infrastructure में exploit डालकर उसे इतना लंबे समय तक छिपाए रखना कि ग्राहक उसे खरीदें और इस्तेमाल करें, इसकी संभावना बहुत कम है। राज्य ऐसे moonshot उठा सकते हैं, लेकिन मुझे लगता है कि कोई व्यक्ति ज़्यादा expected value वाले लक्ष्य ढूंढेगा
बेशक, इसका यह मतलब नहीं कि यह कोई अत्यंत सक्षम nation-state actor था या इसमें बहुत अधिक संसाधन लगाए गए थे
लेकिन क्या यह बात काफ़ी हद तक कई open source developers पर भी लागू नहीं होती? मकसद भी साफ़ है। इस exploit की black market में शायद millions of dollars की कीमत होती
जानकार लोगों के बहुत से अनुमान देखे हैं, लेकिन ऐसा शब्द इस्तेमाल होते नहीं देखा
क्या backdoor की obfuscation को समेटने वाला कोई लेख है? install build scripts नहीं, मेरा मतलब असली backdoor से है
मैंने binary को Ghidra में डालकर मिली functions को देखा था, लेकिन execution intercept करने के लिए इस्तेमाल होने वाले ifunc mechanism से परिचित न होने के कारण छोड़ दिया और दूसरों पर छोड़ दिया
उसमें anti-debugging फीचर हैं, इसलिए मुझे लगा कि code भी obfuscate किया गया होगा। चूँकि यह एक opaque binary के रूप में वितरित हुआ था, मैंने सोचा कि कम-से-कम कुछ code ऐसी key से encrypted होगा जो हमारे पास नहीं है। STUXNET payload के कुछ हिस्सों की तरह
anti-debugging फीचर होने का यह मतलब नहीं कि code ज़रूर obfuscate भी किया गया हो। जैसा ऊपर कहा गया, यह build के समय किया गया था। मानो उसने पहले से अपने ही घर में जाल बिछा दिए हों
यह घटना दिखाती है कि जब package maintainer सही source नहीं लाता, तो कैसी समस्याएँ पैदा होती हैं
मैंने इस घटना को बहुत बारीकी से follow नहीं किया, लेकिन यह बहुत अजीब है कि hack के हमलावर पर लगभग कोई चर्चा सुनने को नहीं मिलती
https://rheaeve.substack.com/p/xz-backdoor-times-damned-time...
समय के साथ writing style में अंतर आया या नहीं, यह देखने से यह भी पता चल सकता है कि क्या कई लोग एक ही persona के रूप में काम कर रहे थे। committed code भी काफ़ी है, इसलिए code style के अंतर से यह देखना भी उचित होगा कि क्या एक से अधिक लोग शामिल थे
यह काफ़ी राहत की बात है कि यह व्यापक रूप से फैलने से पहले पकड़ा गया
सिर्फ़ इस स्पष्ट कारण से नहीं कि हम नहीं चाहते कि कोई अज्ञात entity हमारी infrastructure पर remote code execution रखे। अगर लोग इसे लगातार खंगालते रहे, तो अंततः ऐसा payload बन सकता है जो किसी को भी backdoor इस्तेमाल करने दे
एक entity के पास access होना बुरा है, लेकिन अगर कोई भी access पा सके, तो वह कहीं ज़्यादा बुरा है
thereaderapp.com की जगह देखने के लिए लिंक:
https://nitter.poast.org/bl4sty/status/1776691497506623562
हैरानी की बात है कि कई दिन बीत जाने के बाद भी यह अब तक पूरी तरह सुलझा नहीं है
जब दुनिया भर की नज़र इस पर हो और मुख्य हिस्से सैद्धांतिक रूप से सार्वजनिक भी हों, तब भी इसका इस हद तक टिके रहना दिखाता है कि obfuscation काफ़ी अच्छी थी
इस घटना में long game वाली प्रकृति चिंताजनक है
पहला, backdoor बनाने की “infrastructure” खड़ी करने के लिए लंबे समय तक सही मौके का इंतज़ार किया गया। दूसरा, exploit के असली production में फैल जाने के बाद भी शायद किसी और लंबे खेल की तैयारी की गई होगी। lottery winnings इस्तेमाल करने का सही तरीका investment ही तो है
तीसरा, अब सोचने पर मजबूर करता है कि क्या ऐसा खेल अभी भी चल रहा है। डर लगता है