MnT-Global/vibecheck

GitHub: MnT-Future/vibecheck

一款确定性的本地安全扫描器,专为 AI 生成的电商代码库提供字母评分、问题定位与修复建议,覆盖密钥泄露、注入、电商逻辑等检查。

Stars: 1 | Forks: 0

# vibecheck **你的 AI 构建的商店安全且具备生产环境可用性了吗?扫描代码,获取评分报告。** 你(或 AI)快速交付了一个商店。`vibecheck` 会像安全审查人员一样阅读代码—— 确定性地在几秒钟内完成——并对其进行评分:一个字母等级,一个按优先级排序的 问题列表,每个问题都精确锚定到具体的 `file:line` 及其修复方案。免费,MIT 协议,并且 **你的代码永远不会离开你的计算机。** ``` npx @mntglobal/vibecheck ./my-store ``` ``` F 40/100 · 2 files · 30ms 2 critical · 3 high · 2 low CRITICAL Hardcoded Stripe secret key [SEC-01] server.js:15 const PAYMENT_API_KEY = "sk_live_…"; → Move this secret to an environment variable and rotate the exposed key immediately. HIGH Order quantity/amount used in pricing without validation [COM-02] server.js:80 const total = prod ? prod.price * qty : 0; → Validate as an integer in a sane range before use. ``` ## 为什么需要 AI 代码生成交付速度快且演示效果极佳——但随后会泄露机密、暴露管理路由,并信任 客户端提供的价格。Veracode 的 2025 年报告发现,**45% 的 AI 生成代码引入了 OWASP Top-10 漏洞。** `vibecheck` 提供了独立且针对电商优化的第二意见,而这正是 *编写*代码的 AI 无法可靠给出的。 ## 检查内容 8 个类别,100 分。商业逻辑检查(价格/数量篡改、客户端信任的 总价)是任何通用扫描器都无法覆盖的核心切入点。v0.1 包含以下 **13 项高置信度检查**: | 类别 | 检查项 | |---|---| | Secrets | `SEC-01` 服务商密钥 · `SEC-02` 公共环境变量中的机密 · `SEC-03` 已提交的 `.env` · `SEC-04` 私钥 / DB URIs | | Injection | `INJ-01` `eval`/`new Function` · `INJ-03` 命令注入 | | Commerce | `COM-02` 未经验证的订单数量 ⭐ | | Auth | `AUTH-03` 硬编码/默认凭证 · `AUTH-04` 宽松的 CORS | | Web | `WEB-01` XSS sink (`dangerouslySetInnerHTML`/`innerHTML`) | | Performance | `PERF-01` 请求路径上的同步 I/O | | Production | `PROD-03` 内部错误泄露给客户端 | | Dependencies | `DEP-03` 无测试套件 (info) | 更深层的流分析检查(客户端信任的价格、IDOR、SSRF、基于污点的注入/XSS、依赖项 CVE……)通过 `--experimental` 提供,只有在通过精确度 测试门槛后,它们才会转为默认启用——因为错误的“严重”报告比不报告更糟糕。 ## 工作原理 - **确定性。** 无需 AI,无需 API key,无需网络。相同的代码 = 相同的评分 → 可用作 CI 门槛。(AI 是一个可选的、需要主动开启的功能,用于后续更深入的检查——绝不是依赖项。) - **诚实。** 每个发现都会引用真实代码。如果我们无法映射你的框架路由,报告会 明确说明——我们绝不会让“未发现问题”被误解为“一切正常”。 - **隐私。** CLI 完全在你的计算机上本地运行。 ## 用法 ``` npx @mntglobal/vibecheck # scan a directory npx @mntglobal/vibecheck --json # machine-readable JSON npx @mntglobal/vibecheck --sarif out.sarif # SARIF 2.1.0 (GitHub Code Scanning) npx @mntglobal/vibecheck --html report.html # shareable HTML report card npx @mntglobal/vibecheck --md # Markdown (for PR comments) npx @mntglobal/vibecheck --ci --min-grade B # exit 1 below the threshold npx @mntglobal/vibecheck --experimental # also run flow-tier checks ``` ## GitHub Action 将 vibecheck 添加到任何 PR 中——它会发布总结评论,将检查结果上传到 **Security → Code scanning** 标签页,并在低于指定评分时使检查失败: ``` # .github/workflows/vibecheck.yml name: vibecheck on: pull_request permissions: contents: read security-events: write # upload SARIF to code scanning pull-requests: write # post the summary comment jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: MnT-Global/vibecheck@v0.1.0 with: min-grade: B # experimental: true # also run the flow-tier checks ``` 输入参数:`path`, `min-grade`, `experimental`, `offline`, `comment`, `upload-sarif`, `version`, `working-directory`。输出参数:`grade`, `score`。 想在你自己的 pipeline 中直接使用原始 CLI?自行运行并上传 SARIF 即可: ``` - run: npx @mntglobal/vibecheck . --sarif out.sarif - uses: github/codeql-action/upload-sarif@v3 if: always() with: { sarif_file: out.sarif } ``` 无论哪种方式,你的代码都不会离开 runner——扫描是本地且确定性的(唯一的 网络调用是可选的 OSV 依赖项查询,该调用仅发送包名/版本号)。 ## 局限性(实话实说) v0.1 是针对 JS/TS 的启发式模式 + AST 分析,而不是完整的过程间污点追踪。 它会利用你可以验证的证据标记*可能存在的*问题——它不是安全审计或 认证。对于深入的人工审查,这正是 [MnT](https://mntfuture.com) 所做的事情。 ## 开发 ``` pnpm install pnpm test # vitest pnpm lint # biome pnpm build # tsup pnpm dev -- ./fixtures/lab-before # run the CLI locally ``` 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 MIT © MnT (Magizh NexGen Technologies) *由 [MnT](https://mntfuture.com) 构建——我们致力于让 AI 构建的电商安全并具备生产环境可用性。 [预约免费的架构研讨会 →](https://mntfuture.com)*
标签:AI代码审查, LNA, MITM代理, 代码安全审计, 安全合规, 电商业务逻辑, 网络代理, 自动化攻击, 静态代码扫描