Wenn ich renne npm install
, heißt es found 33 vulnerabilities (2 low, 31 moderate)
run `npm audit fix` to fix them, or `npm audit` for details
.
Allerdings npm audit fix
Ausgängeup to date in 11s
fixed 0 of 33 vulnerabilities in 24653 scanned packages
33 vulnerabilities required manual review and could not be updated
Bedeutet das, dass review
es nicht vom Benutzer behoben werden soll?
Wenn ich es ausführe npm audit
, bekomme ich eine Liste von Tabellen, ähnlich wie folgt:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ browser-sync > easy-extender > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
In diesem Beispiel heißt es im Abschnitt zur Korrektur der verlinkten Seite Update to version 4.17.5 or later.
. Es /node_modules/browser-sync/package.json
gibt jedoch Zeilen:
"devDependencies": {
"lodash-cli": "4.17.5",
}
und keine lodash-Abhängigkeiten mehr. Es sollte also schon v4.17.5 sein. Ich habe auch überprüft, /node_modules/lodash/lodash.json
welche var VERSION = '4.17.10';
Linie hat. Darin /node_modules/lodash/package.json
sind diese Zeilen:
"_from": "lodash@^4.17.4",
"_id": "[email protected]",
Ich glaube, dass die Version in "_id" und nicht in "_from" angezeigt wird, daher sind die Versionen korrekt, aber die Sicherheitsanfälligkeit wird weiterhin in der Überwachungsliste angezeigt.
Ich bin noch neu in node.js und diese Nachrichten verwirren mich sehr. Gibt es eine Möglichkeit, das Problem manuell zu beheben oder diese Nachrichten zu entfernen, mit denen ich nichts anfangen kann?
Antworten:
lodash-cli
indevDependencies
hat keinen Einfluss darauf, wiebrowser-sync
in Ihrem Projekt funktioniert. WirddevDependencies
ignoriert, wenn ein Paket als Abhängigkeit installiert wird.Was der
audit
Bericht sagt, ist, dass eseasy-extender
einelodash
Abhängigkeit gibt:Es hängt davon ab , Lodash 3 , während das Problem in Lodash 4. Das Problem wurde behoben durch Forking behoben werden konnte
easy-extender
, es zu aktualisieren und es anstelle des Pakets von NPM öffentlichen Registrierung installieren. Mit dieser Abhängigkeit gibt es jedoch kein wirkliches Problem.audit
Die Wichtigkeit des Berichts sollte manuell bewertet werden. Selbst wenn verschachtelte Abhängigkeiten ein Sicherheitsrisiko aufweisen, bedeutet dies nicht, dass eine Funktion verwendet wurde, die dieses Risiko einführt. Dies bedeutet auch nicht, dass selbst wenn es verwendet wird, aufgrund seiner Verwendung ein echtes Risiko besteht.browser-sync
Da es sich um ein Entwicklungstool handelt, das nicht in der Produktion verwendet wird, gibt es nicht so viele Szenarien, in denen seine Schwachstellen ausgenutzt werden könnten. Und Prototype Pollution ist überhaupt keine Sicherheitslücke, nur ein Hinweis darauf, dass ein Paket nicht den bewährten Methoden entspricht, sondern ignoriert werden kann.Im Allgemeinen können Sie auf diese Weise gemeldete Sicherheitsanfälligkeiten beheben:
In den meisten Fällen wird erwartet, dass Sie nicht über eine Überprüfung der geistigen Gesundheit hinausgehen.
patch-package
kann helfen, verschachtelte Abhängigkeiten an Ort und Stelle zu patchen, dies hat jedoch keine Auswirkungen auf denaudit
Bericht.quelle
node_modules
, also ist Gabeln und Reparieren nur ein Weg, um sie loszuwerden? Und als neuer Benutzer kann ich das nicht? Sollte ich Paketentwickler darüber informieren?audit
), die Antwort antwortet darauf. Die Leute lebtennpm audit
irgendwie ohne . Die Wahrscheinlichkeit, dass sie echte Sicherheitsprobleme in der App verursachen, ist sehr gering. Ohne zu wissen, was sie sind und wie sie in Ihrer App verwendet werden, kann ich dies jedoch nicht garantieren.Wenn Sie absolut sicher sind, dass Sie die Prüfung überspringen möchten, können Sie dies tun, indem Sie --no-audit anhängen
quelle
'npm audit fix' erhöht die Version der Abhängigkeit in package.json, was zum Bruch des Codes führen kann. Besser ist es also, package-lock.json zu öffnen und die Abhängigkeits- / Unterabhängigkeitsversionen auf die erforderliche Version zu aktualisieren. Pflegen Sie die package-lock.json im Repository.
Manchmal stammen Schwachstellen aus Entwicklungspaketen. In diesem Fall ignorieren Sie diese Schwachstellen, da diese in der Produktion nicht erkannt werden.
quelle
Das meiste Problem, das in meinem System auftrat, war auf das npm-Paket zurückzuführen. Ich habe es versucht,
Sie müssen nicht erneut installieren.
Führen Sie das Programm einfach erneut aus. Es hat bei mir funktioniert.
quelle