Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86383211

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

漏洞概述image.png

2024年3月29日,開發人員Andres Freund在安全郵件列表上報告稱,他在調查SSH性能問題時發現了涉及XZ包中的供應鏈攻擊,分析後發現是SSH使用的上游liblzma庫被植入了後門代碼,可能允許攻擊者通過後門非授權訪問系統。

XZ Utils 是一款用於壓縮和解壓縮.xz 和.lzma 文件的工具集。 XZ Utils 由Lasse Collin 開發,是一個開源項目,廣泛應用於各種操作系統中,受影響開源操作系統可在https://repology.org/project/xz/versions中查詢.xz 文件格式是一種基於LZMA2 壓縮算法的文件格式,它提供了比傳統gzip 更高的壓縮比,同時保持了相對較高的解壓縮速度。 XZ Utils v5.6.0和v5.6.1中tar包的編譯文件被植入惡意命令。在某些特定編譯環境下,惡意命令執行後將替換正常編譯過程中的中間文件為後門文件,最後和其他組件一起編譯到XZ Utils的Liblzma庫文件中。當後門代碼被執行時,將掛鉤(HOOK)SSHD進程中的SSH登錄認證函數。當接收到指定的SSH數據包時,將未授權執行指定的系統命令。

漏洞細節分析1、植入流程目前XZ Utils的Github倉庫(https://github.com/tukaani-project/xz)已無法訪問。筆者分析時使用的版本是從其他鏡像網站下載的xz-5.6.1.tar.gz。初始惡意代碼主要在文件build-to-host.m4中。

screenshot-20240403-093338.png

這條命令拼接後為:sed 'r\n' ./tests/files/bad-3-corrupt_lzma2.xz | tr '\t \-_' ' \t_\-' | xz -d 2 /dev/null,主要從./tests/files/bad-3-corrupt_lzma2.xz中提取代碼並解壓,最後再執行。

提取出的代碼如下:

screenshot-20240403-093405.png

這部分代碼執行後,判斷是否為Linux系統,如果不是,則退出。

後面的代碼繼續從./tests/files/good-large_compressed.lzma文件中提取後續代碼,再解壓後執行。

提取的代碼如下:

screenshot-20240403-093440.png

提取出的代碼較多,主要功能是檢測到環境不適合時就退出,不執行植入後門的邏輯;如果環境合適,則繼續提取./tests/files/下的文件,然後替換編譯的中間過程文件liblzma_la-crc64-fast.o和liblzma_la-crc32_fast.o,最後編譯到XZ Utils的庫文件Liblzma中。

screenshot-20240403-093504.png

根據以上提取的代碼可知,在如下環境編譯將不會植入後門:

1、不是Linux系統(uname不為Linux)

2、沒有IFUNC.IFUNC是GLIBC中用於覆蓋符號的一個功能

3、不編譯動態庫(sharedobject)

4、不是x86_64,或者targettriple結尾不是linux-gnu

5、編譯器不是GCC,或者鏈接器不是GNUld

6、從測試文件中解壓預編譯的二進製文件

7、修改源碼和構建腳本

此外,指令集擴展檢測函數被替換掉,比原函數多一個參數,作用未知。

screenshot-20240403-093722.png

2、後門功能被植入後門的Liblzma庫文件被進程加載運行後,將進行一系列環境檢查,檢查通過再執行後門功能,包括:

1、未設置TERM環境變量

2、Argv[0]需要是/usr/sbin/sshd

3、LD_DEBUG、LD_PROFILE未設置

4、需要設置LANG

5、未檢測到調試器

screenshot-20240403-093823.png

通過以上檢查後,執行後門核心功能,主要功能是掛鉤(HOOK)SSH登錄認證過程中的函數RSA_public_decrypt,未授權執行指定的系統命令。即使用指定SSH證書進行登錄時,從公鑰中提取攻擊負載,然後進一步校驗,最後使用ChaCha20算法解密,將解密後數據作為命令執行。

screenshot-20240403-093859.png

部分已分析的函數功能如下:

screenshot-20240403-093926.png

漏洞檢測1、查看本地系統是否安裝了受影響版本的XZ,安全版本為xz5.6.0,xz --version

2、使用Openwall上發布的腳本檢查系統是否被感染後門,後門發現者提供的檢測腳本,判斷SSHD程序依賴的Liblzma庫文件二進制數據中是否包含後門特徵碼,該特徵碼為:

#! /bin/bashset -eu# find path to liblzma used by sshdpath='$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')'# does it even exist?if [ '$path'=='' ]then echo probably not vulnerable exitfi# check for function signatureif hexdump -ve '1/1 '%.2x'' '$path' | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410then echo probably vulnerableelse echo probably not vulnerablefi

f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410,對應植入過程中的liblzma_la-crc64-fast.o文件,對應函數為get_cpuid。

screenshot-20240403-094025.png

解決方案官方暫未更新版本或補丁,建議相關用戶卸載含後門的版本,回退到未包含後門的穩定版本v5.4.6,並及時關注官方新版本更新。

screenshot-20240403-094052.png

參考鏈接https://www.openwall.com/lists/oss-security/2024/03/29/4

https://access.redhat.com/security/cve/CVE-2024-3094

https://www.openwall.com/lists/oss-security/2024/03/29/4

https://gist.github.com/smx-smx/a6112d54777845d389bd7126d6e9f504

https://avd.aliyun.com/detail?id=AVD-2024-3094

https://github.com/Midar/xz-backdoor-documentation/wikihttps://gist.github.com/keeganryan/a6c22e1045e67c17e88a606dfdf95ae4

https://git.tukaani.org/?p=xz.git;a=summary

文章來源:烽火台實驗室