清單之惑:npm供應鏈面臨的新威脅

2023-07-13     InfoQ

原標題:清單之惑:npm供應鏈面臨的新威脅

作者 | Sergio De Simone

譯者 | 平川

策劃 | Tina

最近,npm 前工程經理 Darcy Clarke 在一份報告中指出,npm 註冊沒有根據相應 tarball 包的內容驗證清單信息。Clarke 說,這會導致雙重事實來源,攻擊者可以利用它來隱藏腳本或依賴項。

Clarke 將這個漏洞命名為「清單之惑(manifest confusion)」。其根源在於,npm API 要求維護人員在提交包的 PUT 請求中以及在隨 tarball 包上傳的 package.json 文件中都要提供有效的清單。由於 npm 伺服器不會驗證這兩個清單,所以即使它們不一樣,也沒有人會注意到。這對於 npm 客戶端來說尤其嚴重,因為這會使人無法知道哪個才是「真實」的清單。Clarke 在他的文章中展示了如何使用 npm CLI 或直接訪問 npm API 來重現這種不一致。

Clarke 說,這一點影響很大。例如,npm 上有個包可能會顯示它沒有依賴項,而實際上它有。同樣,它顯示的包名或版本可能與 package.json 中的不同,而這可能會導致緩存中毒。更糟糕的是,它可以隱藏它將在安裝期間運行腳本的事實。

上面列出的所有不一致都是可以被利用的漏洞。例如,一個包可以將自己偽裝成不同的包,誘使別人錯誤地安裝它;讓用戶在不知情的情況下安裝隱藏的依賴項,諸如此類。

Clarke 進一步指出,這個問題會影響到 npm 生態系統中的許多第三方客戶端和工具,以及包管理器,所以你可能需要仔細檢查一下你喜歡用的工具。

Clarke 最後建議,所有 npm 用戶都不要再依賴 npm 的註冊清單文件,而應該使用 package.json,不過 name 和 version 兩個欄位除外。

在接受 InfoQ 採訪時,Sonatype 安全研究員 Ax Sharma 強調,這種不一致不一定是惡意的,可能是源於合法的克隆或分叉,或者是由於開發人員在更新包時沒有清理過時的元數據。他還提出了一點小小的異議:

相信 package.json 並不一定比相信包的 npmjs 頁面更好——兩者都不是完全可靠的。

相信 package.json 並不一定比相信包的 npmjs 頁面更好——兩者都不是完全可靠的。

根據 Sharma 的說法,要解決這個問題需要藉助安全工具進行更深入的分析,例如,對惡意文件或受到攻擊的文件進行基於散列的分析,即高級二進位指紋。

另一個有用的建議來自 J. M. Rossy 的推特,他建議默認關閉腳本。

如果你對這個清單之惑感興趣,請閱讀 Clarke 的原文,其中有許多其他的見解。

原文連結

https://www.infoq.com/news/2023/07/manifest-confusion-npm-bug/

5天內用戶數破億、增速碾壓ChatGPT,Twitter勁敵Threads是如何構建的?

Python吞噬世界,GPT吞噬Python!ChatGPT 上線最強應用:分析數據、生成代碼都精通

LLM對程式設計師的衝擊和影響

阿里轉崗先離職:清空司齡裁員不給錢?馬斯克作死推特,對手小扎社交平台喜獲3000萬用戶;美國或限制中國用戶使用美雲服務|Q資訊

文章來源: https://twgreatdaily.com/540f9e74ae3de1b2c6271bc44bc17009.html