DevShield · lokale Installations-Firewall

Härten Sie Ihre npm ci und pip install.

DevShield ist ein separates Entwicklerwerkzeug von Anankelis zur Prüfung von npm- und pip-Abhängigkeitsinstallationen. Es ergänzt die Proxia-Browsererweiterung; für die Nutzung von Proxia benötigen Sie es nicht.

i

DevShield ist ein Prüfpunkt Werkzeug: Es schützt nur Installationen, die Sie darüber ausführen. Ein direkt ausgeführtes npm ci bleibt unsichtbar. Sie härten Ihre CI und den freigegebenen lokalen Ablauf — nicht „installieren und überall sicher sein“.

Installieren

DevShield und Anleitung beziehen.

Kontaktieren Sie ANANKELIS oder Ihren Administrator für das passende Paket und die Installationsanleitung Ihrer Umgebung.

DevShield anfordern

Der zentrale Befehl

devshield run — eine Installation umhüllen.

DevShield führt Ihren Befehl aus, wendet die aktivierten Prüfstufen an und schreibt (mit --audit-log) ein lokales JSONL-Protokoll. Jede Stufe ist standardmäßig auf warn gesetzt (nicht destruktiv); Sie erhöhen auf block oder fail , wenn Sie härten möchten.

devshield run (--profile | --policy ) [--scripts-mode ] [--preflight-secrets] [--preflight-mode ] [--preflight-lockfile] [--lockfile-mode ] [--egress-proxy] [--egress-mode ] [--audit-log ] -- <command> [args...]
Die vier Prüfstufen

Vier Ebenen, einzeln aktivierbar.

Jede ist unabhängig und standardmäßig nicht destruktiv. Zusammen decken sie die häufigsten Installationsangriffswege ab.

// 1 · Ausführung

Lifecycle-Skripte

--scripts-mode warn|block|fail

block deaktiviert npm-Installationsskripte (fügt --ignore-scripts); fail verweigert (Exit 21) vor dem Start des Prozesses. Prüft auch npx / npm exec / pnpm dlx als beliebige Codeausführung. pip: nur Warnungen. Die Ebene, die Schadcode nach dem Muster Shai-Hulud / Axios stoppt.

// 2 · Integrität

Lockfile-Zustand

--preflight-lockfile [--lockfile-mode warn|fail]

Meldet (oder verweigert, Exit 22) ein fehlendes oder ungehashtes npm-Lockfile oder einen Befehl, der ändert das Lockfile (npm install), statt es zu beachten (npm ci). Zustandsprüfung, keine Manipulationserkennung — npm prüft Hashes bereits. pip: bestmöglich, nur Warnungen.

// 3 · Geheimnisse

Geheimnis-Vorprüfung

--preflight-secrets [--preflight-mode warn|fail]

Meldet Umgebungsvariablen und Dateien mit Geheimnissen (.env, .npmrc, .pypirc…) vor dem Start der Installation — ohne die Werte jemals auszugeben. fail → Exit 20.

// 4 · Netzwerk

Ausgehender Proxy

--egress-proxy [--egress-mode warn|enforce]

Ein lokaler Proxy (127.0.0.1), über den die Installation läuft. enforce blockiert (403) Verbindungen zu Hosts außerhalb der Freigabeliste. Kein MITM: Blockierung nach Host, niemals nach Inhalt. warn protokolliert alles; ein Bindungsfehler im Modus enforce → Exit 23 (sicher verweigern).

Modi · scripts-mode
ModusWirkungDEVSHIELD_MODE
warnStandard

Läuft unverändert; protokolliert ein lifecycle_scripts Ereignis.

nur Audit
block

Deaktiviert Skripte für npm (fügt --ignore-scripts + npm_config_ignore_scripts). pip / npx: nur Warnungen.

enforce
fail

Beendet sich 21 vor dem Prozessstart, falls Skripte ausgeführt würden. Unbekannter Befehl → verweigert (sicher verweigern).

enforce
!

Hinweis zur Abdeckung:block Die Skriptdeaktivierung ist verifiziert für npm. yarn Berry (v2+) ignoriert npm_config_* und beachtet --ignore-scriptsnicht; vor dem Einsatz mit pnpm/yarn prüfen.

Exitcodes

Ein Code je Verweigerung — in CI-Skripten nutzbar.

CodeBedeutung
0

Unterprozess ausgeführt; keine Prüfstufe hat verweigert.

Code des Unterprozesses

Vom umhüllten Befehl durchgereicht.

20

--preflight-mode fail: Geheimnisrisiko erkannt.

21

--scripts-mode fail: Lifecycle-Skripte würden ausgeführt.

22

--lockfile-mode fail: Risiko beim Lockfile-Zustand.

23

--egress-mode enforce: Proxy konnte nicht starten (sicher verweigern).

10

prüfen / ausgehenden Verkehr beobachten: Ziel durch Richtlinie blockiert.

2

Nutzungs- oder Argumentfehler.

125 · 127

Fehler beim Schreiben des Audit-Protokolls (125) · Fehler bei der Befehlsausführung (127).

Einführung · zuerst CI

Der wertvollste Ansatzpunkt.

Hier treffen Lieferkettenangriffe tatsächlich ein; die Stelle ist zentral und kann nicht vergessen werden. Ersetzen Sie eine Zeile und lassen Sie den Build bei Risiken sicher scheitern:

# .github/workflows/ci.yml — gehärteter Build - run: | devshield run --profile npm \ --scripts-mode fail \ --preflight-lockfile --lockfile-mode fail \ --preflight-secrets --preflight-mode fail \ --egress-proxy --egress-mode enforce \ --audit-log devshield-audit.jsonl \ -- npm ci - run: devshield audit read --audit-log devshield-audit.jsonl # Protokoll im Build-Log

Weitere Ansatzpunkte: ein Shell-Alias (alias npm='devshield run … -- npm') für transparente lokale Nutzung; ein gemeinsames Makefile / just Ziel für das Team; der Entwicklungscontainermit seinem postCreateCommand.

Audit-Protokoll

Ein lokales, lesbares JSONL-Protokoll.

devshield audit read --audit-log <file> # Zusammenfassung aller Ereignisse devshield audit trace --audit-log <file> --context-id <id> # ein Befehl mit ausgehendem Verkehr

Ereignisse: command_run, lifecycle_scripts, secret_preflight, lockfile_preflight, egress_observation. Alles lokal; nichts wird übertragen.

Transparenz · was DevShield nicht ist

Eindämmung, kein Zauberstab.

// Umfang

Nur darüber ausgeführte Installationen

Kein systemweites Abfangen. Ein direktes npm ci ist unsichtbar. Der Shell-Alias kommt dem am nächsten, ist aber optional und umgehbar.

// Art

Eindämmung, keine Integrität

--scripts-mode stoppt Ausführung und Datenabfluss; es erkennt nicht, ob ein Paket ausgetauscht wurde. npm prüft die Integrität bereits bei der Installation.

// Netzwerk

Host, nicht Inhalt

Der Proxy blockiert nach Host:Port, ohne MITM. Er kann einen Download nicht von einem publish auf einem freigegebenen Host unterscheiden. github.com bleibt standardmäßig erlaubt.

// Zerstörung

Kein Dateisystemschutz

Ein postinstall , das Dateien löscht, wird nur gestoppt, wenn Skripte deaktiviert sind (block/fail). Netzwerkkontrolle hilft hier nicht.

Nutzen Sie DevShield, um Ihre CI und Ihren freigegebenen lokalen Ablauf zu härten, zusammen mit festgeschriebenem Lockfile und Paketprovenienz — nicht als „installieren und überall sicher sein“.