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代理, 代码安全审计, 安全合规, 电商业务逻辑, 网络代理, 自动化攻击, 静态代码扫描