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