vexlit/vexlit

GitHub: vexlit/vexlit

基于 tree-sitter AST 和 AI 驱动的代码安全扫描器,支持 JavaScript/TypeScript/Python,可检测 263 种漏洞模式并输出 SARIF 格式报告。

Stars: 0 | Forks: 0

# VEXLIT AI 驱动的代码安全漏洞扫描器,具备基于 AST 的分析、tree-sitter 解析功能和 263 条安全规则。 VEXLIT 使用结合 tree-sitter WASM 解析的混合 Regex + AST 方法,检测 JavaScript、TypeScript 和 Python 中的安全漏洞,从而最大程度减少误报。 ## 功能特性 - **263 条安全规则** — 23 条 AST 验证规则、40 条 JS 扩展规则、200 种机密模式 - **Tree-sitter AST 解析**,支持 JavaScript、TypeScript 和 Python(基于 WASM) - **置信度评分** — 针对每个漏洞标记高/中/低置信度,用于过滤误报 (FP) - **SARIF 2.1.0 输出**,支持 GitHub Code Scanning 集成 - **Web 仪表盘** — GitHub OAuth、扫描历史、趋势图表、AI 解释 - **AI 验证**,通过 Claude API — 解释漏洞、建议修复方案、生成报告 - **在线演示** 位于落地页 — 粘贴代码即可立即扫描 - **可配置**,支持通过 `vexlit.config.js` 或 `.vexlitrc.json` 配置 ## Web 仪表盘 **[https://vexlit.vercel.app](https://vexlit.vercel.app)** - 连接你的 GitHub 仓库,一键扫描 - **公开仓库扫描** — 粘贴任意 GitHub URL,无需登录 - 严重程度环形图、漏洞趋势图 - 按严重程度、文件、规则或“仅可利用”(严重 + 高置信度)筛选 - 针对每个漏洞的 AI 解释 / AI 修复按钮 - SARIF 下载、AI 安全报告生成 - 带有应用内铃铛图标的**通知系统** - 深色 / 浅色模式切换 ## 安装 ``` npm install -g @vexlit/cli ``` 或者使用 npx 直接运行而无需安装: ``` npx @vexlit/cli scan . ``` ## 快速开始 ``` # 扫描当前目录 vexlit scan . # 扫描指定文件或目录 vexlit scan src/ lib/utils.ts # 输出为 JSON vexlit scan . --json # 输出为 SARIF(用于 GitHub Security) vexlit scan . --sarif > results.sarif # 启用 LLM 验证 vexlit scan . --llm --api-key sk-ant-... ``` ## 规则 ### AST 验证规则 (23) | ID | 规则 | 严重程度 | CWE | |---|---|---|---| | VEXLIT-001 | 硬编码机密信息 | critical | CWE-798 | | VEXLIT-002 | SQL 注入 | critical | CWE-89 | | VEXLIT-003 | XSS | critical | CWE-79 | | VEXLIT-004 | 不安全的加密 | warning | CWE-327 | | VEXLIT-006 | 开放重定向 | warning | CWE-601 | | VEXLIT-007 | JWT 硬编码机密 | critical | CWE-798 | | VEXLIT-008 | JWT None 算法 | critical | CWE-327 | | VEXLIT-009 | 函数构造器 | warning | CWE-95 | | VEXLIT-010 | 原型污染 | critical | CWE-1321 | | VEXLIT-011 | NoSQL 注入 | critical | CWE-943 | | VEXLIT-012 | SSRF | warning | CWE-918 | | VEXLIT-013 | 不安全的 Cookie | warning | CWE-614 | | VEXLIT-014 | CORS 配置错误 | warning | CWE-942 | | VEXLIT-015 | ReDoS | warning | CWE-1333 | | VEXLIT-016 | 信息泄露 | warning | CWE-209 | | VEXLIT-017 | 不安全的 TLS (Insecure TLS) | critical | CWE-295 | | VEXLIT-018 | 时序攻击 | warning | CWE-208 | | VEXLIT-019 | 调试器语句 | info | CWE-489 | | VEXLIT-020 | 不安全的反序列化 | critical | CWE-502 | | VEXLIT-021 | 路径遍历 | critical | CWE-22 | | VEXLIT-022 | 命令注入 | critical | CWE-78 | | VEXLIT-023 | Eval 注入 | critical | CWE-95 | ### JS 扩展规则 (40) VEXLIT-030 至 VEXLIT-069,涵盖其他模式:dangerouslySetInnerHTML、不安全的随机性、缺少 helmet、body parser 限制、不安全的正则表达式等。 ### 机密模式 (200) 涵盖 28 个类别的 200 种声明式模式,用于检测以下平台的 API 密钥和令牌: AWS, GCP, Azure, GitHub, GitLab, Slack, Stripe, Twilio, SendGrid, Firebase, Supabase, MongoDB, Redis, Docker, Terraform, Jenkins, CircleCI, Datadog, Sentry, Algolia, PagerDuty, Linear, Jira, Zendesk, New Relic, Mixpanel, Cloudinary, npm, PyPI 等。 ## 架构 ``` packages/ core/ # Scanner engine — rules, AST parser, tree-sitter, secret patterns cli/ # Command-line interface web/ # Next.js 16 web dashboard (Supabase, Vercel) ``` - **混合检测**: Regex 预过滤 → AST 验证(tree-sitter WASM 或 @typescript-eslint) - **集中式来源注册表**: 用户输入模式(req.body, sys.argv 等)在 `sources.ts` 中管理,由所有规则共享 - **置信度评分**: 每个漏洞根据误报风险标记高/中/低 - **去重**: 相同文件:行号 → 保留最高严重程度,优先选择更长的 ruleId - **异步引擎**: `RuleEngine.execute()` 是异步的,用于 tree-sitter WASM 初始化 - **优雅降级**: 如果 tree-sitter 加载失败,纯 Regex 规则仍然有效 ## GitHub Action ``` # .github/workflows/security.yml name: Security Scan on: push: branches: [main] pull_request: branches: [main] permissions: security-events: write contents: read jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: vexlit/vexlit@v1 with: paths: "." fail-on: "critical" upload-sarif: "true" ``` ### Action 输入 | 输入项 | 默认值 | 描述 | |---|---|---| | `paths` | `.` | 要扫描的路径(空格分隔) | | `format` | `sarif` | 输出格式:table, json, sarif | | `fail-on` | `critical` | 失败的最低严重程度:critical, warning, info, none | | `upload-sarif` | `true` | 上传 SARIF 到 GitHub Code Scanning | | `sarif-file` | `vexlit-results.sarif` | SARIF 输出文件路径 | ### Action 输出 | 输出项 | 描述 | |---|---| | `total` | 发现的漏洞总数 | | `critical` | 严重漏洞数量 | | `warning` | 警告漏洞数量 | | `info` | 提示漏洞数量 | | `sarif-file` | 生成的 SARIF 文件路径 | ## 配置 在你的项目根目录创建 `vexlit.config.js`: ``` export default { languages: ["javascript", "typescript", "python"], ignore: ["vendor/", "generated/"], rules: { "VEXLIT-019": false, // Disable a rule "VEXLIT-004": { severity: "critical" }, // Override severity }, }; ``` ### 忽略模式 在你的项目根目录创建 `.vexlitignore`: ``` vendor/ *.generated.ts test-fixtures/ ``` 默认忽略:`node_modules`, `.git`, `dist`, `build`, `.next`, `__pycache__`, `.venv`, `coverage` ## LLM 验证 使用 Claude AI 进行二次漏洞分析: ``` export ANTHROPIC_API_KEY=sk-ant-... vexlit scan . --llm ``` LLM 验证结合上下文分析每个发现,过滤误报,并调整严重程度。 ## 编程 API ``` import { scan, scanFile, RuleEngine } from "@vexlit/core"; // Scan a directory const results = await scan({ paths: ["./src"] }); // Scan a single file const result = await scanFile("./src/app.ts"); // Use the rule engine directly const engine = new RuleEngine(); const vulns = await engine.execute("app.ts", code, "typescript"); ``` ## 技术栈 | 层级 | 技术 | |---|---| | 扫描器 | TypeScript, tree-sitter (WASM), @typescript-eslint | | CLI | Commander.js, SARIF 2.1.0 | | Web | Next.js 16, React 19, Tailwind CSS 4, Framer Motion | | 认证 & 数据库 | Supabase (PostgreSQL, GitHub OAuth) | | AI | Claude API (Anthropic SDK) | | 图表 | Recharts (懒加载) | | 部署 | Vercel (Hobby) | ## 许可证 MIT
标签:CI/CD安全, Claude API, CMS安全, DLL 劫持, DNS 反向解析, GitHub集成, JavaScript, Llama, LNA, Python, SARIF, SAST, Tree-sitter, TypeScript, WASM, WebAssembly, Web仪表盘, 云安全监控, 人工智能, 代码安全, 代码审查, 大语言模型, 安全助手, 安全插件, 对抗攻击, 敏感信息检测, 无后门, 漏洞枚举, 用户模式Hook绕过, 盲注攻击, 自动化攻击, 误报过滤, 静态分析