GitHub 部落格採訪了開源專案 Log4j 的維護者 Christian Grobmeier,請他回顧 2021 年底轟動全球資安圈的 Log4Shell 漏洞事件。Log4j 是 Java 應用程式廣泛使用的日誌紀錄程式庫,據 2022 年 Tidelift 的調查,當時約有 49% 的 Java 開發者在用。這次訪談想呈現的是漏洞背後,開源維護者實際經歷了什麼。
Log4Shell 的問題出在 Log4j 會透過 Java 命名目錄介面(JNDI)去載入遠端程式,卻沒有驗證來源是否可信;只要把惡意字串塞進任何會被記錄下來的欄位,像是使用者名稱、搜尋框,甚至 Minecraft 的聊天訊息,就可能讓伺服器執行任意程式碼,嚴重度被評為最高等級的 10 分。Grobmeier 說,團隊第一輪修補後又發現新的漏洞,形容當時的處境像是在補一個到處漏水的水袋。
文章提到,當年受影響的包括全球財富 500 大企業、電商系統與保險公司等大量仰賴 Log4j 的系統,但修補期間維護團隊幾乎是在缺乏社群支援與感謝的情況下徹夜工作。Grobmeier 事後反思,開源維護者普遍缺乏資安訓練與資源,這也是促成 GitHub 後續推出安全開源基金,提供資金與資安培訓給開源維護者的原因。
這則故事比較偏產業面與資安意識,但有一個道理很適合講給學程式的孩子:現在用的免費開源工具,背後常常是像 Grobmeier 這樣的志工在維護,程式裡只要有一個小小的輸入驗證沒做好,就可能影響全世界。提早養成「不要隨意相信外部輸入」的習慣,是寫程式很基本也很重要的資安概念。
開源資安軟體工程