flawopen.com/Incidents/xz-utils-backdoor-march-2024
XZ Utils आपूर्ति-श्रृंखला हमला (CVE-2024-3094)
CVE-2024-3094 ने XZ Utils 5.6.0/5.6.1 को प्रभावित किया। जोखिम वितरण के बिल्ड पर निर्भर था; प्रभावित पैकेज पहचानें और बदलें।[1], [3], [4], [5], [6]
सोर्स रिपॉज़िटरी को सार्वजनिक व्यंजन और रिलीज़ आर्काइव को बंद सामग्री-पेटी समझिए। व्यंजन सही दिखे तब भी रसोई पेटी की सील और रसीद जांचती है; केवल उसी पकवान का नाम लिखा होने से पेटी को सीधे उत्पादन में नहीं भेजना चाहिए। अलग विश्वसनीय चैनल से प्रमाणित मैनिफ़ेस्ट बदली हुई पेटी पकड़ सकता है, लेकिन विक्रेता का वैध हस्ताक्षर भी यह साबित नहीं करता कि अधिकृत पेटी सुरक्षित है: XZ की समझौता की गई पेटियाँ आधिकारिक रिलीज़ थीं। वितरण-विक्रेता के निर्देशों के अनुसार प्रभावित पैकेज बदलें; मैनिफ़ेस्ट जांच को केवल अदला-बदली रोकने के अलग नियंत्रण के रूप में रखें।[5], [6]
इस पेज के मुख्य शब्द
रिलीज़ आर्काइव- स्थापना या पैकेज बनाने के लिए प्रकाशित सोर्स कोड का आर्काइव। यह रिपॉज़िटरी से निकाली गई फाइलों से अलग हो सकता है, इसलिए इसे अलग आर्टिफैक्ट की तरह सत्यापित किया जाता है।[3], [4], [6]
बिल्ड प्रॉवेनेंस- वह रिकॉर्ड जो बताता है कि आर्टिफैक्ट किस समीक्षा किए हुए सोर्स, बिल्ड चरण और प्रकाशक से आया। इससे टीम डाउनलोड की विश्वसनीयता तय कर सकती है।[5], [6]
आर्टिफैक्ट सत्यापन- आर्टिफैक्ट को बिल्ड या रिलीज़ में लेने से पहले उसके हैश या हस्ताक्षर को स्वतंत्र विश्वसनीय माध्यम से मिले अपेक्षित मान से मिलाना।
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-506
घटना का समयक्रम (Timeline)
Andres Freund ने समस्या को सार्वजनिक रूप से रिपोर्ट किया।[5]
हमले का चरण-दर-चरण प्रवाह
असामान्य व्यवहार से जांच शुरू हुई
Andres Freund ने SSH प्रक्रिया में असामान्य CPU उपयोग और Valgrind त्रुटियां बताईं। इन्हीं देखे जा सकने वाले संकेतों से जांच और सार्वजनिक खुलासा आगे बढ़ा।[5]
प्रतिक्रिया में बदलना और सत्यापित करना शामिल है
इसे प्रभावित पैकेज और बिल्ड-प्रोवेनेंस की घटना मानें। वितरण-विक्रेता के निर्देशों का पालन करके प्रभावित पैकेज बदलें। भविष्य के artifacts के लिए provenance और signatures जांचें: इससे अदला-बदली पकड़ी जा सकती है, लेकिन अधिकृत रिलीज़ के सुरक्षित होने का प्रमाण नहीं मिलता।[1], [6]
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
# डाउनलोड किया हुआ बिल्ड इनपुट उसकी पहचान सिद्ध किए बिना स्वीकार किया जाता है।
from pathlib import Path
def stage_release(artifact: Path, build_inputs: Path) -> None:
build_inputs.joinpath(artifact.name).write_bytes(artifact.read_bytes())
# सफल कॉपी यह सिद्ध नहीं करती कि आर्काइव समीक्षा किए हुए
# रिलीज़ या विश्वसनीय मैनिफेस्ट के अनुरूप है।# शिक्षण हेतु गेट: विश्वसनीय मैनिफेस्ट के अपेक्षित SHA-256 को जांचें।
import hashlib
import hmac
from pathlib import Path
def verify_release(artifact: Path, expected_sha256: str) -> None:
digest = hashlib.sha256(artifact.read_bytes()).hexdigest()
if not hmac.compare_digest(digest, expected_sha256.lower()):
raise ValueError("रिलीज़ आर्टिफैक्ट विश्वसनीय मैनिफेस्ट से मेल नहीं खाता")
# expected_sha256 अलग से प्रमाणित प्रकाशन माध्यम से लें और
# आर्काइव को बिल्ड इनपुट बनाने से पहले verify_release चलाएं।
# यह अदला-बदली पकड़ता है, अधिकृत लेकिन दुर्भावनापूर्ण रिलीज़ को नहीं; प्रभावित पैकेजों के लिए विक्रेता के निर्देश मानें।इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓डाउनलोड किए गए रिलीज़ आर्काइव को अलग से प्रमाणित माध्यम से मिले हैश या हस्ताक्षर से मिलाएं; डाउनलोड सफल होना स्रोत का प्रमाण नहीं है।[1], [6]
- ✓पुनरुत्पाद्य बिल्ड के लिए सोर्स रिविज़न, बिल्ड पर्यावरण और आर्टिफैक्ट हैश दर्ज करें; महत्वपूर्ण निर्भरता बदलते समय स्वतंत्र बिल्ड के परिणामों की तुलना करें।
- ✓बिल्ड स्क्रिप्ट, पैकेजिंग नियम और परीक्षण आर्टिफैक्ट की समीक्षा एप्लिकेशन कोड जितनी कठोरता से करें; अस्पष्ट बाइनरी परीक्षण डेटा के स्रोत और अखंडता को दर्ज करें।
- ✓रिलीज़ टूलिंग, CI कॉन्फ़िगरेशन और पैकेजिंग चरणों के बदलाव पर कम से कम दो मेंटेनर की मंजूरी और पता लगाने योग्य रिकॉर्ड अनिवार्य करें।[5], [6]
- ✓विक्रेता और वितरण सूचना से वास्तविक प्रभावित पैकेज और संस्करण निश्चित करें; पैकेज बदलने के बाद भी उसका स्रोत फिर से सत्यापित करें।
- ✓बिल्ड या सेवा में अनपेक्षित CPU उपयोग, प्रदर्शन गिरावट और मेमोरी-जांच त्रुटियों को जांच प्रक्रिया में शामिल कर प्रमाण सुरक्षित रखें।[5]
स्रोत
- NVD — CVE-2024-3094
- MITRE CWE-506
- XZ Utils 5.6.0 रिलीज़ — 24 फ़रवरी 2024
- XZ Utils 5.6.1 रिलीज़ — 9 मार्च 2024
- Andres Freund: oss-security की मूल रिपोर्ट
- XZ परियोजना: घटना विवरण — oss-security संग्रह
- Shai-Hulud: npm वॉर्म जिसने खुद को स्वचालित रूप से प्रकाशित किया
- SUNBURST: जब सॉफ्टवेयर बनाने वाली बिल्ड पाइपलाइन ही सबसे बड़ा खतरा बन गई
- CVE Program रिकॉर्ड — Red Hat CNA डेटा