Martysunshine/cybermat-shield

GitHub: Martysunshine/cybermat-shield

面向现代 Web 应用的三层安全扫描工具,通过静态分析、运行时探测和认证访问控制测试,帮助团队在开发全流程中持续发现密钥泄露、注入漏洞、配置错误及 AI 安全风险。

Stars: 2 | Forks: 0

# 🛡️ CyberMat Shield 🛡️ [![npm](https://img.shields.io/npm/v/cybermat?color=crimson&label=npm)](https://www.npmjs.com/package/cybermat) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![OWASP Top 10:2025](https://img.shields.io/badge/OWASP-Top%2010%3A2025-orange)](docs/rules.md) [![Node ≥18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org) ![CyberMat Shield demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ba442b3b62064654.svg) ## ✨ 有何与众不同? - 🔍 **三层扫描器** — 静态代码、实时运行时以及经过身份验证的访问控制测试 - 🗺️ **映射 OWASP Top 10:2025** — 每个发现都链接到相应的类别、CWE 和修复建议 - 🔒 **隐私优先** — 无遥测,不上传云端,所有输出均脱敏处理 - 🚦 **适配 CI** — SARIF 输出、基线对比、内置 GitHub Actions 工作流 - 🤖 **感知 AI 安全** — 检测提示注入、LLM 输出 XSS、不安全的工具调用 - ⚡ **极速** — 不到 5 秒即可扫描 < 500 个文件 - 🖥️ **VS Code 扩展** — 在编辑器工作时提供内联诊断 ## 🚀 快速入门 ``` npx cybermat scan . ``` 无需安装。需要 Node ≥18。 ### 全局安装 ``` npm install -g cybermat cd your-project cybermat scan . ``` ### 从源码构建 ``` git clone https://github.com/Martysunshine/cybermat-shield.git cd cybermat-shield pnpm install && pnpm build node packages/cli/dist/index.js scan examples/vulnerable-next-app ``` ## 🔎 扫描内容 ### 🧱 第 1 层 — 静态代码分析 无需运行任何内容即可扫描您的源文件。 | 检测项 | 详情 | |---|---| | 🔑 Secret 与 API 密钥 | 66 种检测器 — AWS, Stripe, OpenAI, Supabase, Firebase, Twilio 以及 60 多种其他服务 | | 💉 注入点 | XSS (dangerouslySetInnerHTML, innerHTML), SQL 注入, eval, exec, SSRF | | 🚪 缺少认证防护 | 未受保护的路由、缺少中间件、易受 IDOR 攻击的模式 | | 📦 供应链风险 | 生命周期脚本、通配符版本、缺少 lockfile | | ⚙️ 错误配置 | CORS 通配符、生产环境包含 Source Map、禁用 RLS、弱 Firebase 规则 | | 🤖 AI 安全 | 提示注入、LLM 输出渲染为 HTML、未经批准的工具调用 | ### 🌐 第 2 层 — 运行时扫描器(基于 Playwright) 启动一个真实的浏览器,抓取您的应用并安全地进行探测。 | 检测项 | 详情 | |---|---| | 🛡️ 缺少安全响应头 | CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy | | 🍪 不安全的 Cookie | 缺少 HttpOnly/Secure/SameSite, Cookie 中包含 JWT 值, 过期时间过长 | | 🌍 CORS 错误配置 | 反射来源、通配符 + 凭证、生产环境中包含开发源 | | 🔀 开放重定向 | 测试 7 种常见的重定向参数 (next, returnUrl, callbackUrl 等) | | 📂 暴露的敏感文件 | `.env`, `.git/config`, `swagger.json`, `package.json` 以及另外 11 个文件 | | 🪞 反射输入 | 无害的标记注入 — 检测 HTML/属性/脚本/JSON 反射 | ### 🔐 第 3 层 — 认证/访问控制扫描器 发出真实的认证请求以发现失效的访问控制。 | 检测项 | 详情 | |---|---| | 🚷 匿名路由访问 | 在未进行任何身份验证的情况下即可访问受保护的路由 | | ⬆️ 垂直越权 | 普通用户访问仅限管理员的路由 | | 🔄 水平 IDOR | 用户 A 读取/访问用户 B 的资源 | | 🏢 租户边界问题 | 通过可预测的 ID 跨组织/租户访问资源 | ## 📋 所有 CLI 命令 ``` # ── 静态扫描 ────────────────────────────────────────── cybermat scan # Scan a project directory cybermat scan --sarif # Also output SARIF (GitHub Code Scanning) cybermat scan --markdown # Also output Markdown report cybermat scan --fail-on high # Exit 1 if any HIGH or above findings cybermat scan --ci # CI mode — exit 5 if new vs baseline # ── 运行时扫描 ───────────────────────────────────────── cybermat scan-runtime # Crawl + probe a live app cybermat scan-runtime --max-pages 10 # ── 身份验证/访问控制扫描 ───────────────────────────── cybermat scan-auth # Run access-control tests cybermat auth init # Create auth config template cybermat auth test-config # Validate auth profiles # ── 规则 ──────────────────────────────────────────── cybermat rules list # List all 120+ rules cybermat rules list --owasp A01 # Filter by OWASP category cybermat rules list --engine secrets # Filter by engine cybermat rules show # Full rule detail + examples cybermat rules docs # Generate docs/rules.md # ── 项目设置 ──────────────────────────────────────────── cybermat init # Create .cybermatignore + cybermat.config.json cybermat doctor # Check Node, pnpm, Playwright, config cybermat config validate # Validate cybermat.config.json # ── 基线差异对比 ───────────────────────────────────────── cybermat baseline create # Snapshot current findings cybermat baseline compare # Show new / fixed / existing vs snapshot # ── 报告 ────────────────────────────────────────── cybermat report --sarif # Generate SARIF from saved report.json cybermat report --markdown # Generate Markdown from saved report.json cybermat report --all # Generate all formats ``` ## 🛠️ 设置认证扫描 认证扫描器需要测试账户的真实会话 Cookie。以下是如何针对内置的漏洞应用进行设置的方法: ### 第 1 步 — 启动测试应用 ``` cd examples/vulnerable-next-app npx next dev # → http://localhost:3000 ``` ### 第 2 步 — 保存认证会话 ``` # 从仓库根目录(终端 2) npx tsx --tsconfig scripts/tsconfig.json scripts/setup-auth-profiles.ts ``` 这将通过 Playwright 以每个测试用户的身份登录,并将会话保存到 `.cybermat/auth/`。 ### 第 3 步 — 运行扫描器 ``` # 务必同时运行这两个命令 —— 会话会在热重载时重置! npx tsx --tsconfig scripts/tsconfig.json scripts/setup-auth-profiles.ts && \ node packages/cli/dist/index.js scan-auth http://localhost:3000 ``` **测试账户(所有密码均为虚假密码):** | 配置文件 | 电子邮件 | 密码 | 角色 | |---|---|---|---| | 👤 userA | usera@test.com | password123 | user | | 👤 userB | userb@test.com | password123 | user | | 👑 admin | admin@test.com | admin123 | admin | ## ⚙️ 配置 运行 `cybermat init` 来创建 `cybermat.config.json`: ``` { "version": 1, "failOn": "high", "rules": { "disabled": ["secrets/generic-api-key"], "severityOverrides": { "supply-chain/wildcard-dependency": "high" } }, "scan": { "maxFileSizeKb": 512, "skipDirs": ["node_modules", ".next", "dist"] }, "runtime": { "maxPages": 20, "maxDepth": 3, "requestDelayMs": 150 } } ``` 完整参考 → [docs/configuration.md](docs/configuration.md) ## 🚦 CI / GitHub Actions 推送包含的工作流,即可在 GitHub Security 标签页中自动获取 SARIF 结果: ``` .github/workflows/cybermat-scan.yml ← already included ``` 在每次推送和 PR 时,它将: - ✅ 运行 `cybermat scan` - 📤 将 SARIF 上传至 GitHub Code Scanning - 💬 在 PR 上发布发现结果摘要评论 - 🔕 默认情况下报告发现结果而不阻断 CI(设置 `--fail-on high` 以启用严格失败) **退出码:** | 退出码 | 含义 | |---|---| | `0` | 干净 — 未达到或超过阈值的发现 | | `1` | 发现了问题 | | `2` | 扫描错误 | | `3` | 配置错误 | | `4` | 缺少依赖 | | `5` | 相对于基线的新发现(CI 模式) | 完整指南 → [docs/ci.md](docs/ci.md) ## 🗺️ OWASP Top 10:2025 覆盖范围 | # | 类别 | 覆盖方式 | |---|---|---| | A01 | 失效的访问控制 | 静态分析 (缺少防护) + 认证扫描 (IDOR, 越权) | | A02 | 安全配置错误 | 静态分析 (CORS, 响应头) + 运行时 (响应头, cookies) | | A03 | 软件供应链 | 静态分析 (生命周期脚本, 通配符依赖, 缺少 lockfile) | | A04 | 加密失败 | 静态分析 (66 种 Secret 检测器, localStorage token) | | A05 | 注入 | 静态分析 (XSS, SQL, 命令, eval, SSRF) | | A06 | 不安全的设计 | 静态分析 (AI 工具调用, 系统提示注入) | | A07 | 身份验证失败 | 静态分析 + 运行时 + 认证扫描 (匿名路由访问) | | A08 | 数据完整性失败 | 静态分析 (Webhook Secret, AI 工具滥用) | ## 🔑 Secret 脱敏 Secret **永远不会以原始格式**存储在任何报告中。格式为: ``` sk-ant-api03-...wxyz ← you see enough to identify it, not enough to use it ``` 长度 ≥ 8 个字符的值 → 前 4 位 + `...` + 后 4 位 长度 < 8 个字符的值 → 完全掩盖为 `[REDACTED]` ## 🙈 忽略误报 在您的项目根目录中创建 `.cybermatignore` 文件: ``` # 忽略目录 test/fixtures/ # 全局忽略特定规则 rule:secrets/generic-api-key # 忽略单个特定发现(从 report.json 复制指纹) fp:a1b2c3d4e5f6 # 通配符 docs/* ``` ## 📦 Monorepo 结构 ``` packages/ shared/ Core types (Finding, ScanReport, RuntimeFinding, AuthzFinding…) analyzers/ File inventory, stack detection, AST analysis, route discovery engines/ Scanner engines — secrets, static-code, runtime, authz rules/ 95 rules across 9 packs with OWASP/CWE metadata core/ Orchestrator — runScan(), runRuntimeScan(), runAuthScan() cli/ Commander.js CLI entry point vscode/ VS Code extension — inline diagnostics, status bar, auto-scan on save examples/ vulnerable-next-app/ Intentionally vulnerable Next.js app (all secrets are FAKE) scripts/ setup-auth-profiles.ts Playwright login script — saves session cookies docs/ product-architecture.md internal-architecture.md roadmap.md rules.md (auto-generated — run cybermat rules docs) auth-access-control-scanning.md configuration.md ci.md safety-model.md ``` ## 🛡️ 安全模型 CyberMat Shield 是**只读且非破坏性**的: - 🚫 从不发送 POST/PUT/PATCH/DELETE 请求 - 🚫 从不请求配置源之外的 URL - 🚫 从不暴力破解 ID 或 Token - 🚫 从不存储或记录会话凭证 - 🚫 从不向外部服务器发送任何内容 - ✅ 仅写入 `.cybermat/` 输出目录 完整细节 → [docs/safety-model.md](docs/safety-model.md) ## 🏗️ 语言与文件覆盖范围 CyberMat Shield 可扫描 60 多种文件扩展名和 50 多种特殊文件名。 | 语言 / 文件类型 | 覆盖范围 | |---|---| | TypeScript / JavaScript | 完整 AST 分析、Source/Sink 关联、Secret、模式分析 | | Python | 模式扫描 + Secret (eval, exec, pickle, subprocess shell=True, yaml.load) | | Go | Secret | | Java / Kotlin | Secret | | PHP | 模式扫描 + Secret (eval, shell_exec, unserialize) | | Ruby | Secret | | Rust / C / C++ | Secret | | Shell 脚本 (.sh, .bash, .ps1) | 模式扫描 (curl\|sh, eval, chmod 777, TLS 旁路) | | Dockerfile / Containerfile | 模式扫描 (curl\|sh, ADD URL, ENV Secret, USER root) | | Docker Compose (YAML) | 模式扫描 (privileged, docker.sock, host network) | | Terraform / HCL | 模式扫描 (公开的 S3, 对全世界开放的 SSH/RDP) | | Kubernetes YAML | 模式扫描 (privileged, hostNetwork, hostPID, runAsRoot) | | GitHub Actions / GitLab CI / CircleCI | 模式扫描 (curl\|bash, pull_request_target 不安全检出) | | Jenkinsfile / Makefile / Procfile | Secret | | 环境变量文件 (.env, .env.local, 等) | Secret | | JSON / YAML / TOML / XML / INI | Secret + 配置错误分析 | | GraphQL / Prisma / SQL | Secret | | 证书与密钥 (.pem, .key, .crt) | Secret | | go.mod / Cargo.toml / requirements.txt / pom.xml | 依赖 + Secret | | Firebase / Firestore / Supabase 规则 | 配置错误分析 | ## 🏗️ 支持的技术栈 | 类别 | 支持项 | |---|---| | 编程语言 | TypeScript, JavaScript, Python, Go, Java, PHP, Ruby, Rust, C/C++, Kotlin, Swift | | 基础设施 | Docker, Terraform, Kubernetes, HCL, Shell/Bash, PowerShell | | 框架 | Next.js, React, Express, Node.js, Fastify, NestJS, Vue, Svelte, Astro | | 认证 | Clerk, NextAuth/Auth.js, Supabase Auth, Firebase Auth | | 数据库 | PostgreSQL, MySQL, MongoDB, Redis, Supabase, Firebase | | 支付 | Stripe, PayPal, Lemon Squeezy | | AI 提供商 | OpenAI, Anthropic, Google Gemini, Mistral, Groq, ElevenLabs, HuggingFace, Replicate, Together AI | | 平台 | Vercel, Netlify, Cloudflare | | 通信 | Resend, SendGrid, Mailgun, Twilio, Slack, Discord, Telegram | ## 📜 构建历史 | 阶段 | 构建内容 | |---|---| | ✅ 1 — MVP 基础 | 静态扫描器、Commander.js CLI、JSON + HTML 报告 | | ✅ 2 — 架构强化 | 66 种 Secret 检测器、Engines 层、`.cybermatignore` | | ✅ 3 — 三层架构 | 代码/运行时/授权 分离、ScanPlanner、文档 | | ✅ 4 — 深度静态分析 | AST 分析、Source/Sink 关联、路由发现 | | ✅ 5 — 规则包系统 | RuleRegistry、9 个 RulePack、95 条规则、OWASP 映射 | | ✅ 6 — 安全运行时扫描器 | Playwright 爬虫、8 个分析器、48 个单元测试 | | ✅ 7 — 认证/访问控制 | IDOR、垂直越权、匿名路由测试、38 个单元测试 | | ✅ 8 — 生产化 | SARIF、基线对比、GitHub Actions、npm 打包 | | ✅ v0.2.0 — 多语言 | 60 多种扩展名、语言分类器、28 个多语言检测器、熵值评分、指纹 | | ✅ Step 3 — VS Code 扩展 | 内联诊断、状态栏、保存时自动扫描、F5 启动配置 | ## 📄 许可证 MIT © [CyberMat Shield 贡献者](LICENSE)
标签:AI安全, API密钥泄露, Chat Copilot, CI/CD安全, CISA项目, CyberMat Shield, DAST, GitHub Actions, IDOR检测, IP 地址批量处理, Llama, LLM输出XSS, MITM代理, Node.js安全, NPM安全, OWASP Top 10, SARIF, SAST, SSRF, Web安全, XSS检测, 依赖风险, 动态应用安全测试, 图数据库, 大语言模型安全, 安全专业人员, 安全扫描, 开源安全工具, 恶意软件分析, 时序注入, 机密管理, 特征检测, 盲注攻击, 网络安全, 自动化攻击, 自动笔记, 蓝队分析, 认证缺陷, 越权访问, 软件开发工具包, 逆向工程平台, 错误基检测, 隐私保护, 零遥测, 静态代码分析