7.3 開源專案的安全、維護者倦怠(Maintainer Burnout)與 Log4j 等基礎設施風險#
開源的第一道陰影:免費雇用的疲勞#
2010 年代,開源已是全球基礎設施,但生態的經濟結構極不健康。Nadia Eghbal 於 2016 年受福特基金會委託發表白皮書《Roads and Bridges》,第一次系統性指出:
主流基礎設施層級的開源專案(基礎庫、網路協定、語言運行時)都是「公共道路」——人人使用、無人付費。
🐛 專案依賴的深層結構令這種「免費基礎設施」更加脆弱:一個 npm package 可能被成千上百的下游專案自動依賴,而維護者可能只有一位志工。
三個著名案例展示了這個結構風險:
1. 2016 年「left-pad 事件」#
- npm 上的小套件 left-pad(只有 11 行程式碼)的作者 Azer Koçulu 因名稱爭議與 npm 衝突,憤而把帳號中的所有套件一次下架;
- 結果:Babel、React 等主流專案因 left-pad 失聯而構建全線崩潰——一個 11 行的套件,讓全球 CI 系統在幾小時內大面積癱瘓;
- 結局:npm 管理員強制取消作者的 package、階梯式復活(unpublish)套件——作者主權與平台公共性的灰色地帶第一次被照亮。
2. 2019 年「event-stream 供應鏈攻擊」#
- 原維護者將這個老套件交棒給一位素未謀面的「熱心貢獻者」,後者隨後把竊取比特幣錢包的惡意程式注入新版;
- 由於 event-stream 是大量下游專案的依賴,受感染的構建在不知不覺間被散播;
- 結論:開源的「信任鏈」若失去維護,等同接受陌生人的簽名——供應鏈安全的觀念自此進入大眾視野。
3. 2021 年 Log4Shell(Log4j2 漏洞)#
- 2021 年 12 月 9 日,Apache Log4j2 的遠端代碼執行漏洞 CVE-2021-44228(Log4Shell)公開;
- 漏洞主因:Log4j 支援 JNDI 查詢字串,攻擊者可透過日誌訊息注入觸發任意類載入與執行;
- 衝擊範圍:全球Java 生態(含 Minecraft、Steam、各大雲平台與企業系統)在幾小時內进入全球緊急修復;
- 維護真相:Log4j 的核心維護者多為無償志工——一個免費的 Java 日誌庫承載著全球金融與企業世界的安全底線;
- 歷史打擊:歐盟/美國 CISA 與輿論都以此為鏡,催生了「開源軟體安全倡議」(如 Linux Foundation 的 OpenSSF、SBOM 法規化)。
維護者倦怠:無人想談的常態#
開源生態中,「維護者倦怠(maintainer burnout)」自此成為公開話題:
- 2018 年 Guido van Rossum 辭去 Python BDFL(「人與人的消耗我受不了了」般的告白);
- 2020 年 Nadia Eghbal 的《Working in Public》(2020 出版)以數十位維護者的田野調查為本,指出:維護者最缺的不是 code,而是注意力管理、群眾期待與心理健康**的支撐;
- 由此產生的社會意識:維護者是人,不是基礎設施。
為什麼「免費基礎設施」會崩?#
以經濟學描述:
- 正面:边际成本近零——複製軟體幾乎免費;
- 反面:貢獻的边际回報也近零——沒有錢,大多數人也沒有時間;
- 需求爆炸:一個套件更新可能威脅數百萬系統,維護責任隨之爆炸;
- 注意力被稀釋:GitHub 上越受歡迎,Issue 流量越大——受歡迎本身就是一種懲罰。
制度的反應:安全基建#
2010 年代後至 2020 年代初,主管機關與基金會開始催生「軟體供應鏈安全」制度化:
- OpenSSF(2020 年由 Linux Foundation 成立):安全工具鏈(Scorecard、Sigstore)、核心專案資助(Alpha-Omega);
- SBOM(軟體物料清單)(SPDX、CycloneDX)與供應鏈簽章(Sigstore,2021)——讓「軟體從哪裡來」有可稽核的清單;
- 大企業的反哺:Google 的 Open Source Security Team、微軟與 AWS 的專案資助計畫;
- 政府介入:美國行政命令 14028(2021)要求聯邦採購軟體出具 SBOM;歐盟 CRA 法案把「開源供應鏈責任」納入法規討論。
小結#
2010 年代的開源已經全權接管人類的基礎設施,而付費結構仍未跟著接管。left-pad、event-stream、Log4j 三起事故,昭示了免費道路的殘酷真相:公共道路不會自己掃雪。接下來,一場來自巨頭的連鎖反應提出了更強的答案——基金會化與雲生態的重新編織(第 8 章)。