鑑於NodeJS的流行程度以及NPM如何工作......確保您永遠不會安裝不安全/惡意軟件包的最佳方法是什麼?對我來說,這似乎是一個巨大的漏洞,只依靠用戶評論,在StackOverflow等網站上發表評論,個人博客等。我已經做了一些搜索,我似乎找到了一個「計劃」一旦提出投訴,指出用戶違反了行爲準則,即可移除違規用戶。NodeJS&NPM:包安全
行爲 的NPM代碼https://www.npmjs.com/policies/conduct
這裏是你如何發佈包... https://docs.npmjs.com/getting-started/publishing-npm-packages
於是我開始思考什麼樣的壞事有人可以做...也許創建一個非常有用的封裝,然後特洛伊木馬將它與一個依賴關係轉換成一個不好的包。即使我(作爲安裝程序)回顧我個人安裝的軟件包,我可能永遠不會趕上違規代碼,特別是如果代碼被混淆,就像這樣:
eval((new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString()));
此代碼只是呼應了/ etc/passwd文件文件到你的標準輸出。而已。通過運行這個證明它:
new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString()
那些誰抓住eval,對你有好處!但是,如果沒有eval,我可以用很多不同的方式來包裝,所以這應該只是一個例子。
因此,所有這些說......社區在處理這種可能性方面做了什麼?我在哪裏可以找到有關如何保持我的系統安全的更多信息?
整個社區的安全是基於信仰,希望一切都會好的。 – zerkms
我認爲所有軟件包必須是開放源代碼的事實使得很難有人偷偷摸摸一些惡意的東西。即使在沒有eval的情況下查看代碼,沒有明顯目的的文本也是令人震驚的。您還可以查看該軟件包的依賴者數量,還可以查看其發佈的問題的回購,有多少人閱讀了足以提交請求的代碼等。 – csander
開源基於信任_and_驗證 – dandavis