開源模塊維護者破壞代碼,只為抗議烏克蘭戰爭
一個廣泛應用于 Windows、 Linux 和 Mac 環境的開源模塊的維護者最近破壞了它的功能,以抗議烏克蘭的戰爭,大眾再次將注意力集中在與軟件代碼依賴相關的潛在的嚴重安全問題上。
Node-ipc 是一個用于進程間通信的 JavaScript 模塊,數百萬開發者在開發軟件時使用這個模塊。最近,該模塊的作者 Brandon Nozaki Miller 在軟件中插入了代碼,用于刪除定位于俄羅斯和白俄羅斯的開發者系統的所有文件。
后來,他迅速從 npm JavaScript 注冊表中刪除了包含雨刷代碼的模塊版本,但隨后又發布了另一個名為“ peacenotwar”的模塊,并使其成為 node-ipc 的依賴項。因此,下載了 node-ipc 的開發人員最終在桌面目錄中放置了一個與烏克蘭戰爭相關的消息傳遞文件。所有版本統計起來,node-ipc 模塊平均每周的下載量超過一百萬次。
應用程序安全供應商Snyk 本周調查了這起事件,并將其描述為破壞全球開源社區的行為的一個例子。“這起安全事件涉及一名維護人員破壞磁盤文件的破壞性行為,以及他們試圖隱藏和重申以花式蓄意破壞的企圖,”Snyk的開發商宣傳總監 Liran Tal 在博客中說。“雖然這是一種出于抗議動機的攻擊,但它突顯了軟件供應鏈面臨的一個更大的問題: 代碼關聯的依賴關系可能會對您的安全產生巨大影響。”
Node-ipc 事件是近幾個月來第二起說明企業使用開放源碼和第三方組件構建軟件之后面臨的嚴重風險的事件。
今年1月,Marak Squires——兩個廣泛使用的開源庫—— colors.js 和 faker.js 的維護者——故意在模塊中引入代碼,導致依賴它們的應用程序多次打印輸出“ liberty”一詞,后面還跟著胡言亂語。Sonatype負責維護 Maven 中央 Java 包存儲庫并調查 Squires 事件,據稱,‘ colors’有超過33億次的下載量,在超過19000個項目中使用,而‘faker’則有超過2.72億次的下載量和大約2500個依賴項目。因此,成千上萬的應用程序受到了 Squires 的行動的影響,Sonatype 推測這可能是 Squires 對他認為的大公司和商業項目免費從他的工作中獲益的一種抗議形式。
危險的干預
Snyk 對最新 node-ipc 事件的分析表明,Miller,使用了 RIAEvangelist 這個名字,在2021年3月7日的幾個小時內發布了包含破壞性代碼(10.1.1和10.1.2)的兩個 node-ipc 版本。被破壞的模塊在被移除之前,可以在 npm JavaScript 注冊表上下載,下載不到24小時就被刪除了。盡管如此,與 node-ipc 相關的大量下載使得至少一些在代碼中使用該模塊的開發人員受到了影響,Tal 在 Dark Reading 的評論中說。
他說: “破壞性的10.1.1和10.1.2版本已經從 npmjs 的注冊表中刪除了,我們沒來得及為它們收集任何下載數據。”但是,node-ipc 的10.x 版本分支每周大約有3,000次下載,因此可以有把握地假定,包含的雨刮器代碼的下載量也是這樣的數量。
一天后,也就是3月8日,米勒在 NPM 上發布了這個peacenotwar包。他說,這個模塊既是對俄羅斯入侵烏克蘭的抗議,也是一個“非破壞性”的例子,正說明開發人員需要對節點模塊實施更多控制。這應該作為一個有益的例子,說明團隊應該使用顯式依賴版本,”Miller 在一個 GitHub 線程中說。“升級與否永遠是我們來決定。”
Tal 表示,peacenotwar 模塊最初只有幾十到幾百次下載,但是,當它被添加為主流 node-ipc 分支的一個依賴項,下載量就超過了4萬次。“不過請記住,這個模塊的破壞性較小,但對終端用戶來說仍然相當令人擔憂。”
在一份聲明中,Sonatype 首席技術官 Brian Fox 說,最近的事件表明了開發人員在選擇使用開源模塊時應該審查維護人員。他建議開發人員應該只從基金會支持的項目中選擇代碼,而不是從個人項目中選擇代碼。選擇一個只有一個維護人員的項目意味著要完全信任一個開發人員。他指出,由基金會支持的開源項目往往更可控,這使得單個開發人員很難以一己之力改變代碼。
Tal說,之前的研究表明,關聯的依賴關系與每個被添加到正在構建的軟件中的模塊顯著息息相關。他指出,2019年的一項研究顯示,由于可傳遞的依賴關系,開發人員平均安裝一個 npm 包就隱式信任其他80個包。他表示: “一些非常受歡迎的軟件包可以達到10萬多個其他軟件包,這使得它們成為主要的攻擊目標。”
供應鏈安全問題已經增加,應該是任何開發者,創業者,或企業的頭等大事,Tal說。安全問題與維護者的聲譽、許可證、安全漏洞和項目的可維護性都有關。“開發人員應該仔細檢查開源組件的總體健康評分,其中包括上述所有標準,或許還不止。”