Angesichts der Tatsache, wie populär NodeJS ist und wie NPM funktioniert ... Was ist der beste Weg, um sicherzustellen, dass Sie niemals ein unsicheres/Malware-Paket installieren? Für mich scheint dies ein riesiges Loch in der Architektur zu sein, das sich ausschließlich auf Benutzerbewertungen, Kommentare zu Sites wie StackOverflow, persönliche Blogs usw. stützt. Ich habe ein wenig gesucht und alles, was ich zu finden finde, ist ein "Plan". für das Entfernen von beleidigenden Benutzern, sobald eine Beschwerde eingereicht wird, dass die Benutzer den Verhaltenskodex gebrochen haben.NodeJS & NPM: Paketsicherheit
NPM Code of Conduct https://www.npmjs.com/policies/conduct
Hier ist, wie Sie ein Paket veröffentlichen ... https://docs.npmjs.com/getting-started/publishing-npm-packages
Also begann ich darüber nachzudenken, was für schlechte Dinge jemand tun könnte ... vielleicht eine sehr nützliche erstellen Paket, dann Trojaner es mit einer Abhängigkeit zu einem Paket, das etwas Schlimmes tut. Auch wenn ich (als Installateur) die Pakete überprüft ich persönlich installieren, würde ich wahrscheinlich nie den fehlerhaften Code fangen, vor allem, wenn der Code verschleiert wurde, wie folgt aus:
eval((new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString()));
Dieser Code einfach erinnert an die/etc/passwd Datei zu Ihrem Standard aus. Nichts mehr. Beweisen Sie es, indem Sie nur das:
new Buffer('cmVxdWlyZSgiZnMiKS5jcmVhdGVSZWFkU3RyZWFtKCIvL2V0Yy9wYXNzd2QiKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTs=', 'base64').toString()
Diejenigen von Ihnen, die eval, gut für Sie fangen! Ich kann dies jedoch ohne Eval so viele verschiedene Möglichkeiten einpacken, also sollte dies nur als Beispiel genommen werden.
Also, mit all dem gesagt ... was macht die Community, um mit dieser Eventualität umzugehen? Wo kann ich mehr darüber erfahren, wie ich meine Systeme schützen kann?
Die gesamte Sicherheit der Gemeinschaft basiert auf dem Glauben und der Hoffnung, dass alles in Ordnung sein wird. – zerkms
Ich denke, dass die Tatsache, dass alle Pakete Open-Sourcing sein müssen, es ziemlich schwer für jemanden macht, sich in etwas Schädliches hineinzuschleichen. Selbst wenn man den Code ohne das Eval betrachtet, ist der Text ohne erkennbaren Zweck alarmierend. Sie können auch nach Anzahl der Abhängigen des Pakets suchen und auch nach dem Repo für Probleme suchen, wie viele Leute den Code genug gelesen haben, um Pull-Anfragen zu senden, etc. – csander
Open Source basiert auf Vertrauen _und_ Verifikation – dandavis