123% mehr gemeldete CVEs pro Tag in 2026 als im Vorjahr.

Abhängigkeiten

npm audit

npm audit gleicht die Pakete in Ihrem Projekt mit bekannten Sicherheits-Advisories ab und meldet, was es findet. Es gehört zu npm, kostet nichts und braucht nur Sekunden. Damit ist es der einfachste SCA-Scan, den Sie ausführen können. Wenn Sie wissen, was es liest, wissen Sie auch, was es übersehen kann.

Aktualisiert am

So funktioniert npm audit

npm audit sendet eine Beschreibung der Abhängigkeiten Ihres Projekts an Ihre Standard-Registry und fragt nach bekannten Schwachstellen. Es braucht eine package-lock.json oder eine Shrinkwrap-Datei, denn daher weiß es, welche Versionen Sie haben. Die Details stehen in der npm-Dokumentation.

npm audit                       # report everything
npm audit --omit=dev            # skip dev dependencies
npm audit --audit-level=high    # fail only on high or critical
npm audit --json                # machine-readable output

So lesen Sie den Bericht

  • Der Schweregrad stammt aus dem Advisory. Er sagt, wie schwer die Lücke allgemein ist, nicht wie schwer sie für Sie ist.
  • Der Abhängigkeitspfad zeigt, was das Paket nachgezogen hat. Die meisten Befunde sind transitive Abhängigkeiten, und die Lösung liegt meist im Paket darüber.
  • Entwicklung oder Produktion. Eine Lücke in einem Test-Tool wird nicht an Nutzer ausgeliefert, läuft aber trotzdem in Ihrem Build. Ignorieren Sie sie also nicht ganz.

Bei einer langen Liste beginnen Sie mit dem, was ausgenutzt wird und was ausgeliefert wird. Siehe so priorisieren Sie Schwachstellen.

npm audit fix und wann Sie es nicht erzwingen sollten

Befehl Was er tut Risiko
npm audit fix Wendet kompatible Updates innerhalb Ihrer Versionsbereiche an Niedrig. Führen Sie trotzdem Ihre Tests aus, denn der Befehl löst eine vollständige Installation aus
npm audit fix --force Erlaubt auch Änderungen außerhalb Ihrer Versionsbereiche, einschließlich Major-Versionen Hoch. Er kann Ihre Anwendung beschädigen, und npm rät davon ab, ihn ohne klare Vorstellung davon zu nutzen, was Sie erreichen wollen

Gibt es keinen Fix, können Sie das übergeordnete Paket aktualisieren oder mit dem Feld overrides in der package.json eine gepatchte transitive Version erzwingen. Testen Sie das, denn das übergeordnete Paket wurde nicht mit dieser Version gebaut.

npm audit im CI ausführen

Standardmäßig beendet sich npm audit mit einem Exit-Code ungleich null, sobald es etwas findet. Das lässt den Job bei jedem Advisory mit niedrigem Schweregrad fehlschlagen. Teams setzen daher meist einen Schwellenwert. Beachten Sie, dass --audit-level nur den Schwellenwert für das Fehlschlagen ändert und den Bericht nicht filtert.

- run: npm ci
- run: npm audit --omit=dev --audit-level=high

Eine solche Prüfung kann einen Build auch ohne Codeänderung fehlschlagen lassen, weil über Nacht ein neues Advisory veröffentlicht wurde. Legen Sie fest, wer für diesen Fehlschlag zuständig ist, bevor Sie sie aktivieren. Mehr dazu unter wo SCA-Scans laufen sollten.

Was npm audit übersieht

  • Alles außerhalb von npm. Ihr Basis-Image, Betriebssystempakete, Python-Tools und GitHub Actions stehen nicht in der package-lock.json.
  • Code, der bei der Installation geladen wird. Install-Skripte können Dateien herunterladen, die kein Lockfile aufzeichnet. Siehe was ein Lockfile nicht aufzeichnet.
  • Neue bösartige Pakete. Es gleicht veröffentlichte Advisories ab, ein Paket ohne Advisory kommt also ohne Befund durch.
  • Was bereits ausgeliefert ist. Es berichtet über das Projekt, das vor ihm liegt. Ein neues Advisory für das Release vom letzten Jahr taucht nur auf, wenn jemand es für diese Version erneut ausführt.
  • Ob Sie betroffen sind. Es weiß nicht, ob Ihr Code die verwundbare Funktion nutzt. Erreichbarkeitsanalyse geht dieser Frage nach.

npm audit signatures ist ein eigener Befehl, der Registry-Signaturen und Provenienz-Attestierungen der installierten Pakete prüft. Er prüft, woher ein Paket stammt, nicht ob es sicher ist.

npm audit und CRACI

Führen Sie npm audit weiter bei Pull Requests aus. Es ist kostenlos und findet bekannte Probleme früh. CRACI deckt ab, was es nicht sehen kann: Als Ihr GitHub-Actions-Runner zeichnet CRACI jedes Paket auf, das jeder Job tatsächlich von npm und aus jeder anderen Quelle geladen hat, einschließlich der aus CI-Caches wiederhergestellten Pakete und der von Install-Hooks geladenen Dateien. Anschließend prüft es die SBOM des Ausgelieferten laufend weiter, sobald neue Schwachstellen veröffentlicht werden. Siehe die besten SCA-Tools oder SBOM-Generierung im Build.

npm audit: häufig gestellte Fragen

Was macht npm audit?

Es sendet eine Beschreibung Ihrer Abhängigkeiten an die npm-Registry, gleicht sie mit bekannten Sicherheits-Advisories ab und meldet verwundbare Pakete mit ihrem Schweregrad und dem Weg, auf dem sie in Ihr Projekt gelangt sind.

Ist npm audit fix sicher?

Das einfache npm audit fix ist meist sicher, weil es innerhalb Ihrer Versionsbereiche bleibt. Führen Sie danach aber Ihre Tests aus. npm audit fix --force kann neue Major-Versionen installieren und Ihre Anwendung beschädigen.

Warum zeigt npm audit so viele Schwachstellen?

Die meisten stammen aus transitiven Abhängigkeiten und Entwicklungswerkzeugen. Nutzen Sie --omit=dev, um sich auf das Ausgelieferte zu konzentrieren, und priorisieren Sie nach Ausnutzung und Exposition statt nach der Anzahl.

Wie ignorieren Sie eine Schwachstelle in npm audit?

npm audit hat keine integrierte Ignorierliste. Teams nutzen das Feld overrides, um die Version zu ändern, einen Schwellenwert mit --audit-level oder ein Wrapper-Tool, das akzeptierte Befunde festhält.

Braucht npm audit ein Lockfile?

Ja, standardmäßig braucht es package-lock.json oder eine Shrinkwrap-Datei. Mit --no-package-lock können Sie das umgehen, dann können die Ergebnisse aber zwischen den Läufen abweichen.

Erkennt npm audit Malware?

Erst wenn für das Paket ein Advisory veröffentlicht wurde. Zu einem neuen bösartigen Paket gibt es kein Advisory, es wird also am Tag seines Erscheinens nicht gemeldet.

Sehen Sie, was npm audit nicht sehen kann

Lassen Sie einen GitHub-Actions-Workflow auf CRACI laufen und vergleichen Sie die aufgezeichnete SBOM mit Ihrer package-lock.json.

Demo buchen