近日,在Vancouver BC舉行的Node.js互動會議上,npm公司宣布推出新的安全功能,旨在使npm注冊表更加安全,防止攻擊。
鑒于其廣泛使用和JavaScript開發人員重度依賴npm軟件包,注冊表的安全性是至關重要的。如果攻擊者獲得被廣泛引用的軟件包的安全憑證,將會造成極大的危害。
新的npm令牌CLI工具提供了以更安全的方式創建令牌的方法。在認證令牌(auth token)意外泄露的情況下,令牌的作用會被限制,這一特性非常有用。例如:
npm token create —cidr=[10.0.0.1/32]
它將創建一個只能在給定的IP范圍內使用的令牌。當令牌在源代碼控制系統中或持續集成日志中泄漏時,該令牌僅在該IP范圍內有用。如果攻擊者獲得令牌,它的作用已經被限定在特定的范圍內。
現在也可用只讀令牌:
npm token create —readonly
這種方式所創建的令牌只能用于讀取軟件包,不能發布。
還有一個新功能是使用雙因素身份驗證(two-factor authentication,2FA)來保護配置文件。可以用現有的身分驗證程序如Google Authenticator將帳號關聯起來,不需要使用手機短信。
當在auth-and-writes模式下啟用2FA時,諸如發布新版本或更改“latest”標簽的操作將需要來自認證者的一次性密碼。以下是啟用2FA時的進程截圖。
目前,2FA的作用范圍是基于單個配置的。這意味著,如果一個軟件包有多個維護者,那么每個維護者都必須啟用2FA。在不久的將來,npm將提供軟件包級別的2FA功能。此外,使用私有代碼倉庫的企業將能夠在企業級別啟用2FA。
據npm的CTO CJ Silverio介紹,他們的目標之一是盡可能地確保注冊表的安全。Silverio說:“npm想要變得非常可靠,讓用戶可以每天放心地使用npm”,而不用擔心注冊表的完整性問題。
開發人員可以通過npm install -g npm@next安裝新的命令行工具。
查看英文原文:NPM Releases New Security Features
感謝薛命燈對本文的審校。