
Statische Sicherheitsanalyse für npm-Pakete. Erkennt obfuskierten Code, schädliche Muster und bekannte Schwachstellen vor der Installation.

Statische Sicherheitsanalyse für npm-Pakete – erkennt obfuskierte Lifecycle-Skripte, bekannte Schwachstellen und bösartige Muster bevor sie ausgeführt werden. Direkter Ersatz für npm install und npm ci.
Null Abhängigkeiten. Nur reine Node.js-Built-ins. < 100 kB übertragen.
npx np-audit scan express
npm install -g np-audit
npa scan # alle Abhängigkeiten scannen
npa install # prüfen, dann installieren
alias npm='npa' # als direkten Ersatz verwenden
Die Erkennung ist in modulare Marshaller unterteilt – jeder erkennt ein einzelnes Angriffssignal:
| Marshaller | Erkennt | Score |
|---|---|---|
eval/dynamic-exec | eval(), new Function(), indirektes eval, vm.*, setTimeout mit String | 8 |
obfuscator.io | _0x-Variablen-Benennungsmuster (obfuscator.io-Ausgabe) | 9–80 |
high-entropy-string | Lange Strings oder Verkettungsketten mit hoher Shannon-Entropie | 6 |
hex-escape-density | Dichte \xNN- und \uXXXX-Escape-Sequenzen | 5–50 |
fromCharCode | String.fromCharCode mit vielen Argumenten, große dezimale Zeichencode-Arrays | 7 |
encoded-decode | Base64/hex-Dekodierung (atob, Buffer.from) optional kombiniert mit eval | 3–8 |
child-process | require('child_process'), exec, spawn, fork, worker_threads | 5 |
hex-array | Große Anzahl von 0x-hexadezimalen Literalen | 7–60 |
process-env | process.env-Zugriff (Signal für Anmeldeinformationsdiebstahl) | 3 |
network-call | require('https'), fetch(), dns, net, tls | 4 |
filesystem-manipulation | fs.writeFile, chmod, symlink (Backdoor-Persistenz) | 3–4 |
runtime-download | Herunterladen und Ausführen externer Laufzeiten (Bun, Deno) | 9–50 |
vscode-autorun | VS Code-Aufgaben mit runOn: folderOpen (automatische Ausführung) | 30 |
known-vulnerability | Bekannte CVEs über Snyk API oder OSV.dev | 4–6 (WARNUNG), 80 (bösartig) |
Die Bewertungen skalieren mit dem Schweregrad – höhere Anzahlen von Obfuskierungsindikatoren erzeugen höhere Bewertungen. Das endgültige Urteil basiert auf der höchsten Einzelbewertung aller Marshaller.
Siehe CONTRIBUTING.md für Informationen zum Schreiben eigener Marshaller.
Jedes gescannte Paket wird zusammen mit der Code-Analyse gegen bekannte Schwachstellendatenbanken geprüft.
Standard: OSV.dev (keine Einrichtung erforderlich)
Funktioniert sofort – fragt die kostenlose OSV.dev-API nach bekannten Schwachstellen und schädlichen Paketmeldungen ab.
Optional: Snyk API (umfangreichere Daten)
# Umgebungsvariable
export SNYK_API_TOKEN=your-token-here
# Oder über die Snyk CLI
snyk auth
Token-Auflösungsreihenfolge: SNYK_API_TOKEN → SNYK_TOKEN → ~/.config/configstore/snyk.json
| Schweregrad | Bewertung | Urteil |
|---|---|---|
| Schädliches Paket | 80 | GEFAHR |
| 10+ Schwachstellen | 6 | WARNUNG |
| 5–9 Schwachstellen | 5 | WARNUNG |
| 1–4 Schwachstellen | 4 | WARNUNG |
Nicht-schädliche CVEs erzeugen Warnungen, blockieren die Installation jedoch nie. Nur bestätigte schädliche Pakete lösen GEFAHR aus.
| Befehl | Alias | Beschreibung |
|---|---|---|
npa install [package] | npa i | Audit durchführen, dann npm install ausführen |
npa ci | — | Audit durchführen, dann npm ci ausführen |
npa scan [package] | npa s | Nur scannen, keine Installation |
npa config get | npa c get | Aktuelle Konfiguration anzeigen |
npa config set <key> <value> | npa c set | Konfigurationswert aktualisieren |
npa alias --install | — | Shell-Alias installieren |
npa alias --uninstall | — | Shell-Alias entfernen |
Jeder nicht erkannte Befehl wird an npm weitergeleitet (z. B. npa run test, npa publish).
| Flag | Alias | Funktioniert mit | Beschreibung |
|---|---|---|---|
--review | -r | install, ci | Interaktiver Modus – wählen Sie, welche Skripte erlaubt werden |
--json | — | install, ci, scan | Maschinenlesbare JSON-Ausgabe |
--no-dev | — | install, ci, scan | Entwicklungsabhängigkeiten überspringen |
--verbose | — | alle | Fortschritt und zusätzliche Details anzeigen |
--version | -v | — | Version ausgeben und beenden |
--help | -h | — | Hilfe ausgeben und beenden |
--review-Modusnpa install --review
npa --review mode
Verwenden Sie ↑/↓ zum Navigieren, LEERTASTE zum Umschalten, EINGABE zum Bestätigen, q zum Beenden
Gefundene 3 Pakete mit Installationsskripten:
[✓ erlauben] [email protected] postinstall: post-install.js OK
▶ [✗ ablehnen] [email protected] postinstall: install.js GEFAHR (Bewertung: 9)
[✓ erlauben] @scope/[email protected] postinstall: install.js WARNUNG (Bewertung: 5)
2 erlaubt 1 abgelehnt
Die Konfiguration wird in ~/.npmauditor.json (global) gespeichert und kann pro Projekt mit .npmauditor.json überschrieben werden.
npa config get # Aktuelle Konfiguration anzeigen
npa config set blockScore 6 # Bei Bewertung 6+ blockieren
npa config set skipPackages '["esbuild"]' # Bestimmte Pakete vertrauen
npa config set skipScopes '["@types"]' # Ganze Scopes vertrauen