Wie kann man npm-Schwachstellen manuell beheben?

96

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 fixAusgä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 reviewes 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.jsongibt 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.jsonwelche var VERSION = '4.17.10';Linie hat. Darin /node_modules/lodash/package.jsonsind 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?

Jakupov
quelle

Antworten:

33

lodash-cliin devDependencieshat keinen Einfluss darauf, wie browser-syncin Ihrem Projekt funktioniert. Wird devDependenciesignoriert, wenn ein Paket als Abhängigkeit installiert wird.

Was der auditBericht sagt, ist, dass es easy-extendereine lodashAbhängigkeit gibt:

browser-sync > easy-extender > lodash        

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.

auditDie 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-syncDa 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:

  • Führen Sie eine Überprüfung der geistigen Gesundheit durch
  • Falls es sich um ein echtes Problem handelt, überprüfen Sie das Repository des anfälligen Pakets auf vorhandene Probleme und PRs
  • Falls es keine gibt, reichen Sie ein Problem ein
  • Verzweigen Sie ein Repository oder verwenden Sie vorhandene PR als Git-Abhängigkeit, bis sie in der NPM-Version behoben ist
  • Führen Sie dies bei verschachtelten Abhängigkeiten auf mehreren Verschachtelungsebenen aus

In den meisten Fällen wird erwartet, dass Sie nicht über eine Überprüfung der geistigen Gesundheit hinausgehen.

patch-packagekann helfen, verschachtelte Abhängigkeiten an Ort und Stelle zu patchen, dies hat jedoch keine Auswirkungen auf den auditBericht.

Estus Flask
quelle
Ich habe nicht auf den Pfadabschnitt geachtet und er verwendet wirklich lodash v3.10.1, danke. Die Browsersynchronisierung ist jedoch nur ein Beispiel, das letzte der Liste. Ich kann also 2 niedrige Schwachstellen ignorieren, aber kann ich 31 moderate ignorieren? Ich nehme an, ich sollte nichts ändern 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?
Jakupov
4
Aber kann ich 31 moderate ignorieren? - Darum geht es bei der Überprüfung der geistigen Gesundheit. Verwenden Sie Ihr Urteilsvermögen. Je mehr Aufmerksamkeit Sie dem widmen, was diese Berichte tatsächlich sagen, desto besser können Sie in Bezug auf die Sicherheit Entwickler werden. Sollte ich Paketentwickler darüber informieren? - Sie sollten wahrscheinlich (zumindest zum Schweigen bringen audit), die Antwort antwortet darauf. Die Leute lebten npm auditirgendwie 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.
Estus Flask
Vielen Dank! Es hat einige Zeit gedauert, einen Kommentar zu schreiben, daher wurde der bearbeitete Teil vor dem Kommentieren nicht angezeigt.
Jakupov
5

Wenn Sie absolut sicher sind, dass Sie die Prüfung überspringen möchten, können Sie dies tun, indem Sie --no-audit anhängen

 npm install --no-audit
Tjad Clark
quelle
2

'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.

nik
quelle
-3

Das meiste Problem, das in meinem System auftrat, war auf das npm-Paket zurückzuführen. Ich habe es versucht,

npm un npm

Sie müssen nicht erneut installieren.

Führen Sie das Programm einfach erneut aus. Es hat bei mir funktioniert.

Gaurav Rana
quelle