面向智能体时代打造的 CLI 安全扫描器。可检测 CI/CD 错误配置、智能体权限风险、MCP 工具注入、硬编码密钥以及被 DMCA 标记的 AI 依赖项。
在代码发布前发现风险代码、AI 代理漏洞和供应链问题。
官网 · 文档 · 安全与数据流 · 基准测试 · 定价 · 博客 · 参与贡献
Ship Safe 是一款面向现代软件团队的 AI 安全扫描器。它在你的仓库中本地运行,可发现应用程序代码、AI 代理、MCP 配置、提示词、依赖项、CI/CD、密钥以及云相关配置中的问题,然后帮助你审查并应用安全修复。
一条命令即可开始扫描:
npx ship-safe
无需注册。扫描无需 API 密钥。核心检查支持离线运行。AI 驱动的红队模式在可用时会使用你配置的提供商。
使用 --no-ai 可确保完全本地扫描。提供商支持的分类、深度分析和 GPT-Red 会在尽力进行凭据脱敏后,将受限上下文直接发送到你选择的提供商。有关确切边界和上下文限制,请参阅安全与数据流。
# 交互式 REPL:在一次会话中扫描、修复和提问
npx ship-safe
# 完整审计:密钥 + 29 个代理 + 依赖项 + 修复方案
npx ship-safe audit .
# 针对代理可读内容的 AI 代理红队场景
npx ship-safe red-team . --gpt-red
# 交互式修复代理:计划、差异、批准、验证
npx ship-safe agent .
npx ship-safe agent . --severity critical # 仅严重发现
npx ship-safe agent . --branch --pr # 在分支上修复 + 创建 PR
# 撤销上一次修复
npx ship-safe undo
# CI/CD 模式 — 任何严重发现即失败
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # 更严格:严重或高危
ship-safe ci 使风险构建失败,并将 SARIF 上传到 GitHub 代码扫描。
开源 CLI 是在本地扫描任何仓库的最快方式。当你需要围绕同一扫描器的托管工作流时,可升级:
| 需求 | 使用 |
|---|---|
| 本地扫描、审计和代理辅助修复 | 免费 CLI |
| 扫描历史、云仪表板和 PDF 报告 | Pro |
| 共享工作区、PR Guardian、团队报告和协作 | Team |
在 shipsafe.sh/pricing 比较各方案。
Ship Safe Cloud 是用于扫描历史、PR Guardian、计费和团队工作流的托管仪表板,由于包含商业产品代码和托管基础设施工作流,因此在私有仓库中开发。公共 ship-safe 仓库仍专注于 MIT 许可的 CLI、安全代理、规则、测试夹具、CI 集成和文档。有关仓库边界,请参阅 Ship Safe Cloud。
所有代理并行运行。每个代理都会自动跳过不相关的项目。
后处理器: ScoringEngine · VerifierAgent(密钥活性)· DeepAnalyzer(LLM 污点分析)
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan 查找问题 · /agent 修复问题 · /help 获取更多帮助
shipsafe ›
任何不以 / 开头的内容都会作为自由形式的问题发送给 LLM,并以你最近的扫描结果作为上下文。
# .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
GitLab CI 版本位于 docs/examples/gitlab-security-workflow.yml。
当你希望严重和高危发现附加到变更行时,可在 pull_request 工作流中使用该 Action。对于分叉贡献,请将 pull_request_target 排除在此路径之外:Ship Safe 拒绝这种特权组合,因为检出可能包含不受信任的代码。
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
内联评论为可选加入,仅发布严重/高危发现。重新运行作业会更新摘要,而不会创建重复的内联评论。
适用于任何提供商 — 从环境变量自动检测。使用 --provider <name> 覆盖。
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · 任何 OpenAI 兼容端点
Kimi 默认通过 MOONSHOT_API_KEY 或 KIMI_API_KEY 使用 kimi-k3。使用 --provider kimi --model kimi-k3 进行长上下文 GPT-Red 和深度分析运行。
针对 Kimi K3 特定的长上下文红队:
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
Ship Safe 还会检查 Kimi K3 / OpenAI 兼容工具调用实现,包括从提示上下文动态加载工具、缺少工具允许列表、对不受信任输入强制工具调用,以及在缺少原始助手工具调用消息的情况下重放工具结果。
核心扫描无需 API 密钥。AI 分类和 red-team --gpt-red 在可用时使用你配置的提供商,GPT-Red 检查具有确定性的离线回退。
password = get_password() # ship-safe-ignore
critical 发现始终会被报告。内联注释无法隐藏它们,尝试抑制会被记录在扫描中。该注释旨在供人工排除误报,而任何能写入你源代码一行内容的东西(包括 AI 代理)也能写入该注释,因此最高严重级别不遵循它。每次抑制都会被计数,因此静默了发现的扫描永远不会看起来像没有发现的扫描。
# .ship-safeignore
tests/fixtures/
docs/
召回率只是扫描器容易做到的一半。一个什么都标记的工具能捕获一切但毫无用处,因此我们衡量另一半:Ship Safe 对几乎可以确定没有问题的代码会说什么。
与 v9.6.3 之前同一四个项目的 1031 个发现相比有所下降,并针对 NodeGoat 和 DVWA 进行了验证,以确保下降是减少噪音而非丢失检测。剩余的 1 个严重发现是误报,基准测试会说明是哪一个以及原因。
语料库按提交固定,一条命令即可复现,限制已记录: benchmarks/false-positives/
将 Ship Safe 与它们并行运行,而非替代它们。CodeQL 执行 Ship Safe 不尝试的跨过程污点分析,Gitleaks 是密钥检测的专家,Trivy 背后有真实的 CVE 数据库。
Ship Safe 覆盖一个更窄的问题:AI 编码代理刚刚对你的仓库、CI 和本地工具配置做了什么。MCP 客户端配置、代理记忆投毒、幻觉包导入和 AIBOM 是我们在其他四种工具中未找到等效公共规则的领域。
完整覆盖矩阵,已针对其公共注册表验证,包括它们超越我们的地方:docs/comparison.md
[](https://shipsafe.sh)
10.0 是 Hermes Agent 覆盖。 Ship Safe 已能扫描 Hermes 部署,但针对的是 v0.13.0,而 Hermes 已到 v0.20.0 — ACP 适配器、TUI 网关、无服务器终端后端、cron 蓝图和插件清单都在此期间发布,且没有覆盖。
请参阅路线图了解计划内容和有意不做的内容,以及 10.0 里程碑了解可认领的工作。其中的所有内容都对贡献者开放。
Ship Safe 是开源的,最好的贡献是让 AI 辅助开发更安全的小而专注的改进。
适合入门的方向:
从这里开始:
Ship Safe 采用 MIT 许可,永久免费。
快速发布。安全发布。 — shipsafe.sh
| 领域 | 示例 |
|---|
| AI 和 LLM 安全 | 提示注入、代理劫持、过度授权、记忆投毒、RAG 投毒、不安全的工具调用 |
| MCP 和代理配置 | 过宽的工具权限、被投毒的注册表、不受信任的传输、危险的允许列表 |
| 应用程序安全 | SQL/NoSQL 注入、XSS、SSRF、认证绕过、路径遍历、不安全的 API 路由 |
| 密钥与合规 | API 密钥、令牌、凭据、PII、Git 历史中泄露的密钥 |
| 供应链 | 仿冒域名抢注、依赖混淆、危险的安装脚本、未固定的 AI 操作 |
| CI/CD | 流水线投毒、未固定的 GitHub Actions、密钥日志记录、不安全的工作流触发器 |
| 代理 | 类别 | 检测内容 |
|---|
| InjectionTester | 代码漏洞 | SQL/NoSQL 注入、命令注入、XSS、路径遍历、XXE、ReDoS、原型污染 |
| AuthBypassAgent | 认证 | JWT 缺陷(alg:none、弱密钥)、CSRF、OAuth 配置错误、BOLA/IDOR、TLS 绕过 |
| SSRFProber | SSRF | fetch/axios 中的用户输入、云元数据端点、内部 IP |
| SupplyChainAudit | 供应链 | 仿冒域名抢注、通配符版本、可疑安装脚本、依赖混淆 |
| ConfigAuditor | 配置 | Docker(root 用户、:latest)、Terraform、Kubernetes、CORS、CSP、Firebase、Nginx |
| SupabaseRLSAgent | 认证 | 客户端代码中的 service_role 密钥、未启用 RLS 的表、匿名密钥插入 |
| LLMRedTeam | AI/LLM | OWASP LLM Top 10:提示注入、过度授权、系统提示泄露 |
| MCPSecurityAgent | AI/LLM | MCP 服务器滥用、工具投毒、仿冒域名抢注、未验证的输入 |
| AgenticSecurityAgent | AI/LLM | OWASP Agentic AI Top 10:代理劫持、权限提升、Kimi K3/OpenAI 兼容工具调用滥用 |
| RAGSecurityAgent | AI/LLM | 上下文注入、文档投毒、向量数据库访问控制 |
| MemoryPoisoningAgent | AI/LLM | 代理记忆文件中的指令注入、隐藏的 Unicode 载荷(ASI-01、ASI-05) |
| PIIComplianceAgent | 合规 | 源代码中的社会安全号码、信用卡、电子邮件、电话号码 |
| VibeCodingAgent | 代码漏洞 | AI 生成代码的反模式:无验证、空 catch、TODO 认证 |
| ExceptionHandlerAgent | 代码漏洞 | 空 catch、未处理的拒绝、泄露的堆栈跟踪(OWASP A10:2025) |
| AgentConfigScanner | AI/LLM | .cursorrules、CLAUDE.md 中的提示注入、恶意 Claude Code 钩子 |
| MobileScanner | 移动端 | OWASP Mobile Top 10 2024:不安全存储、WebView 注入、调试模式 |
| GitHistoryScanner | 密钥 | Git 提交历史中泄露的密钥 |
| CICDScanner | CI/CD | 流水线投毒、未固定的操作、密钥日志记录(OWASP CI/CD Top 10) |
| APIFuzzer | API | 无认证的路由、批量赋值、GraphQL introspection、调试端点 |
| ManagedAgentScanner | AI/LLM | Claude 托管代理配置错误:always_allow 策略、无限制网络(ASI-03–ASI-07) |
| HermesSecurityAgent | AI/LLM | 工具注册表投毒、函数调用注入、技能权限漂移(ASI-01–ASI-10) |
| AgentAttestationAgent | 供应链 | 未固定的代理版本、缺少完整性哈希、未签名的清单(ASI-10、SLSA L0) |
| AgenticSupplyChainAgent | 供应链 | 过度授权的 AI CI 操作、OAuth 范围蔓延、未签名的 AI Webhook 接收器(ASI-02、ASI-06) |
| RobloxSecurityAgent | 供应链 | 恶意 Roblox/Luau Toolbox 资源(运行时资源注入、rbxassetid:// 加载器、HttpEnabled、隐藏在实例属性中的载荷) |
| ModelScanAgent | 供应链 | ML 模型权重中的代码执行载荷(.pt/.pkl/.ckpt 中的 pickle 操作码)、无 weights_only 的 torch.load、规避扫描的归档(CWE-502、CWE-506) |
| TrustBoundaryAgent | 代理安全 | GhostApproval 符号链接攻击(指向 ~/.ssh/~/.aws/.env 的配置命名链接)、逃逸目录树的仓库符号链接,以及代理可读文档中的 Friendly Fire 运行即审查指令(CWE-59、CWE-61) |
| SlopSquatAgent | 供应链 | 幻觉/幽灵包导入(slopsquatting)— 未声明、未安装或非内置的裸导入,以及已知的 AI 幻觉名称(CWE-1357) |
| ClickFixAgent | 供应链 | ClickFix/假 CAPTCHA 粘贴即运行诱饵(假错误 + Win+R/Ctrl+V/命令栏按键、PowerShell 加载器)和假安装程序的 npm 生命周期脚本(CWE-1357、CWE-506) |
| InstallGuardAgent | 供应链 | 生命周期脚本中的 npm 蠕虫行为(凭据窃取、环境变量外泄、破坏性 rm -rf、混淆的 node -e)和武器化的 binding.gyp node-gyp 操作(CWE-506、CWE-829) |
| 命令 | 功能 |
|---|
/scan | 重新扫描项目 |
/agent | 运行交互式修复循环 |
/findings | 列出上次扫描的发现 |
/show <n> | 查看发现 n 的完整详情 |
/plan <n> | 预览发现 n 的修复计划(不写入) |
/undo [--all] | 撤销上次修复(或所有修复) |
/share | 将扫描报告发布为公共 URL(7 天) |
/diff | 显示 git 工作树差异 |
/provider <name> | 会话中切换 LLM 提供商 |
/quit | 退出(也可用 Ctrl-D 或 Ctrl-C) |
| 项目 | 发现 | 严重 | 等级 |
|---|
| express | 26 | 0 | C |
| requests | 15 | 1 | C |
| flask | 28 | 0 | D |
| chalk | 4 | 0 | B |