Redpoint推出了pkgsign,一個NPM的軟件包簽名和驗證工具。它旨在確保上傳至NPM注冊表和從NPM注冊表下載的包的真實性,從而提高安全性。
當你用NPM工作時,會出現(xiàn)一個潛在的安全問題,那就是包的作者無法驗證。這意味著惡意軟件包可以以合法軟件的名義得以上傳,反過來,任何依賴它的應用程序也可以照常執(zhí)行這個軟件包。
最近發(fā)生的一起事件證明了這點。當幾個包從NPM注冊表意外消失時,九個不知名的包被上傳,取而代之。雖然這個問題現(xiàn)在已經(jīng)解決了,但還是有一段空檔期,在這期間,不可信的代碼會被誤用,就如同它們是合法的代碼一樣。
為了降低這種風險,Redpoint推出了pkgsign:
pkgsign是一個工具,它能為NPM和Yarn包添加簽名并使用已知簽名來驗證這些包。為了簡化操作,pkgsign還允許使用PGP私鑰或keybase.io來簽名包。
在安裝Keybase和pkgsign之后,包作者可以導航到其軟件包目錄,并發(fā)出如下的命令來簽署軟件包:
pkgsign .在這個過程中,一個“signature.json”文件將被添加到包中,其他用戶可以用這個文件來驗證作者的真實性。
通過使用Keybase,簽名還可以連接到各種社交媒體帳戶,這有助于進一步驗證簽名者的身份。同時,PGP簽名也是可用的,這意味著作為替代選擇,大公司可以生成PGP密鑰并將其上傳到公共域。
要驗證當前你正在處理的包的依賴包,你可以再次發(fā)出下面這條命令:
pkgsign verify .--full未來還將發(fā)布一個“代表簽名”的功能。即使依賴項所有者本身未進行簽名,這個功能也可以讓軟件包為其依賴包的內(nèi)容簽名。所以,它能夠使包被完全簽名。
需要指出的是,由于該工具仍然較新,所以有些軟件包仍然沒有用它進行簽名:
目前pkgsign依賴于未簽名的包(因為它還比較新!)。當你從GitHub或NPM安裝pkgsign時,這些依賴包還不能得到驗證。
如果pkgsign使用率增長,可能就會改變這一情況,但現(xiàn)在,建議你直接從GitHub克隆pkgsign項目,以確保你使用的是正確的版本。或者,你可以直接從NPM注冊表中安裝它,而不用簽名。
查看英文原文:Redpoint Games Launch NPM Package Signing Tool