L'agente di sicurezza indipendente per software scritto dall'IA. Trova i problemi, verifica se sono reali e ti mostra le prove. Nucleo deterministico, nessuna chiave API necessaria, output JSON e SARIF.
L'agente di sicurezza indipendente per il software scritto dall'IA. Trova i problemi, verifica se sono reali e ti mostra le prove.
Sito web · Documentazione · Sicurezza e flusso dei dati · Benchmark · Prezzi · Blog · Contribuisci
Ship Safe viene eseguito localmente nel tuo repository e funziona su due livelli.
Un motore deterministico individua i problemi nel codice dell'applicazione, negli agenti IA, nelle configurazioni MCP, nei prompt, nelle dipendenze, nelle pipeline CI/CD, nei segreti e nella configurazione relativa al cloud. Veloce, ripetibile e sottoposto a benchmark: questo è il livello sensore.
Un livello di indagine decide poi quanto valgono i risultati. Traccia il valore che raggiunge un sink, cerca nel progetto i controlli che una regola segnala come mancanti, costruisce catene di attacco attraverso configurazioni che nessun singolo file contiene e — quando glielo chiedi — verifica una chiave esposta contro il suo provider. Ogni conclusione riporta il passaggio che vi è giunto e le righe lette:
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.)
Output reale di ship-safe investigate su OWASP NodeGoat. Il valore contaminato viene destrutturato in un file di route e passato a un DAO a tre directory di distanza.
Inizia con un solo comando:
npx ship-safe
Nessuna registrazione. Nessuna chiave API richiesta per la scansione. Funziona offline per i controlli principali. Le modalità red-team basate su AI utilizzano il provider configurato quando disponibile.
Usa --no-ai per garantire una scansione completamente locale. La classificazione basata su provider, l'analisi approfondita e GPT-Red inviano un contesto limitato direttamente al provider selezionato dopo un mascheramento best-effort delle credenziali. Consulta Security & Data Flow per i limiti esatti e i limiti di contesto.
Richiede Node.js 22.13+ sulla linea 22.x, oppure Node.js 24+. Node 18 e 20 non sono più supportati dalla versione di sviluppo corrente.
# 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
Per le pull request, confronta una scansione di base attendibile con la scansione della head in modo che il debito esistente del repository rimanga visibile senza bloccare modifiche non correlate:
# 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
L'artefatto di base contiene identità dei risultati con hash, percorsi relativi e metadati delle regole. Non memorizza i segreti grezzi individuati. I risultati delle PR classificano i risultati come introdotti, risolti, invariati o incerti; le corrispondenze ambigue vengono mostrate ma non bloccano la pull request.
scan --json, audit --json e ci --json includono schemaVersion: 1, la versione di Ship Safe e un timestamp UTC generatedAt. I percorsi dei risultati sono relativi al progetto per impostazione predefinita, così i report possono spostarsi tra workstation e CI senza divulgare i nomi delle directory locali. Usa --absolute-paths solo quando un consumatore necessita esplicitamente dei percorsi host. I report SARIF riportano la stessa versione del pacchetto nei propri metadati dello strumento.
| Area | Esempi |
|---|---|
| Sicurezza AI e LLM | Prompt injection, dirottamento degli agenti, agency eccessiva, avvelenamento della memoria, avvelenamento RAG, chiamate a strumenti non sicure |
| Configurazioni MCP e agenti | Permessi degli strumenti troppo ampi, registri avvelenati, trasporti non attendibili, allowlist pericolose |
| Sicurezza delle applicazioni | SQL/NoSQL injection, XSS, SSRF, bypass dell'autenticazione, path traversal, route API non sicure |
| Segreti e conformità | Chiavi API, token, credenziali, PII, segreti trapelati nella cronologia git |
| Supply chain | Typosquatting, dependency confusion, script di installazione rischiosi, azioni AI non bloccate a versione |
| CI/CD | Avvelenamento delle pipeline, GitHub Actions non bloccate a versione, logging di segreti, trigger di workflow non sicuri |