我們把過去的重大事件,聚焦到此刻對你自己維運真正有用的教訓上來回顧。
發生了什麼
出問題的這個函式庫,維護的人手不足,長期靠一個人獨自支撐。這時,另一名人物持續做出貢獻、累積信任,最終取得了共同維護者的身分。然後,他以混入常規更新的方式,分階段地帶入了在特定條件下允許外部非法存取的機關。
被瞄準的不是程式碼裡的漏洞,而是**『可信賴的人發出的正規更新』這一前提**本身。
被瞄準的是『人與信任』
這是靠防火牆或修補都難以防住的攻擊。OSS 的維護者靠善意和志工支撐,而其過載與孤立成了攻擊的入口。這起事件表明:關乎安全的,不只是技術,還有生態系本身的健康。
發現的契機 ——『怎麼有點慢』沒有被放過
發現它的契機,是某位技術人員在做一項無關工作時,產生了『登入處理明顯比以前慢』『動作測試的量測值不太對勁』這樣的小小違和感,並沒有放任不管,而是把原因追查到底。結果,它在向穩定版大範圍鋪開之前,世界被拯救了。
『總覺得哪裡不對』是最好的偵測器。這一次,它真真切切地拯救了世界。
時間軸
數年前~
攻擊者持續做出貢獻,作為維護者累積信任。2024 年初
混在正規更新裡,分階段地植入了後門。2024-03
一名技術人員追查『慢』這一違和感,在抵達穩定版的前一刻發現並公開。
此刻有用的教訓
把相依套件控制到最小
用的函式庫越少,需要去信任的對象也越少。別因為『方便』就輕易增加。
固定版本,並查看改動
用鎖定檔察覺意外更新,並關注重要相依套件的改動內容(誰、改了什麼)。
提高建置的可重現性
同樣的輸入產出同樣的產物(reproducible build)程度越高,越容易發現偷偷的混入。
不放任違和感
『怎麼有點慢/不太對勁』是最好的偵測器。這一次正是它拯救了世界。養成把小小的異常追查到底的文化。
對維護者的敬意與支援
你所依賴的 OSS 是否健康,兜兜轉轉,關乎的正是你自己的安全。過載與孤立會成為攻擊的入口。
接下來閱讀
- 術語:什麼是 CVE / 什麼是 RCE
- 事故:Codecov —— CI 中被信任的工具被劫持的故事
- 對策:用機器監控相依套件的機制
FAQ
QXZ Utils 事件特殊在哪裡?
在於被瞄準的不是程式碼的 bug,而是『人與信任』。攻擊者花了好幾年作為 OSS 維護者累積信任,再以正規更新的名義混入後門。這是僅靠技術手段難以防住的一類攻擊。
Q它是怎麼被發現的?
某位技術人員在做一項無關的工作時,產生了『登入處理明顯比以前慢』『量測值不太對勁』這樣的小小違和感,並沒有放任不管而是追查到底。結果,它在即將向穩定版大範圍鋪開的前一刻被攔了下來。
Q個人開發者能做些什麼?
把相依套件控制到最小、關注更新的來源與改動內容、用鎖定檔固定版本以便察覺意外混入、提高建置的可重現性,以及不放任『總覺得哪裡不對』這種違和感。