Der unabhängige Sicherheitsagent für KI-geschriebene Software. Findet Probleme, untersucht, ob sie echt sind, und zeigt Ihnen die Beweise. Deterministischer Kern, kein API-Schlüssel erforderlich, JSON- und SARIF-Ausgabe.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/b1f8834990a38d393bed6703c926c2f633c9d6afc19261eb02c67e9d45b7f350.png" alt="Ship Safe Logo" width="180" />
</p>
<p align="center"><strong>Der unabhängige Sicherheitsagent für KI-geschriebene Software. Er findet Probleme, untersucht, ob sie echt sind, und zeigt Ihnen die Belege.</strong></p>
<p align="center"><a href="https://shipsafe.sh">Website</a> · <a href="https://shipsafe.sh/docs">Dokumentation</a> · <a href="https://shipsafe.sh/security">Sicherheit & Datenfluss</a> · <a href="https://shipsafe.sh/benchmarks">Benchmark</a> · <a href="https://shipsafe.sh/pricing">Preise</a> · <a href="https://shipsafe.sh/blog">Blog</a> · <a href="https://github.com/asamassekou10/ship-safe/contribute">Mitwirken</a></p>
<p align="center">
<a href="https://www.npmjs.com/package/ship-safe"><img src="https://badge.fury.io/js/ship-safe.svg" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/ship-safe"><img src="https://img.shields.io/npm/dm/ship-safe.svg" alt="npm downloads" /></a>
<a href="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml"><img src="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
<a href="https://github.com/asamassekou10/ship-safe/stargazers"><img src="https://img.shields.io/github/stars/asamassekou10/ship-safe?style=social" alt="GitHub stars" /></a>
<a href="https://github.com/sponsors/asamassekou10"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github" alt="Sponsor" /></a>
</p>
## Ship Safe CLI
Ship Safe läuft lokal in Ihrem Repo und arbeitet in zwei Schichten.
Eine **deterministische Engine** findet Probleme im Anwendungscode, in KI-Agenten, MCP-Konfigurationen, Prompts, Abhängigkeiten, CI/CD, Secrets und cloudnaher Konfiguration. Schnell, wiederholbar und benchmarkgestützt — das ist die Sensor-Schicht.
Eine **Untersuchungsschicht** entscheidet anschließend, was die Befunde wert sind. Sie verfolgt den Wert, der eine Senke erreicht, durchsucht das Projekt nach Kontrollen, deren Fehlen eine Regel behauptet, baut Angriffsketten über Konfigurationen hinweg auf, die keine einzelne Datei enthält, und — wenn Sie es verlangen — prüft einen geleakten Schlüssel gegen seinen Anbieter. Jede Schlussfolgerung trägt den Durchlauf, der sie erreicht hat, und die Zeilen, die er gelesen hat:
```
CONFIRMED — traced end to end (10)
NoSQL Injection via $where [high]
app/data/allocations-dao.js:78 NOSQL_INJECTION_WHERE
why: threshold is assigned from the HTTP request and reaches the sink without validation on that path.
decided by: dataflow
1. value reaches NOSQL_INJECTION_WHERE here app/data/allocations-dao.js:78
2. getByUserIdAndThreshold is called here with threshold app/routes/allocations.js:23
3. threshold is assigned here app/routes/allocations.js:20
fix: Replace $where with standard MongoDB operators ($eq, $gt, $regex, etc.)
```
<sub>Echte Ausgabe von <code>ship-safe investigate</code> gegen OWASP NodeGoat. Der kontaminierte Wert wird in einer Routendatei destrukturiert und an ein DAO drei Verzeichnisse weiter übergeben.</sub>
Beginnen Sie mit einem Befehl:
```bash
npx ship-safe
```
Keine Anmeldung. Für das Scannen ist kein API-Schlüssel erforderlich. Die Kernprüfungen funktionieren offline. KI-gestützte Red-Team-Modi verwenden Ihren konfigurierten Anbieter, sofern verfügbar.
Verwenden Sie `--no-ai`, um einen vollständig lokalen Scan zu gewährleisten. Anbietergestützte Klassifizierung, tiefgehende Analyse und GPT-Red senden begrenzten Kontext direkt an Ihren ausgewählten Anbieter, nachdem eine bestmögliche Maskierung von Anmeldedaten erfolgt ist. Siehe [Security & Data Flow](https://shipsafe.sh/security) für die genauen Grenzen und Kontextlimits.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/75988a5baca705edcd06c5d39049d35be36f660fad2362de6700cf40eb72d2dd.gif" alt="Ship Safe REPL-Demo" width="800" />
</p>
---
## Schnellstart
Erfordert Node.js 22.13+ in der 22.x-Reihe oder Node.js 24+. Node 18 und 20
werden von der aktuellen Entwicklungsversion nicht mehr unterstützt.
```bash
# Interactive REPL: scan, fix, and ask questions in one session
npx ship-safe
# Full audit: secrets + 31 agents + deps + remediation plan
npx ship-safe audit .
# Investigate: confirmed / likely / unresolved / refuted, with the evidence
npx ship-safe investigate .
npx ship-safe investigate . --all # also detail unresolved and refuted
npx ship-safe investigate . --verify # probe leaked keys against their providers
# Before you open an unfamiliar folder with an agent: what runs on open?
npx ship-safe trust ~/Downloads/take-home
npx ship-safe trust . --json
# What can an AI agent working in this repo actually reach?
npx ship-safe capabilities .
# AI agent red-team scenarios for agent-readable content
npx ship-safe red-team . --gpt-red
# Interactive fix agent: plan, diff, approve, inspect the static rescan
npx ship-safe agent .
npx ship-safe agent . --severity critical # critical findings only
npx ship-safe agent . --branch --pr # fix on a branch + open a PR
# Undo the last fix
npx ship-safe undo
# CI/CD mode — fails on any critical finding
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # stricter: critical or high
# Gate on evidence instead of severity: block only what was established
npx ship-safe ci . --fail-on-verdict confirmed
npx ship-safe ci . --ignore-refuted # do not block on what was argued away
```
Für Pull Requests wird ein vertrauenswürdiger Basis-Scan mit dem Head-Scan verglichen, damit bestehende Repository-Schulden sichtbar bleiben, ohne unabhängige Änderungen zu blockieren:
```bash
# On the trusted base revision
npx ship-safe ci . --fail-on none --no-deps \
--write-baseline-report /tmp/ship-safe-base.json
# On the pull request head
npx ship-safe ci . --base-report /tmp/ship-safe-base.json --fail-on high
```
Das Basisartefakt enthält gehashte Finding-Identitäten, relative Pfade und Regel-Metadaten. Es speichert keine rohen übereinstimmenden Secrets. PR-Ergebnisse klassifizieren Findings als eingeführt, behoben, unverändert oder unsicher; mehrdeutige Übereinstimmungen werden angezeigt, blockieren aber nicht den Pull Request.
### Vertrag für maschinenlesbare Berichte
`scan --json`, `audit --json` und `ci --json` enthalten `schemaVersion: 1`, die Ship Safe-Version und einen UTC-Zeitstempel `generatedAt`. Finding-Pfade sind standardmäßig projektrelativ, damit Berichte zwischen Workstations und CI verschoben werden können, ohne lokale Verzeichnisnamen preiszugeben. Verwenden Sie `--absolute-paths` nur, wenn ein Consumer explizit Host-Pfade benötigt. SARIF-Berichte tragen dieselbe Paketversion in ihren Tool-Metadaten.
## Was Ship Safe findet
| Bereich | Beispiele |
|------|----------|
| KI- und LLM-Sicherheit | Prompt-Injection, Agent-Hijacking, übermäßige Agency, Memory-Poisoning, RAG-Poisoning, unsichere Tool-Aufrufe |
| MCP- und Agent-Konfigurationen | Übermäßig breite Tool-Berechtigungen, vergiftete Registries, nicht vertrauenswürdige Transporte, gefährliche Allowlists |
| Anwendungssicherheit | SQL/NoSQL-Injection, XSS, SSRF, Auth-Bypass, Path Traversal, unsichere API-Routen |
| Secrets und Compliance | API-Schlüssel, Tokens, Anmeldedaten, PII, geleakte Secrets in der Git-Historie |
| Lieferkette | Typosquatting, Dependency Confusion, riskante Install-Skripte, nicht gepinnte KI-Actions |
| CI/CD | Pipeline-Poisoning, nicht gepinnte GitHub Actions, Secret-Logging, unsichere Workflow-Trigger |
## Wie es funktioniert
1. **Lokal scannen** – Ship Safe untersucht Ihr Repo mit gezielten Agents und überspringt Prüfungen, die nicht zutreffen.
2. **Jedes Finding untersuchen** – Separate Durchläufe entscheiden, ob es echt ist, geordnet so, dass ein günstigerer Durchlauf niemals einen teureren umstößt: ein nachverfolgter Datenpfad hat Vorrang vor der Lesart eines Modells derselben Datei, und eine Probe, die sich authentifiziert hat, hat Vorrang vor beiden.
3. **Die Belege lesen** – Findings werden als bestätigt, wahrscheinlich, ungelöst oder widerlegt aufgelöst, jeweils mit Angabe der Zeilen, aus denen die Schlussfolgerung gezogen wurde, sodass Sie einem Schritt widersprechen können statt einem Schweregrad-Label.
4. **Mit Kontrolle beheben** – Der Agent schlägt einen Plan und einen Diff vor, fragt vor dem Schreiben nach, meldet statische Rescan-Belege und hält Änderungen umkehrbar. Das Verschwinden eines Detektors ist kein unabhängiger erneuter Test; siehe [Fix-Ergebnisse](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md).
5. **In CI gaten** – Verwenden Sie `ship-safe ci`, um riskante Builds fehlschlagen zu lassen und SARIF in GitHub Code Scanning hochzuladen.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/31125a0161ee16c772304e3097cdea464c8988cdc8e818ebf8356506fa1f1314.gif" alt="Ship Safe agent demo" width="800" />
</p>
---
## „Warum nicht einfach meinen Coding-Agenten bitten, das Repo zu prüfen?"
Das können Sie, und das sollten Sie auch. Er wird echte Dinge finden. Aber es gibt drei Fragen, die er über seine eigene Arbeit strukturell nicht beantworten kann.
**Hat der Agent, der diesen Code geschrieben hat, gerade seine eigene Arbeit benotet?** Den Autor zu fragen, ob der Autor einen Fehler gemacht hat, ist kein Review. Ship Safe ist ein separater Reviewer mit einer separaten Methode, und er widerspricht sich selbst öffentlich – ein Datenfluss-Trace stößt den Heuristik-Durchlauf um, und eine Live-Probe stößt beide um.
**Kann er sehen, was er erreichen kann?** Ein Coding-Agent, der Ihr Repo prüft, kann Ihre MCP-Server-Konfiguration nicht lesen, kann die Berechtigungen, mit denen er gestartet wurde, nicht auflisten und ist der Akteur, dessen Reichweite in Frage steht. `ship-safe capabilities` liest all das von außen und meldet die Kombinationen, die zusammen gefährlich sind, während sie einzeln unauffällig sind:
```
CRITICAL Repository-controlled instructions reach an unattended write capability
1. CLAUDE.md is read as instructions and can be changed by anyone who lands a commit
CLAUDE.md:1
2. Claude Code runs without per-action approval
.claude/settings.json:2
3. shell execute granted: Bash(git push:*)
.claude/settings.json:3
4. filesystem write granted: Write
.claude/settings.json:3
5. mcp-tool write granted: mcp__github__create_pull_request
.claude/settings.json:3
Impact: Text committed to this repository can direct the agent to write files
or run commands with no human in the loop.
Boundary: Require approval for write and execute tools during sessions on
untrusted branches, or remove the pre-granted entries.
```
Jede dieser Zeilen ist für sich genommen unauffällig. Zusammen bilden sie einen Pfad von einem Pull Request zu einem privilegierten Schreibzugriff, und keine Einzeldatei-Prüfung kann ihn erkennen, weil keine einzelne Datei ihn enthält.
**Ist es konsistent, und kannst du beweisen, dass es besser geworden ist?** Frag zweimal, erhalte zwei Antworten. Die Engine von Ship Safe ist deterministisch, und ihre Schlussfolgerungen werden in CI durch einen Benchmark abgesichert, der die *Qualität der Schlussfolgerungen* bewertet, nicht die Musterabdeckung: wie viele bekannte echte Funde sie bestätigt, wie viel bekannten Rausch sie widerlegt und ob sie jemals etwas Echtes widerlegt. Das Budget für diese letzte Zahl ist null – sie ist die einzige Fehlerklasse, die eine Schwachstelle stillschweigend verliert. Siehe [benchmarks/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks).
## Warum Entwickler es nutzen
- **Gebaut für KI-native Apps**: erkennt Risiken in Agents, MCP-Servern, Prompts, RAG-Flows, Managed-Agent-Konfigurationen und KI-gestützter CI.
- **Funktioniert mit KI-Clients**: macht Ship Safe über den lokalen stdio-Server für Codex, Claude Desktop, Cursor, Windsurf und andere MCP-Clients verfügbar.
- **Schnelles lokales Feedback**: führe es vor einem PR, während des Reviews oder in CI aus, ohne Code an einen gehosteten Scanner zu senden.
- **Fixes sind überprüfbar**: jede vorgeschlagene Änderung wird als Diff angezeigt, bevor sie deine Dateien berührt.
- **Funktioniert mit deinem Stack**: JavaScript, TypeScript, Python, Konfigurationsdateien, Infrastrukturdateien, GitHub Actions und mehr.
- **Open-Source-Kern**: MIT-lizenzierte CLI mit Dokumentation, Beispielen und einem wachsenden Agent-System.
## Kostenlose CLI, kostenpflichtige Team-Workflows
Die Open-Source-CLI ist der schnellste Weg, ein beliebiges Repository lokal zu scannen. Führe ein Upgrade durch, wenn du einen gehosteten Workflow rund um denselben Scanner benötigst:
| Bedarf | Verwendung |
|------|-----|
| Lokale Scans, Audits und agentengestützte Fixes | Kostenlose CLI |
| Scan-Verlauf, Cloud-Dashboard und PDF-Berichte | Pro |
| Gemeinsamer Workspace, PR Guardian, Team-Berichte und Zusammenarbeit | Team |
Vergleiche die Tarife unter [shipsafe.sh/pricing](https://shipsafe.sh/pricing).
Ship Safe Cloud, das gehostete Dashboard für Scan-Verlauf, PR Guardian, Abrechnung und Team-Workflows, wird in einem privaten Repository entwickelt, da es kommerziellen Produktcode und gehostete Infrastruktur-Workflows enthält. Das öffentliche `ship-safe`-Repository konzentriert sich weiterhin auf die MIT-lizenzierte CLI, Security-Agents, Regeln, Fixtures, CI-Integrationen und Dokumentation. Siehe [Ship Safe Cloud](https://github.com/asamassekou10/ship-safe/blob/main/docs/cloud.md) für die Repository-Abgrenzung.
---
## Security-Agents
Alle Agents laufen parallel. Jeder überspringt automatisch irrelevante Projekte.
| Agent | Kategorie | Was er erkennt |
|-------|----------|-----------------|
| **InjectionTester** | Code-Schwachstellen | SQL/NoSQL-Injection, Command Injection, XSS, Path Traversal, XXE, ReDoS, Prototype Pollution |
| **AuthBypassAgent** | Authentifizierung | JWT-Schwachstellen (alg:none, schwache Secrets), CSRF, OAuth-Fehlkonfiguration, BOLA/IDOR, TLS-Bypass |
| **SSRFProber** | SSRF | Benutzereingaben in fetch/axios, Cloud-Metadaten-Endpunkte, interne IPs |
| **SupplyChainAudit** | Lieferkette | Typosquatting, Wildcard-Versionen, verdächtige Install-Skripte, Dependency Confusion |
| **ConfigAuditor** | Konfiguration | Docker (Root-Benutzer, :latest), Terraform, Kubernetes, CORS, CSP, Firebase, Nginx |
| **SupabaseRLSAgent** | Authentifizierung | service_role-Schlüssel im Client-Code, Tabellen ohne RLS, anon-Key-Inserts |
| **LLMRedTeam** | KI/LLM | OWASP LLM Top 10: Prompt Injection, übermäßige Handlungsvollmacht, Offenlegung von System-Prompts |
| **MCPSecurityAgent** | KI/LLM | Missbrauch von MCP-Servern, Tool Poisoning, Typosquatting, unvalidierte Eingaben |
| **A2ASecurityAgent** | KI/LLM | A2A-Agent-Card-Poisoning, fehlende Authentifizierung, Klartext-Endpunkte, unsichere Push-Callbacks und nicht gepinnte Remote-Cards ([Abdeckung](https://github.com/asamassekou10/ship-safe/blob/main/docs/a2a-security.md)) |
| **AgenticSecurityAgent** | KI/LLM | OWASP Agentic AI Top 10: Agent-Hijacking, Privilegieneskalation, Missbrauch von Kimi K3/OpenAI-kompatiblen Tool-Calls |
| **RAGSecurityAgent** | KI/LLM | Context Injection, Document Poisoning, Zugriffskontrolle auf Vektor-DBs |
| **MemoryPoisoningAgent** | KI/LLM | Instruction Injection in Agent-Memory-Dateien, versteckte Unicode-Payloads (ASI-01, ASI-05) |
| **PIIComplianceAgent** | Compliance | SSNs, Kreditkarten, E-Mail-Adressen, Telefonnummern im Quellcode |
| **VibeCodingAgent** | Code-Schwachstellen | Anti-Patterns in KI-generiertem Code: keine Validierung, leere Catch-Blöcke, TODO-Auth |
| **ExceptionHandlerAgent** | Code-Schwachstellen | Leere Catch-Blöcke, unbehandelte Rejections, offengelegte Stack Traces (OWASP A10:2025) |
| **AgentConfigScanner** | KI/LLM | Prompt Injection in .cursorrules, CLAUDE.md, bösartige Claude-Code-Hooks |
| **MobileScanner** | Mobil | OWASP Mobile Top 10 2024: unsichere Speicherung, WebView-Injection, Debug-Modus |
| **GitHistoryScanner** | Secrets | Offengelegte Secrets in der Git-Commit-Historie |
| **CICDScanner** | CI/CD | Pipeline Poisoning, nicht gepinnte Actions, Secret-Logging (OWASP CI/CD Top 10) |
| **APIFuzzer** | API | Routen ohne Authentifizierung, Mass Assignment, GraphQL-Introspektion, Debug-Endpunkte |
| **ManagedAgentScanner** | KI/LLM | Fehlkonfigurationen von Claude Managed Agent: always_allow-Richtlinien, uneingeschränkte Netzwerkfreigabe (ASI-03–ASI-07) |
| **HermesSecurityAgent** | KI/LLM | Tool-Registry-Poisoning, Function-Call-Injection, Drift von Skill-Berechtigungen (ASI-01–ASI-10) |
| **AgentAttestationAgent** | Lieferkette | Nicht gepinnte Agent-Versionen, fehlende Integritäts-Hashes, unsignierte Manifeste (ASI-10, SLSA L0) |
| **AgenticSupplyChainAgent** | Lieferkette | Überprivilegierte KI-CI-Actions, OAuth-Scope-Creep, unsignierte KI-Webhook-Empfänger (ASI-02, ASI-06) |
| **RobloxSecurityAgent** | Lieferkette | Bösartige Roblox/Luau-Toolbox-Assets (Runtime-Asset-Injection, `rbxassetid://`-Loader, `HttpEnabled`, in Instanzattributen versteckte Payloads) |
| **ModelScanAgent** | Lieferkette | Code-Ausführungs-Payloads in ML-Modellgewichten (Pickle-Opcodes in `.pt`/`.pkl`/`.ckpt`), `torch.load` ohne `weights_only`, Scanner-Evasion-Archive (CWE-502, CWE-506) |
| **TrustBoundaryAgent** | Agentisch | GhostApproval-Symlink-Angriffe (konfigurationsbenannte Links in `~/.ssh`/`~/.aws`/`.env`), Repo-Symlinks, die den Baum verlassen, und Friendly-Fire-Anweisungen zur Ausführung bei Review in von Agenten gelesenen Dokumenten (CWE-59, CWE-61) |
| **SlopSquatAgent** | Lieferkette | Halluzinierte / Phantom-Paketimporte (Slopsquatting) — bloße Imports, die weder deklariert noch installiert noch eingebaut sind, sowie bekannte KI-halluzinierte Namen (CWE-1357) |
| **ClickFixAgent** | Lieferkette | ClickFix / Fake-CAPTCHA-Paste-and-Run-Köder (gefälschte Fehlermeldung + Win+R/Ctrl+V/Command-Bar-Tasteneingaben, PowerShell-Cradles) und npm-Lifecycle-Skripte gefälschter Installer (CWE-1357, CWE-506) |
| **InstallGuardAgent** | Lieferkette | npm-Wurm-Verhaltensweisen in Lifecycle-Skripten (Credential-Harvesting, Env-Exfiltration, destruktives `rm -rf`, obfuskiertes `node -e`) und weaponisierte `binding.gyp`-node-gyp-Aktionen (CWE-506, CWE-829) |
**Untersuchungsdurchläufe**, in der Reihenfolge, in der ihre Beweise einander übergeordnet sind:
| Durchlauf | Rang | Was er feststellt |
|------|------|---------------------|
| **VerifierAgent** | heuristisch | Musterprüfung rund um den Befund. Sagt nie mehr als „wahrscheinlich" |
| **DeepAnalyzer** | Analyse | LLM-Taint-Analyse des Befunds und seiner Datei, mit validierter Zitation |
| **DataflowInvestigator** | Datenfluss | Verfolgt den Wert zurück zu seinem Ursprung, über eine Funktionsgrenze hinweg und in andere Dateien. JavaScript, TypeScript und Python |
| **AbsenceInvestigator** | Präsenz | Durchsucht das Projekt oder den Handler nach der Kontrolle, die laut einer Regel fehlt |
| **LiteralContextInvestigator** | Präsenz | Entscheidet Befunde über einen fest eingeschriebenen Wert anhand dessen, was ihn umgibt — Prosa, ein Hilfetext oder eine reservierte Adresse |
| **CapabilityGraph** | Kette | Baut Angriffsketten aus Konfigurationen, die keine einzelne Datei enthält |
| **RedosReproducer** | Reproduktion | Führt ein markiertes Muster gegen generierte Eingaben in einem Worker mit Zeitlimit aus |
| **SecretsVerifier** | Reproduktion | Legt einem Anbieter einen geleakten Schlüssel vor. Opt-in: dies gibt den Schlüssel preis |
Eine Behauptung, deren zitierte Datei oder Zeile sich nicht auflösen lässt, wird festgehalten, entscheidet aber nie über ein Urteil. Zwei Durchläufe gleichen Rangs, die sich widersprechen, führen zu „unaufgelöst" statt zu dem Urteil, das furchteinflößender ist.
**Außerdem:** ScoringEngine
---
## Die REPL
```
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan to find issues · /agent to fix them · /help for more
shipsafe ›
```
| Befehl | Was er bewirkt |
|---------|-------------|
| `/scan` | Das Projekt erneut scannen |
| `/agent` | Die interaktive Fix-Schleife ausführen |
| `/findings` | Befunde des letzten Scans auflisten |
| `/show <n>` | Vollständige Details zu Befund n anzeigen |
| `/plan <n>` | Fix-Plan für Befund n in der Vorschau anzeigen (keine Schreibvorgänge) |
| `/undo [--all]` | Den letzten Fix (oder alle Fixes) rückgängig machen |
| `/share` | Den Scan-Bericht als öffentliche URL veröffentlichen (7 Tage) |
| `/diff` | Den Git-Working-Tree-Diff anzeigen |
| `/provider <name>` | Den LLM-Anbieter mitten in der Sitzung wechseln |
| `/quit` | Beenden (auch `Ctrl-D` oder `Ctrl-C`) |
Alles, was nicht mit `/` beginnt, wird als Freitextfrage an das LLM gesendet, wobei Ihre neuesten Scan-Ergebnisse als Kontext dienen.
---
## CI/CD
```yaml
# .github/workflows/security.yml
name: Security Audit
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security gate
run: npx ship-safe ci . --sarif results.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
```
Eine GitLab-CI-Version befindet sich in [docs/examples/gitlab-security-workflow.yml](https://github.com/asamassekou10/ship-safe/blob/main/docs/examples/gitlab-security-workflow.yml).
### GitHub Action mit Inline-PR-Funden
Verwende die Action aus einem `pull_request`-Workflow, wenn du kritische und hohe Funde an die geänderten Zeilen angehängt haben möchtest. Halte `pull_request_target` bei diesem Pfad für Fork-Beiträge heraus: Ship Safe lehnt diese privilegierte Kombination ab, da der Checkout nicht vertrauenswürdigen Code enthalten kann.
```yaml
name: Ship Safe
on:
pull_request:
permissions:
contents: read
pull-requests: write
security-events: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: asamassekou10/[email protected]
with:
fail-on: high
inline: true
```
Inline-Kommentare sind optional und werden nur bei kritischen/hohen Befunden veröffentlicht. Ein erneuter Lauf des Jobs aktualisiert die Zusammenfassung, ohne doppelte Inline-Kommentare zu erstellen.
---
## LLM-Unterstützung
Funktioniert mit jedem Anbieter – automatisch anhand von Umgebungsvariablen erkannt. Verwende `--provider <name>`, um dies zu überschreiben.
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · jeder OpenAI-kompatible Endpunkt
Kimi verwendet standardmäßig `kimi-k3` über `MOONSHOT_API_KEY` oder `KIMI_API_KEY`. Verwende `--provider kimi --model kimi-k3` für GPT-Red-Läufe mit langem Kontext und tiefgehende Analysen.
Für Kimi-K3-spezifisches Red Teaming mit langem Kontext:
```bash
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
```
Ship Safe prüft außerdem Kimi K3 / OpenAI-kompatible Tool-Call-Implementierungen auf dynamisches Laden von Tools aus dem Prompt-Kontext, fehlende Tool-Allowlists, erzwungene Tool-Aufrufe bei nicht vertrauenswürdigen Eingaben und wiedergegebene Tool-Ergebnisse ohne die ursprüngliche Assistant-Tool-Call-Nachricht.
Für das Kern-Scanning ist kein API-Schlüssel erforderlich. Die KI-Klassifizierung und `red-team --gpt-red` verwenden Ihren konfigurierten Anbieter, sofern verfügbar, mit deterministischem Offline-Fallback für GPT-Red-Prüfungen.
---
## False Positives unterdrücken
```python
password = get_password() # ship-safe-ignore
```
`critical`-Befunde werden immer gemeldet. Ein Inline-Kommentar kann einen solchen nicht verbergen, und ein Versuch, einen zu unterdrücken, wird im Scan aufgezeichnet. Der Kommentar ist dafür gedacht, dass ein Mensch einen Fehlalarm ausschließt, und alles, was eine Zeile deines Quellcodes schreiben kann – einschließlich eines KI-Agenten – kann auch den Kommentar schreiben, daher werden die höchsten Schweregrade nicht berücksichtigt. Jede Unterdrückung wird gezählt, sodass ein Scan, der Befunde stummgeschaltet hat, nie wie einer aussieht, der keine hatte.
Gewöhnliche Coderegeln bewerten Markdown-Prosa oder eingezäunte Codebeispiele nicht als bereitgestellten Quellcode. Secrets werden weiterhin überall gescannt, und agentenlesbare Dateien wie `AGENTS.md` und `CLAUDE.md` behalten ihre dedizierten Prüfungen auf Prompt-Injection und Vertrauensgrenzen. Um eingezäunte Beispiele gezielt zu prüfen, verwende `--include-doc-examples` mit `scan`, `audit` oder `ci`.
```gitignore
# .ship-safeignore
tests/fixtures/
docs/
```
### Wie laut ist es?
Recall ist die leichte Hälfte eines Scanners. Ein Tool, das alles meldet, erfasst alles und ist nutzlos, deshalb verfolgen wir auch, was Ship Safe bei ausgereiften Projekten ohne bekannte aktive Schwachstellen meldet. Dies sind Rohbefunde, keine bestätigten Defekte.
| Projekt | Rohbefunde | kritisch | Score | Note |
|---|---:|---:|---:|:---:|
| [express](https://github.com/expressjs/express) | 10 | 0 | 88.2 | B |
| [requests](https://github.com/psf/requests) | 7 | 0 | 95.5 | A |
| [flask](https://github.com/pallets/flask) | 17 | 0 | 81.4 | B |
| [chalk](https://github.com/chalk/chalk) | 4 | 0 | 89.4 | B |
Die ursprünglichen vier ergeben zusammen 38 Rohbefunde, gegenüber 1.031 vor v9.6.3. Das aktuelle saubere Korpus aus fünf Projekten enthält außerdem Hermes Agent, das 662 Befunde meldet, darunter 66 kritische. Keine der beiden Zahlen ist eine Falsch-Positiv-Rate oder ein Anspruch auf Genauigkeit; automatisierte Untersuchungslabels und der verbleibende Arbeitsaufwand sind im Benchmark dokumentiert. Die Prüfungen der Erkennungsuntergrenze bei NodeGoat und DVWA bestehen weiterhin.
Korpus per Commit fixiert, mit einem Befehl reproduzierbar, Grenzen dokumentiert:
**[benchmarks/false-positives/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks/false-positives)**
### Wie schneidet es im Vergleich zu Semgrep, Gitleaks, Trivy, CodeQL ab?
Führe Ship Safe parallel zu ihnen aus, nicht anstelle von ihnen. CodeQL führt interprozedurale Taint-Analysen durch, die Ship Safe nicht versucht, Gitleaks ist der Spezialist für Secrets, und Trivy hat eine echte CVE-Datenbank dahinter.
Ship Safe deckt eine engere Frage ab: was ein KI-Coding-Agent gerade mit deinem Repository, deiner CI und deiner lokalen Tool-Konfiguration gemacht hat. MCP-Client-Konfiguration, Agent-Memory-Poisoning, halluzinierte Paket-Imports und AIBOM sind die Bereiche, in denen wir bei den anderen vier keine äquivalenten öffentlichen Regeln gefunden haben.
Vollständige Abdeckungsmatrix, verifiziert gegen deren öffentliche Registries, einschließlich der Bereiche, in denen sie uns übertreffen: **[docs/comparison.md](https://github.com/asamassekou10/ship-safe/blob/main/docs/comparison.md)**
---
## Badge hinzufügen
```markdown
[](https://shipsafe.sh)
```
## Was kommt als Nächstes
**10.1 ist ein Präzisions-Release.** Es behält die verifizierte Hermes Agent 10.0
Basislinie bei und verschärft die Attestierung, damit die eigenen Advisory-Zitate
von Ship Safe nicht mit unsignierten Agent-Ressourcen verwechselt werden. Die
bestehenden Plugin- und Adapter-Prüfungen sind teilweise vorhanden; Terminal-Posture, ACP/TUI, der aktuelle Cron-Lebenszyklus und die Erreichbarkeit von
Anmeldedaten bleiben ausdrücklich offene Arbeit statt implizit abgedeckter
Bereiche. Siehe die
[Abdeckungsmatrix](https://github.com/asamassekou10/ship-safe/blob/main/docs/hermes-coverage-matrix.md).
Siehe die [Roadmap](https://github.com/asamassekou10/ship-safe/blob/main/ROADMAP.md) für das, was geplant ist und was bewusst
nicht. Fokussierte Beiträge und benchmark-gestützte Korrekturen sind willkommen.
## Mitwirken
Ship Safe ist Open Source, und die besten Beiträge sind kleine, fokussierte Verbesserungen, die die KI-gestützte Entwicklung sicherer machen.
Gute Einstiegsbereiche:
- Einen fokussierten Sicherheits-Agenten für ein KI-, MCP-, CI-, Cloud- oder Supply-Chain-Risiko hinzufügen
- Eine präzise Sicherheitsregel zu einem bestehenden Agenten hinzufügen
- Verwundbare Fixtures und Regressionstests hinzufügen
- Beispiele für lokale Scans, CI-Gates, Red-Team-Workflows und MCP/Agent-Setup schreiben
Hier starten:
- [Good first issues](https://github.com/asamassekou10/ship-safe/contribute)
- [Beitragsleitfaden](https://github.com/asamassekou10/ship-safe/blob/main/CONTRIBUTING.md)
- [Einen Agenten hinzufügen](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-an-agent.md)
- [Eine Sicherheitsregel hinzufügen](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-a-security-rule.md)
- [Ein benutzerdefiniertes Agent-Plugin schreiben](https://github.com/asamassekou10/ship-safe/blob/main/docs/custom-agent-plugins.md)
- [MCP-Umgebungsvariablen sicher handhaben](https://github.com/asamassekou10/ship-safe/blob/main/docs/mcp-env-safety.md)
- [Ship Safe mit Codex verwenden](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/codex.md)
- [Ship Safe mit Claude Code verwenden](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/claude-code.md)
- [Ship Safe mit Cursor verwenden](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/cursor.md)
- [Fix-Ergebnisse und Grenzen der statischen Verifikation verstehen](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md)
- [Release-Prozess](https://github.com/asamassekou10/ship-safe/blob/main/docs/releasing.md)
---
## Sponsoren
Ship Safe ist MIT-lizenziert und für immer kostenlos.
<p align="center">
<a href="https://github.com/sponsors/asamassekou10">
<img src="https://img.shields.io/badge/Sponsor%20Ship%20Safe-%E2%9D%A4-ea4aaa?style=for-the-badge&logo=github" alt="Sponsor Ship Safe" />
</a>
</p>
---
## Star-Verlauf
[](https://star-history.dera.page/#asamassekou10/ship-safe&type=date)
---
**Ship fast. Ship safe.** — [shipsafe.sh](https://shipsafe.sh)