XZ後門攻擊

XZ Backdoor:“真是千鈞一髮”

SSH後門

一個心懷不軌或已被收買的維護者在一個名為“ liblzma這是xz壓縮工具和函式庫的一部分,導致SSH中存在後門。這是一種高級軟體供應鏈攻擊,因為該庫被故意修改以植入後門,並使用混淆和隱蔽技術來隱藏攻擊負載,使其不被審查人員發現。

該漏洞於近期(3月29日後)被發現並揭露,目前攻擊處理仍在進行中。然而,由於漏洞似乎僅影響有限環境下的預發布版本(針對x86_64架構,使用GCC編譯的DEB和RPM軟體包),因此攻擊很快就得到控制。總之, CVE 被給予 CVSS 基本評分 其中10個漏洞屬於最嚴重的網路安全漏洞。一旦進入穩定版本,其影響將是災難性的。 

對此次攻擊的技術分析,包括: xz 後門深度解析此前已有其他文章對此進行了分析。本文將重點介紹此次攻擊的時間軸、偵測方法、迄今為止的處理進展,以及我們可以從中學到哪些教訓。

該後門的長期影響遠在最初的補丁發布後仍然存在。 2025 年 8 月,在 CVE-2024-3094 披露一年多後,Binarly 的安全研究人員發現,後門仍然存在於 Docker Hub 上發布的十幾個 Debian Docker 映像中,而 Debian 團隊拒絕移除它們,將其視為歷史開發遺留物,而非當前存在的風險。此外, OpenSSF 在 XZ 事件發生後不久,OpenJS 和 XZ 聯合發出警告,稱類似的社會工程接管嘗試已經針對 JavaScript 項目,這表明此處使用的維護者信任攻擊模式正在其他地方被重新利用。

XZ後門是如何注入的

注意:git 倉庫位於 git.tukaani.org。 然而, 還有 GitHub託管倉庫 (目前已封鎖)GitHub 帳戶發布了後來被整合到 Git 儲存庫中的變更。

後門程序的一部分似乎只存在於 5.6.0 和 5.6.1 版本的分發 tar 包中,而不是在 git 倉庫中,並且依賴… build-to-host.m4 中的單行 這是 autoconf 使用的巨集檔。另一部分位於兩個所謂的測試文件中。 bad-3-corrupt_lzma2.xz 以及 good-large_compressed.lzma

那是 commit特德 由 GitHub 帳戶“Jia Tan”創建嘉T75) 在裡面 xz 儲存庫 2月23日,我們進行了一項看似無害的更改,並添加了測試文件(據稱是.lzma和.xz壓縮塊)。但奇怪的是,這些測試文件並沒有被測試程式使用! .m4檔案中的一行程式碼注入了一個混淆腳本(包含在tar套件中),該腳本會在configure指令執行完畢後,如果滿足某些條件,就會執行。它修改了Makefile檔。 liblzma 該庫包含從 .xz 檔案中提取資料的程式碼,反混淆後結束。 在這個腳本中,在 configure 腳本結束時呼叫。它決定是否修改建置過程以注入程式碼:僅在 GCC 和 GCC 連結器下、在 Debian 或 rpm 下、以及僅在 x86_64 Linux 下。如果匹配,注入的程式碼會透過取代兩個檔案來攔截執行。 ifunc 解析器會取代某些呼叫。這會導致符號表在記憶體中被解析(這需要時間,因此才會被偵測到,稍後會解釋)。

接下來事情變得有趣:後門會在動態連結器中安裝一個審計鉤子,等待 RSA_public_decrypt 函數符號到達,並將該符號重定向到後門程式碼中的某個位置,該位置隨後會回調到… 庫密碼大概是為了執行正常的身份驗證。如果運行的程式具有進程名稱,則有效載荷將被啟動。 /usr/sbin/sshd很明顯,SSH 伺服器是攻擊目標。傳統上, sshd的 像 OpenSSH 這樣的伺服器沒有與任何伺服器關聯 liblzma但是 sshd 是 經常修補 為了支援 systemd-notify,以便在 sshd 運行時其他服務可以啟動。然後 liblzma 會被間接載入。 systemd形成一個完整的循環。

後門尚未完全分析,但似乎是 允許遠端命令執行 (遠端程式碼執行) 擁有 sshd 守護程式的權限在預認證環境下運作。當後門配對到遠端憑證時,會使用 ChaCha20 演算法解密憑證訊息,解密成功後,訊息會傳遞給… 系統()所以這本質上是一種有門控的遠端程式碼執行,比單純的公鑰繞過嚴重得多。 

後來發布的 5.6.1 tar 套件顯示了為隱藏痕跡所做的更多努力,包括進一步混淆符號名稱,以及嘗試修復已發現的錯誤。 延伸機構 此外,還設置了額外的測試文件,用於查找某些簽名,以便添加到後門中。

這種相當複雜的攻擊可能要等到Linux發行版趨於穩定後才會被發現。幸運的是,有些人喜歡探究異常情況發生的原因。  

XZ後門攻擊的發現

很多時候,注入的惡意行為都是偶然或意外地被發現的。一個很好的例子是… 棄用警告 (“誰會在乎警告?”)這導致了以下發現: 事件流攻擊 2018年10月。另一位是發出警告的使用者。 編碼病毒 2021 年 4 月,他們的 bash 上傳腳本未能通過校驗和驗證(「誰來驗證工件的完整性?」)。 SSH 異常和奇怪症狀 login秒(login佔用大量 CPU 資源、運行時間增加、valgrind 錯誤)引起了人們的好奇心。 安德烈斯·弗羅因德他是一位警覺的PostgreSQL開發人員,但並非安全分析師(如他所說)。經過一番在 Debian Sid 上使用 OpenSSH 的調查,他得出結論,回應時間問題依賴於一個函式庫。 liblzma,一部分的 xz-工具 壓縮庫。原因如下:「上游 xz 倉庫和 xz tar 包已被植入後門。這個診斷結果太準了!   2024年3月29日,Andres在Openwall上發表了第一篇分析文章:「上游 xz/liblzma 中的後門導致 SSH 伺服器被攻破事實是:XZ Utils 5.6.0 和 5.6.1 的壓縮包中包含後門。這些壓縮包是由前面提到的 Jia Tan 帳戶創建和簽署的。  He 發佈於 Mastodon 當天晚些時候,他意識到這項發現純屬偶然,需要許多巧合才能實現。其他用戶的評論值得一讀。 GitHub用戶 thesamesam (又名 Sam James)發表了一篇不錯的 Gist。 關於 xz-utils 後門的常見問題解答 其中對襲擊事件進行了概述,並連結到更多內容。 深入分析 攻擊載荷。 這些分析技術性很強,有助於我們更理解這筆精心設計的注射: 這很好 托馬斯·羅恰的海報  展示了 JiaT75 在 GitHub 程式碼庫中的部分活動,以及注入腳本如何插入二進位後門,進一步說明了… xz後門解釋.

事件處理方式

安德烈亞斯·弗羅因德的披露是謹慎的,用他自己的話說:

“鑑於上游似乎已經介入,我沒有向上游提交錯誤報告。由於我最初認為這是一個 Debian 特有的問題,所以我向 security@...ian.org 發送了一份初步報告。隨後,我向 distros@ 報告了該問題。” CISA 收到了分發通知。

紅帽公司將此問題編號為 CVE-2024-3094。然後,消息迅速傳開。 XZ 的另一位維護者 Lasse Collin 添加了一個 新 commit 3月30日星期六,他發布了一篇題為「CMake:修復被破壞的Landlock沙箱檢查」的文章。文章指出,至少在使用CMake建置時,該程式庫的其中一個Landlock沙箱方法遭到了破壞。他迅速在文章中披露了這個問題。 XZ Utils後門. 紅帽公司已將此問題分配給此部門。 CVE-2024,3094 (另見) CVE, 新病毒, Ubuntu它被賦予了驚人的… CVSS 基本評分 10 分這樣的分數總是能在網路上引起轟動。 CIS3月29日,A發布了 警惕由於情況緊急,建議用戶降級到 5.4.6 穩定版本,這可能過於簡單。 Tukaani 組織下的 GitHub 倉庫已被禁用(這是好事還是壞事?我認為是好事:許多發行版和組織仍然連結到 GitHub 發布版本,以獲取受感染的 tar 包進行構建。禁用倉庫可以防止這種情況發生。無論如何,倉庫的副本仍然存在。 git.tukaani.orgJiaTan75 和 Lasse Collins(Larhzu)的 GitHub 帳戶也被封鎖。這是……的一部分。 遏制即使這可能會影響無辜的人。 JiaT75 未停用儲存庫中的活動 目前還看不到。 業界迅速做出反應。許多供應商發布了用於檢測漏洞系統的規則,例如 Yara規則或商業工具的支持 系統數據, PAN以及其他安全專家,例如 詹姆斯·伯索蒂 發布了一篇關於重新審視我們對待開源軟體方式的文章。  我們目前正處於事件的根除和恢復階段。嘉探75維護的其他項目正在接受密切審查,特別是… libarchive/libarchive (JiaTan75 是其中的定期貢獻者)和模糊測試器 oss-fuzz (其中這 commit JiaTan75 製作的這款產品試圖避免出現絨毛,而事實上 未能偵測到後門這些掩蓋行為進一步證實了這一點。 

誰正遭受攻擊?

要么是GitHub JiaT75帳戶被盜(別忘了GitHub最近強制啟用了雙重認證),要么是帳戶的實際持有者本人倒戈。但鑑於這次攻擊的技術複雜性,我們有充分的理由懷疑是高階持續性威脅(APT)所為,甚至可能是國家支持的。網路安全機構和執法部門的進一步調查將會揭曉答案… 此條目 Y Combinator Hacker News 上關於 Jia Tan 的文章 揭示了幕後黑手的身份及其活動。強烈推薦!它提供了大量信息,揭露了不法分子如何利用社會工程欺騙其他用戶。

「非常煩人——這個後門的作者(rwmj)與我聯繫了好幾週,試圖把 xz 5.6.x 添加到 Fedora 40 和 41 中,理由是它有『很棒的新功能』。我們甚至還和他一起修復了 valgrind 的問題(現在看來,這個問題是他添加的後門造成他添加的後門不解決這個問題。專案已經兩年了,添加過各種各樣的二進制測試文件。

賈坦採取了措施防止被追蹤:他似乎使用了VPN(vpn.singapore.witopia.net)連線——這本身無可厚非。而且,許多更改似乎都有臨時的、一次性的電子郵件(本例中來自ProtonMail)作為佐證,敦促用戶合併更改。

這位參與者可能打算更深入地研究,甚至深入 Linux 內核,因為他是 Linux 核心的貢獻者。 xy嵌入 專案.截至今日,初步分析未發現流產跡象。

註:另一個 低調的 XZ 貢獻者“漢斯·詹森” (GitHub 用戶「hansjans162​​」) 仔細審查它在 Debian 的帳戶現在是 封鎖他多次更新 Debian Games,以掩蓋他想要在 debian/xz-utils 中植入的後門,並更新了上游 5.6.1 版本,以加快後門的分發。 debian/不穩定版

目前我們只能說,這是一個(尚未確定的)APT 組織,使用不同的帳戶,至少進行了兩年的攻擊活動,並耐心地嘗試在 SSH 中植入遠端程式碼執行程式 (RCE)。

截至發稿時,「賈坦」的真實身分仍未被證實。目前尚未有任何可信的證據將其歸因於特定個人、組織或國家行為體,這恰恰凸顯了該身分執行者行動紀律的嚴明有效。

XZ後門攻擊是否可以預防?

相當困難。 

首先,注入的後門程式的一部分存在於壓縮的測試檔案中,而這些檔案並未被測試使用。事後看來,這可能會引發一些(不必要的)警報,但誰會在意在實際環境中檢查所有測試文件是否都實際測試使用呢?其次,注入的後門程式的一部分存在於發布壓縮包中的巨集檔案中,手動檢查其與預期壓縮包的差異非常困難。自動化也變得複雜,因為建置本身的預期結果(對於了解 automake/autoconf 工作原理的人來說)很難建模,也就難以分析實際壓縮套件是否符合預期。 有人提出了這個問題。 as “tar包與git倉庫中的版本不匹配是特性,而不是bug。”從原始碼追溯二進制壓縮包的來源仍然是一個尚未解決的問題。

用戶信譽?嗯,根據以往記錄,JiaTan75 的 GitHub 帳號並沒有做過任何違規的事情。 commits. 帳戶是在證據累積完畢後才被暫停的,但在3月29日之前,那是一個正常用戶,進行著正常的交易。嗯,其實並不正常。後來 commit秒(Free Introduction , Free Introduction , Free Introduction 以及 Free Introduction (調整了漏洞利用程式碼)試圖修復某些配置中由於與後門預期的堆疊佈局存在差異而導致的 valgrind 錯誤和崩潰。 Commit 審查人員或許能夠發現這一點,但誰有耐心去分析二進位測試檔案中的變化,或是探究 C 原始碼中 GCC 屬性變化的真正動機呢?

當發生 SSH 攻擊時是否應該發出警報 login 耗時800毫秒而不是300毫秒?大概只有極度謹慎的人才會注意到這一點。西塞羅說過: “魯莽是年輕人的天性,謹慎是老年人的智慧。”  

ifunc 基礎設施由「Hans Jansen」和「Jia Tan」於 2023 年 6 月加入。這是第一個 commit 在 crc64_fast.c 中加入 ifunc 支援(後來用於注入後門)。這比在測試文件中註入後門二進位檔早了好幾個月!

註:作者和 commit這裡的情況有所不同,但這很正常:Lasse Collin 是專案維護者,是他合併了這些變更。他甚至還感謝了「Hans Jansen」…

在 Andres Freund 發布和 Red Hat 創建 CVE 之前,沒有人提出任何擔憂。如果你看到一系列可以捕捉此漏洞的工具,它們現在都能偵測到受影響的元件。 事後

或許最好的預防措施來自 Linux 發行版的特性,不穩定、前沿的版本只能透過循序漸進的過程傳遞給下游的穩定發行版。

從 XZ 後門攻擊中學到的教訓

我們已經注意到,檢測起來有多麼困難。 故意的 後門。後門應被視為內部威脅,因為它們是由內部員工植入的,或透過被盜用的內部帳戶植入的。而這些人大多值得信任。當後門被植入分散式系統中時,就更難被偵測到。

有些作者,如凱文·博蒙特 指向 系統這為第三方服務打開了巨大的後門攻擊面。這正是惡意攻擊者利用的漏洞。 Systemd 的使用者眾多,但 XZ 函式庫在上游卻鮮為人知。 「上游被污染,下游所有人都會喝到毒水」。

系統中存在一個無關的變更請求 動態載入壓縮庫移除後門的方案已合併到系統中,但尚未交付。 libsystemd 引入的額外相依性可能是漏洞的根源。還有昨天 此請求已開啟

A 評論 在“xz:禁用 ifunc 以修復問題”中 commit 他對如果我們想要阻止此類活動應該把重點放在哪裡給出了深刻的見解(重點是我加的):

“我們作為一個群體應該吸取的教訓是,要更加註重安全。” software supply chain security 從整體來看,審計建構系統不僅限於原始碼。例如,SolarWinds 安全漏洞事件中,攻擊者篡改了 SolarWinds 閉源監控軟體的軟體更新。

早期發現和迅速反應極大地限制了其影響。如果你還記得… 結尾場景 男子在黑色三「真是千鈞一髮。」K 又一次沒有忘記留下線索。而且,沒有一個 boglodite 能進入 Linux 穩定發行版。
1. 「我*不是*安全研究員,也不是逆向工程師。」2. 賈是個常見的中國名字。譚也是一個常見的姓氏,意思是「輝煌的」。很多沒有血緣關係的人都叫這個名字,請不要因為這個名字而歧視任何人!

常見問題

XZ後門如今仍存在風險嗎?

雖然大部分已被控制,但並未完全消除。 2025 年 8 月,研究人員發現一些 Debian Docker Hub 映像中仍然存在該後門,Debian 將其視為已失效的歷史遺留物。團隊應核實他們是否使用了過時的、未打補丁的基礎鏡像進行構建,而不是想當然地認為 2024 年的補丁已經徹底解決了這個問題。

sca-tools-software-composition-analysis-tools
優先處理、補救並保護您的軟體風險
註冊免費帳號。
不需要信用卡。

確保您的軟體開發和交付安全

使用 Xygeni 產品套件