對 NPM 的攻擊,允許您確定私有存儲庫中是否存在包

NPM 中已發現一個錯誤,可讓您確定私有存儲庫中是否存在包。 該問題是由無權訪問存儲庫的第三方用戶請求現有包和不存在包時的響應時間不同引起的。 如果無法訪問私有存儲庫中的任何包,registry.npmjs.org 服務器將返回代碼為“404”的錯誤,但如果存在具有所請求名稱的包,則會明顯延遲地發出錯誤。 攻擊者可以使用此功能通過從字典中查找包名稱來確定包是否存在。

可能需要確定私有存儲庫中的包名稱來執行依賴項混合攻擊,該攻擊操縱公共存儲庫和內部存儲庫中的依賴項名稱的交集。 了解企業存儲庫中有哪些內部 NPM 軟件包後,攻擊者可以將具有相同名稱和較新版本號的軟件包放入公共 NPM 存儲庫中。 如果在構建時,內部庫未在設置中顯式鏈接到其存儲庫,則 npm 包管理器將優先考慮公共存儲庫並下載攻擊者準備的包。

GitHub 在 XNUMX 月份收到了有關該問題的通知,但以架構限制為由,拒絕增加針對攻擊的保護措施。 建議使用私有存儲庫的公司定期檢查公共存儲庫中是否有重疊的名稱,或者代表他們使用與私有存儲庫中的包名稱重複的名稱創建存根,以便攻擊者無法將其包放置在具有重疊名稱的位置。

來源: opennet.ru

添加評論