2016-08-18 4 views
6

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?

+0

Die gesamte Sicherheit der Gemeinschaft basiert auf dem Glauben und der Hoffnung, dass alles in Ordnung sein wird. – zerkms

+0

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

+0

Open Source basiert auf Vertrauen _und_ Verifikation – dandavis

Antwort

3

Eine der möglichen Lösungen, um sicherzustellen, dass die Pakete, die Sie von npm installieren, sicher sind, ist nsp: Befehlszeilenprogramm des Teams Node Security (nodesecurity.io).

$ npm install -g nsp 

Dann im Verzeichnis Ihres Projekts (wo package.json befindet):

$ nsp check 

einen Bericht mit möglichen Schwachstellen produzieren, ist hier das Beispiel:

enter image description here

+1

Ist 'nsp' sicher? : p – undefined

+1

gute Frage. das ist der Hauptmann hinter dieser Initiative: https://medium.com/node-security/announcing-the-node-security-platform-28c99f872688#.ty9fgckws –

+0

Dagnabit. Du hast mich geschlagen. Ich fand das und wollte meine eigene Frage beantworten. :) Wie auch immer, ich akzeptiere deine Antwort ... aber ich bin total gegen das -g bei der Installation für so ziemlich alles, außer du hast nvm installiert. [Siehe warum hier] (http://brokenpromises.io/2016/08/15/where-do-i-start/). Ich habe gerade 3 Stunden damit verbracht, einige Hacks früher am Tag zu entfernen. – PRS

Verwandte Themen