
何時該信任一個開源套件:獨立開發者的盡職調查守則
每個獨立開發者都有過這個時刻:你找到一個套件,剛好做了你需要的每一件事,免費、幾千顆星,而 npm install 就在一次鍵擊之外。那感覺像是你一整個禮拜會做的最快決定。 而那是整週最不該快的地方。 依賴套件不是一次購買——它是一段關係。你不是預先付費;你是「繼承」它。你繼承它的 bug、它的安全狀況、它的維護時程,以及——那個每個人都等到太遲才想到的部分——它的託管問題。當寫它的那位唯一維護者離開,或他的 GitHub 帳號被接管,它不會停止成為你的程式碼。它會變成「你再也無法維護的程式碼」。 以下是獨立開發者真正能執行的守則:五項檢查、三十分鐘,在你把產品託付給一個套件之前。 成本從來不是授權費,而是你繼承的那些後果 開源感覺免費,因為沒有帳單。但真正的成本以三種方式出現,其中只有一種是錢: 被拋棄。 一個套件陷入沉寂——十八個月沒有 commit,問題單越堆越多——於是你開始維護一份你沒寫過、也許並不熟的程式碼,而且沒有測試可以依靠。沒人會對一個被棄置的依賴「退款」;你只是吞下那些工時。 抗議與破壞。 有時維護者不是離開——是把東西燒掉。2022 年 1 月,faker.js 和 colors.js 的開發者——兩個被成千上萬專案依賴的套件——故意破壞它們,抗議企業免費利用他的無償工作。一夜之間,一個「就是能用」的套件開始回傳損壞的輸出,全世界的建置接連失敗。一個沒有備援的獨立開發者,眼睜睜看著產品壞掉,因為一個他從未見過的人醒來時很生氣。 被入侵。 這是那個不斷變大的部分。2024 年 3 月,XZ Utils 後門幾乎把一記供應鏈攻擊送進全球一半的 Linux 伺服器——一場持續數年、對維護者關係的耐心滲透。而 2026 年 8 月 4 日,攻擊者入侵了 keyv 及其 cacheable 系列套件維護者的帳號——其中一些每週下載數億次——並用它把竊取憑證的蠕蟲在幾個小時內推送到 444 個套件。一個帳號被入侵,於是「很多人用」變成了「被下毒」。 這些都不是反對開源的理由。它們是反對盲目開源的理由。套件不是風險。那段關係才是。 五項檢查(三十分鐘,在你安裝之前) 你不需要一支企業資安團隊。你只需要回答五個問題,用瀏覽器和終端機各半小時就夠了。 1. 公車因子——實際上到底有多少人在維護? 看 commit 歷史。是一個名字,還是一個分散的群體?只有單一維護者的套件,公車因子等於一——那個人被公車撞、被榨乾、或者被入侵,套件就結束了。這是訊號最強的一項檢查。一個活躍的名字=格外謹慎;多年來輪替的貢獻者群=健康。 2. 最後一次 commit 的節奏——這是活的、殭屍、還是死的? 活著的套件會夠頻繁地 commit,讓安全修補上得來。殭屍套件是最糟的一種:它仍然每週被下載數百萬次,卻沒有任何人真的在維護。這現象驚人地常見——OSSRA 報告近年來將「含有未維護(殭屍)元件的程式碼庫比例」定在 90% 以上。檢查最後一次 commit 日期。在一片靜默與未解決安全問題中熬過十八個月,這就是你的答案,與星星數無關。 3. 維護者身分——這是我能查證的人,還是只是一個代號? 健康的專案背後有可辨識的人(或組織),最好是啟用了雙重驗證——因為 MFA 正是擋在維護者與那種發生在 keyv 身上的帳號接管之間、最重要的東西。維護者是一個沒歷史、沒部落格、沒雇主的匿名代號,就是一個警訊。不一定惡意——但永遠無法稽核。 ...








