Scanner di sicurezza CLI progettato per l'era agentica. Rileva configurazioni errate di CI/CD, rischi legati ai permessi degli agenti, iniezione di strumenti MCP, segreti hardcoded e dipendenze AI segnalate dal DMCA.
Trova codice rischioso, vulnerabilità degli agenti AI e problemi della supply chain prima che vengano rilasciati.
Sito web · Documentazione · Sicurezza e flusso dei dati · Benchmark · Prezzi · Blog · Contribuisci
Ship Safe è uno scanner di sicurezza AI per team software moderni. Viene eseguito localmente nel tuo repository, trova problemi nel codice applicativo, negli agenti AI, nelle configurazioni MCP, nei prompt, nelle dipendenze, nella CI/CD, nei segreti e nella configurazione cloud-adiacente, quindi ti aiuta a rivedere e applicare correzioni sicure.
Avvia una scansione 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 supportate dall'AI utilizzano il tuo 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 contesto limitato direttamente al provider selezionato dopo la mascheratura delle credenziali con il miglior sforzo. Vedi Sicurezza e flusso dei dati per i confini esatti e i limiti di contesto.
# REPL interattivo: scansiona, correggi e fai domande in un'unica sessione
npx ship-safe
# Audit completo: segreti + 29 agenti + dipendenze + piano di rimedio
npx ship-safe audit .
# Scenari red-team AI per contenuti leggibili dagli agenti
npx ship-safe red-team . --gpt-red
# Agente di correzione interattivo: pianifica, diff, approva, verifica
npx ship-safe agent .
npx ship-safe agent . --severity critical # solo risultati critici
npx ship-safe agent . --branch --pr # correggi su un branch + apri una PR
# Annulla l'ultima correzione
npx ship-safe undo
# Modalità CI/CD — fallisce su qualsiasi risultato critico
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # più severo: critico o alto
| Area | Esempi |
|---|---|
| Sicurezza AI e LLM | Prompt injection, dirottamento di agenti, agenzia eccessiva, avvelenamento della memoria, avvelenamento RAG, chiamate di strumenti non sicure |
| Configurazioni MCP e agenti | Permessi di strumenti troppo ampi, registry avvelenati, trasporti non affidabili, allowlist pericolose |
| Sicurezza delle applicazioni | SQL/NoSQL injection, XSS, SSRF, bypass di 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 |
| CI/CD | Avvelenamento della pipeline, GitHub Actions non bloccate, registrazione di segreti, trigger di workflow non sicuri |
ship-safe ci per far fallire le build rischiose e caricare SARIF nella scansione del codice GitHub.
La CLI open source è il modo più rapido per scansionare qualsiasi repository localmente. Fai l'upgrade quando hai bisogno di un workflow ospitato attorno allo stesso scanner:
| Esigenza | Uso |
|---|---|
| Scansioni locali, audit e correzioni assistite da agenti | CLI gratuita |
| Cronologia delle scansioni, dashboard cloud e report PDF | Pro |
| Workspace condiviso, PR Guardian, report di team e collaborazione | Team |
Confronta i piani su shipsafe.sh/pricing.
Ship Safe Cloud, la dashboard ospitata per cronologia delle scansioni, PR Guardian, fatturazione e workflow di team, è sviluppata in un repository privato perché contiene codice di prodotto commerciale e infrastrutture di workflow ospitate. Il repository pubblico ship-safe rimane focalizzato sulla CLI con licenza MIT, sugli agenti di sicurezza, sulle regole, sui fixture, sulle integrazioni CI e sulla documentazione. Vedi Ship Safe Cloud per il confine del repository.
Tutti gli agenti vengono eseguiti in parallelo. Ciascuno salta automaticamente i progetti irrilevanti.
| Agente | Categoria | Cosa rileva |
|---|---|---|
| InjectionTester | Vulnerabilità di codice | SQL/NoSQL injection, command injection, XSS, path traversal, XXE, ReDoS, prototype pollution |
| AuthBypassAgent | Autenticazione | Difetti JWT (alg:none, segreti deboli), CSRF, configurazione errata OAuth, BOLA/IDOR, bypass TLS |
| SSRFProber | SSRF | Input utente in fetch/axios, endpoint di metadati cloud, IP interni |
| SupplyChainAudit | Supply Chain | Typosquatting, versioni wildcard, script di installazione sospetti, dependency confusion |
| ConfigAuditor | Configurazione | Docker (utente root, :latest), Terraform, Kubernetes, CORS, CSP, Firebase, Nginx |
| SupabaseRLSAgent | Autenticazione | Chiave service_role nel codice client, tabelle senza RLS, inserimenti con chiave anonima |
| LLMRedTeam | AI/LLM | OWASP LLM Top 10: prompt injection, agenzia eccessiva, fuga del prompt di sistema |
| MCPSecurityAgent | AI/LLM | Uso improprio del server MCP, avvelenamento degli strumenti, typosquatting, input non validati |
| AgenticSecurityAgent | AI/LLM | OWASP Agentic AI Top 10: dirottamento di agenti, escalation dei privilegi, uso improprio delle chiamate di strumenti Kimi K3/OpenAI-compatibili |
| RAGSecurityAgent | AI/LLM | Injection di contesto, avvelenamento dei documenti, controllo degli accessi al database vettoriale |
| MemoryPoisoningAgent | AI/LLM | Injection di istruzioni nei file di memoria degli agenti, payload Unicode nascosti (ASI-01, ASI-05) |
| PIIComplianceAgent | Conformità | SSN, carte di credito, email, numeri di telefono nel codice sorgente |
| VibeCodingAgent | Vulnerabilità di codice | Anti-pattern del codice generato dall'AI: nessuna validazione, catch vuoti, auth TODO |
| ExceptionHandlerAgent | Vulnerabilità di codice | Catch vuoti, rejection non gestite, stack trace trapelati (OWASP A10:2025) |
| AgentConfigScanner | AI/LLM |
Post-processori: ScoringEngine · VerifierAgent (liveness dei segreti) · DeepAnalyzer (analisi taint LLM)
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan per trovare problemi · /agent per correggerli · /help per altro
shipsafe ›
| Comando | Cosa fa |
|---|---|
/scan | Riesegue la scansione del progetto |
/agent | Esegue il ciclo di correzione interattivo |
/findings | Elenca i risultati dell'ultima scansione |
/show <n> | Dettaglio completo del risultato n |
/plan <n> | Anteprima del piano di correzione per il risultato n (nessuna scrittura) |
/undo [--all] | Ripristina l'ultima correzione (o tutte le correzioni) |
/share | Pubblica il report di scansione come URL pubblico (7 giorni) |
/diff | Mostra il diff dell'albero di lavoro git |
/provider <name> | Cambia provider LLM a metà sessione |
/quit | Esci (anche Ctrl-D o Ctrl-C) |
Qualsiasi cosa che non inizi con / viene inviata all'LLM come domanda a forma libera, con i risultati dell'ultima scansione come contesto.
# .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
Una versione GitLab CI è in docs/examples/gitlab-security-workflow.yml.
Usa l'Action da un workflow pull_request quando vuoi che i risultati critici e
ad alta gravità siano allegati alle righe modificate. Tieni pull_request_target fuori da questo
percorso per i contributi fork: Ship Safe rifiuta quella combinazione privilegiata
perché il checkout può contenere codice non attendibile.
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
I commenti inline sono opt-in e pubblicano solo risultati critici/ad alta gravità. Rieseguire il job aggiorna il riepilogo senza creare commenti inline duplicati.
Funziona con qualsiasi provider — rilevato automaticamente dalle variabili di ambiente. Usa --provider <name> per sovrascrivere.
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · qualsiasi endpoint compatibile OpenAI
Kimi usa come default kimi-k3 tramite MOONSHOT_API_KEY o KIMI_API_KEY. Usa --provider kimi --model kimi-k3 per esecuzioni GPT-Red e di analisi approfondita a contesto lungo.
Per il red teaming a contesto lungo specifico di Kimi K3:
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
Ship Safe controlla anche le implementazioni di chiamate di strumenti Kimi K3 / OpenAI-compatibili per il caricamento dinamico di strumenti dal contesto del prompt, allowlist di strumenti mancanti, chiamate di strumenti forzate su input non attendibili e risultati di strumenti riprodotti senza il messaggio originale di chiamata di strumento dell'assistente.
Nessuna chiave API richiesta per la scansione core. La classificazione AI e red-team --gpt-red usano il tuo provider configurato quando disponibile, con fallback offline deterministico per i controlli GPT-Red.
password = get_password() # ship-safe-ignore
I risultati critical vengono sempre segnalati. Un commento inline non può nasconderli, e
un tentativo di sopprimerli viene registrato nella scansione. Il commento è pensato per un
umano che esclude un falso positivo, e qualsiasi cosa che possa scrivere una riga del tuo
codice sorgente — incluso un agente AI — può scrivere anche il commento, quindi le gravità
più alte non lo onorano. Ogni soppressione viene conteggiata, quindi una scansione che
ha silenziato risultati non sembra mai una che non ne aveva.
# .ship-safeignore
tests/fixtures/
docs/
Il recall è la metà facile di uno scanner. Uno strumento che segnala tutto cattura tutto ed è inutile, quindi misuriamo l'altra metà: cosa dice Ship Safe sul codice che è quasi certamente a posto.
In calo da 1031 risultati sugli stessi quattro progetti prima della v9.6.3, verificati contro NodeGoat e DVWA per garantire che il calo sia rumore ridotto piuttosto che rilevamento perso. L'unico risultato critico rimanente è un falso positivo e il benchmark dice quale e perché.
Corpus bloccato per commit, riproducibile con un comando, limiti documentati: benchmarks/false-positives/
Esegui Ship Safe insieme a loro, non al posto loro. CodeQL fa un'analisi taint interprocedurale che Ship Safe non tenta, Gitleaks è lo specialista per i segreti, e Trivy ha un vero database CVE dietro.
Ship Safe copre una domanda più ristretta: cosa ha appena fatto un agente di codifica AI al tuo repository, alla tua CI e alla tua configurazione locale degli strumenti. Configurazione client MCP, avvelenamento della memoria degli agenti, import di pacchetti allucinati e AIBOM sono le aree in cui non abbiamo trovato regole pubbliche equivalenti negli altri quattro.
Matrice di copertura completa, verificata contro i loro registry pubblici, inclusi i punti in cui ci battono: docs/comparison.md
[](https://shipsafe.sh)
La 10.0 è la copertura di Hermes Agent. Ship Safe scansiona già le distribuzioni Hermes, ma contro la v0.13.0 mentre Hermes è sulla v0.20.0 — l'adattatore ACP, il gateway TUI, i backend terminale serverless, i blueprint cron e i manifest dei plugin sono stati tutti rilasciati nel frattempo senza copertura.
Vedi la roadmap per cosa è pianificato e cosa è deliberatamente non pianificato, e la milestone 10.0 per il lavoro rivendicabile. Tutto in essa è aperto ai contributori.
Ship Safe è open source, e i migliori contributi sono miglioramenti piccoli e mirati che rendono lo sviluppo assistito dall'AI più sicuro.
Buone prime aree:
Inizia qui:
Ship Safe è con licenza MIT e gratuito per sempre.
Rilascia veloce. Rilascia sicuro. — shipsafe.sh
| Prompt injection in .cursorrules, CLAUDE.md, hook Claude Code dannosi |
| MobileScanner | Mobile | OWASP Mobile Top 10 2024: storage non sicuro, injection WebView, modalità debug |
| GitHistoryScanner | Segreti | Segreti trapelati nella cronologia dei commit git |
| CICDScanner | CI/CD | Avvelenamento della pipeline, azioni non bloccate, registrazione di segreti (OWASP CI/CD Top 10) |
| APIFuzzer | API | Route senza autenticazione, mass assignment, introspezione GraphQL, endpoint di debug |
| ManagedAgentScanner | AI/LLM | Configurazioni errate di Claude Managed Agent: policy always_allow, networking senza restrizioni (ASI-03–ASI-07) |
| HermesSecurityAgent | AI/LLM | Avvelenamento del registro degli strumenti, injection di chiamate di funzione, deriva dei permessi delle skill (ASI-01–ASI-10) |
| AgentAttestationAgent | Supply Chain | Versioni di agenti non bloccate, hash di integrità mancanti, manifest non firmati (ASI-10, SLSA L0) |
| AgenticSupplyChainAgent | Supply Chain | Azioni AI CI con privilegi eccessivi, espansione dell'ambito OAuth, ricevitori webhook AI non firmati (ASI-02, ASI-06) |
| RobloxSecurityAgent | Supply Chain | Asset Roblox/Luau Toolbox dannosi (injection di asset in runtime, loader rbxassetid://, HttpEnabled, payload nascosti negli attributi delle istanze) |
| ModelScanAgent | Supply Chain | Payload di esecuzione di codice nei pesi dei modelli ML (opcode pickle in .pt/.pkl/.ckpt), torch.load senza weights_only, archivi che eludono lo scanner (CWE-502, CWE-506) |
| TrustBoundaryAgent | Agentico | Attacchi symlink GhostApproval (link con nome di configurazione in ~/.ssh/~/.aws/.env), symlink del repository che escono dall'albero e istruzioni Friendly Fire run-on-review nei documenti letti dagli agenti (CWE-59, CWE-61) |
| SlopSquatAgent | Supply Chain | Import di pacchetti allucinati / fantasma (slopsquatting) — import nudi non dichiarati, installati o builtin, più nomi noti allucinati dall'AI (CWE-1357) |
| ClickFixAgent | Supply Chain | Esche ClickFix / falso-CAPTCHA copia-e-incolla (errore falso + sequenze di tasti Win+R/Ctrl+V/barra dei comandi, cradle PowerShell) e script di ciclo di vita npm di falsi installer (CWE-1357, CWE-506) |
| InstallGuardAgent | Supply Chain | Comportamenti worm npm negli script di ciclo di vita (raccolta di credenziali, esfiltrazione di env, rm -rf distruttivo, node -e offuscato) e azioni node-gyp armate binding.gyp (CWE-506, CWE-829) |