閒聊 - 開源程式庫 XZ Utils 臥底下毒事件
2 |
本週開源界與資安界有則大新聞:程式庫 XZ Utils近期被植入後門 by iThome
特別讓人震驚是因為 XZ Utils 是 Linux 很基本很常用的壓縮程式庫,若真的被成功植入擴散到現存的 Linux 系統,後果不堪設想。而攻擊手法也很罕見,攻擊者假扮自願程式維護人員多年,於今年二月底才發動攻擊在 5.6 及 5.6.1 版植入後門,若 Linux 安裝了這些版本又有對外開放 SSH 連線,攻擊者可繞過身分驗證操作主機為作欲為。所幸及早被發現,影響範圍只限於一些更新較積極的預覽性質 Linux 發行版本,如 Fedora Rawhide/41、Kali Linux、openSUSE Tumbleweed/MicroOS 及部分 Debian。 註:檢查及因應策略請參考專頁貼文
今天看到有 YouTuber 整理了 XZ Utils 開源程式庫下毒事件的來龍去脈,我再查了一些資料,補齊影片沒解釋清楚的細節,整理摘要如下:
整起事件是有個名叫 Jia Tan 的卑鄙奸賊花了二年半所佈的一個局。Jia Tan 鎖定 Linux 上應用廣泛的基礎開源程式庫 - XZ Utils (相當於 Windows 的 7z/Winrar 壓縮),原作者 Lasse Collin 面對一堆 Issue 回報及許願,無償維護程式還得面對網友敲碗催更已經 15 年,早已身心俱疲(另外 Lasse 心理健康方面也有些狀況)。Jia Tan 疑似一方面找同夥趁機不斷催更施壓,自己再以熱心貢獻者角色跳出來,從而獲得 Lasse 信任,開始負責一些程式碼修改。
之後一年,Jia Tan 認真投入專案維護工作,接手大部分程式修改工作,也確實完成任務,表現稱職。但 Jia Tan 表面上就像個典型的熱心開源貢獻者,心中卻別有所圖。
臥底二年後,Jia Tan 選擇在 2024 年 2 月正式發動攻擊。
Jia Tan 在一個放置測試資料的目錄混入一個包含惡意程式的偽裝測試資料檔,由於該目錄原本就用來放測試資料,不會有人檢視其內容。接著,他在編譯巨集文件(build-to-host.m4,未加入源碼庫不會出現在版控異動比對,但會包進 Package)加入一段邏輯,將偽裝測試檔的惡意程式內容合併到最後產出的程式庫,同時還修改編譯腳本 CMakeLists.txt 多加了一個點符號讓 C 程式壞掉以停用沙箱保護,方便惡意程式可以為作欲為。由於惡意程式以二進位格式偽裝成測試資料檔,而一般人 Code Review 多只會聚焦程式增修部分,很少人會檢查資料檔內容及細看編譯腳本(更何況是多了一個句點),坦白說這個手法十分高明,極難被發現。
成功將惡意程式植入 5.6.0 後,Jia Tan 的下一步是不斷催促 Debian、Ubuntu 等發行版管理人員儘快更新 XZ Utils 版本,現在想想,若以 Ubuntu 的市佔率,若這個木馬版本被大量推送更新到線上主機,受害主機數量難以計數,幸好有及早發現,避免了一場災難。
這個精心設計看似天衣無縫的攻擊手法,又是怎麼被發現的呢?
說來也妙,一切歸功於一位微軟員工 Andres Freund,他發現每次 ssh 登入時 CPU 會異常偏高且變慢 0.5 秒;一般人可能覺得怪怪但影響不大就算了,但 Andres 抱持打破砂鍋問到底的精神,一路追查,才揭發了這整起駭人的攻擊事件。(對 CPU 飆高且慢 0.5 秒一事追根究底,沒有合理解釋絕不罷休,這是茶包射手精神的極致啊)
總之,因為 Andres 過人的執著與毅力,加上惡意程式的 Bug 造成 CPU 飆升拖慢速度,陰錯陽差地讓整個攻擊計劃曝光,木馬在大量擴散前被攔阻,未造成重大損失或破壞,實屬萬幸,Andres 堪稱英雄!! (我想起另一則相似故事:花 8.29 英鎊拯救世界,WannaCrypt 勒索病毒中場休息)
之後大家追查發現 Jia Tan 的個人資料都是假的,Github 帳號兩年多來也只參與這個專案,應可斷定這是一起有預謀犯案,而非熱心貢獻者黑化誤入歧途。
開源(Open Source)原本是這世上為數不多的人性光明面展現,不計報酬付出只為了讓世界更美好。但被 Jia Tan 這種爛人一搞,開源軟體的可靠及安全性自此會更受質疑,應用上將受到更多限制甚至被禁用;而未來當你熱血上身,單純地想參與開源專案維護時,也可能被懷疑是不是別有用心,在下一盤大棋。
就像 911 事件後,飛航運輸加上重重檢查與限制,不僅增加管理成本也影響旅遊體驗;在無數的詐騙手法興起後,現在當你想熱心助人或通知別人中獎,面對的常是懷疑動機或被掛電話。過去純樸信任方便為先的日子,再也回不去了。Jia Tan 這種利用人性善良本質作惡的恐怖份子,應列成全球公敵,人人得而誅之,氣氣氣氣氣!
如果你對更多技術細節有興趣,推薦這篇:XZ Utils 攻擊事件完整時間線及細節
Comments
# by 小熊子
天啊~我也曾經覺得SSH連線超過2秒不對勁,發現hosts 檔案有異狀
# by Ken
樓上是真・鍵盤柯南 XD