liblzma/xz被植入後門,過程堪比諜戰片!

合天网安实验室發表於2024-04-01

事件概述

xz是一種幾乎存在於所有Linux發行版中的通用資料壓縮格式。從5.6.0版本開始,在xz的上游tarball包中被發現了惡意程式碼,透過一系列複雜的混淆手段,liblzma的構建過程從偽裝成測試檔案的原始碼中提取出預構建的目標檔案,然後用它來修改liblzma程式碼中的特定函式。這導致生成了一個被修改過的liblzma庫,任何連結此庫的軟體都可能使用它,從而攔截並修改與此庫的資料互動。

3月29日,微軟PostgreSQL開發人員Andres Freund在除錯SSH效能問題時,在開源安全郵件列表中發帖稱,他在XZ軟體包中發現了一個涉及混淆惡意程式碼的供應鏈攻擊。據Freund和RedHat稱,GitXZ中沒有惡意程式碼,只有完整下載包中存在。但是這個程式碼的提交人兩年前就加入了專案維護,暫時不能確定之前的版本有沒有問題。

xz 5.6.05.6.1版本庫中存在的惡意注入只包含在tarball下載包中。Git發行版中缺少觸發惡意程式碼構建的M4宏。注入期間構建時使用的第二階段工件存在於Git儲存庫中,以防存在惡意的M4宏。如果不合併到構建中,第二階段檔案是無害的。在發現者的演示中,發現它干擾了OpenSSH守護程序。雖然OpenSSH沒有直接連結到liblzma庫,但它以一種使其暴露於惡意軟體的方式與systemd通訊,而systemd連結到了liblzma。惡意構建會透過systemd干擾sshd的認證。在一定的情況下,這種干擾有可能使惡意行為體破壞ssh認證,並遠端未經授權訪問整個系統。

截至日前(3月30日),暫未觀察到利用此後門程式碼的行為。

image-20240330165828337

影響的系統範圍

xzliblzma 5.6.0~5.6.1 版本,可能包括的發行版 / 包管理系統有:

  • Fedora 41 / Fedora Rawhide

  • Debian Sid

  • Alpine Edge

  • x64 架構的 homebrew

  • 滾動更新的發行版,包括 Arch Linux / OpenSUSE Tumbleweed

如果你的系統使用systemd 啟動 OpenSSH 服務,你的 SSH 認證過程可能被攻擊。非x86-64 架構的系統不受影響。

if ! (echo "$build" | grep -Eq "^x86_64" > /dev/null 2>&1) && (echo "$build" | grep -Eq "linux-gnu$" > /dev/null 2>&1);then

你可以在命令列輸入xz --version來檢查xz 版本,如果輸出為5.6.05.6.1 ,說明你的xz-utils已被植入後門。

$ xz --version
xz (XZ Utils) 5.6.1
liblzma 5.6.1

目前跡象表明,後門作者有選擇性的針對linux 發行版下手。但這個liblzma 可不只Linux上用。比如目前流行的iOS越獄環境,大部分tweak 包還是以.deb 格式發行,比較新的版本就用到了lzma 作為壓縮。除此之外,近期有在 macOS上使用brew 安裝過xz 這個包也受影響,暫時不能證明有惡意行為:

image-20240330170102458

【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

過程精彩如諜戰片

這可能是最大膽的資訊保安事件之一。“最大膽”表明這起事件在手法、規模、影響等方面都超出了我們以往對於攻擊的認知,可能是一個全新的安全威脅模型。

"最大膽"一詞還隱含著對攻擊者心理和技術實力的一種評價。做出如此"大膽"之舉的,肯定是心理素質極強、技術水平極高、準備極其縝密的駭客團伙,絕非一般的指令碼小子可以企及。

1、一個不知名團伙注意到OpenSSH依賴一個名為liblzma(xz)的小眾開源壓縮庫。

2、他們虛構了一個名為"Jia Tan"的開發者身份,從2021年10月開始為xz專案積極做貢獻,逐漸獲得信任,並最終接管了維護工作。

圖片

3、2024年2月,"Jia"在構建指令碼中引入了一個複雜隱蔽的後門,該後門似乎針對OpenSSH的身份驗證前加密功能,可能新增了"主金鑰"讓攻擊者隨意訪問受影響伺服器。

4、 "Jia"聯絡Linux發行版維護者,試圖讓帶後門的xz庫被打包分發給使用者,直到微軟員工Andres Freund因調查SSH延遲問題發現了此事。

這可能是一次有外國政府支援的職業行動,而非業餘愛好者所為。更根本的是,xz後門不是一個技術問題,可能也不能單靠技術來解決。歸根結底,這是一個反情報挑戰——完全屬於政府和少數擁有生態系統範圍監控能力的商業實體的能力範疇。這尤其包括谷歌和微軟。事實上,這裡有一個有趣的想法:也許他們已經知道了很長一段時間。我們能分辨出這是為了掩蓋"手段和來源"而精心設計的披露,還是偶然發現的嗎?

檢測和解決方法

解決方法:

  • 降級到5.6.0以下版本

  • 更新到官方最新版5.6.4

檢測指令碼:

#! /bin/bash
​
set -eu
​
# find path to liblzma used by sshd
path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"
​
# does it even exist?
if [ "$path" == "" ]
then
    echo probably not vulnerable
    exit
fi
​
# check for function signature
if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410
then
    echo probably vulnerable
else
    echo probably not vulnerable
fi

更多網安技能的線上實操練習,請點選這裡>>

相關文章