核心用法
bug-audit 是一套针对 Node.js Web 项目的深度代码审计方法论,强调"解剖先于验证"——不运行通用检查清单,而是通过系统性代码阅读构建 7 张项目专属审计表,再逐行穷尽验证。
Phase 1: 解剖(10-15分钟)
构建7张关键表格:
- API端点表:记录每个路由的方法、路径、认证状态、参数验证、前置条件、返回值及攻击向量
- 状态机表:追踪所有布尔/枚举状态变量的生命周期与跨会话泄漏风险
- 定时器表:审计 setTimeout/setInterval 的创建、清理及生命周期边界问题
- 数值表:审查用户可影响的数字(成本、分数、伤害等)的来源验证与边界处理
- 数据流表(关键):分析成对API(如购买→使用、支付→交付)的关联性,识别跳过步骤、重放攻击等漏洞
- 资源账本表:追踪游戏内资源(金币、道具、经验等)的所有流入流出,检测无限刷取与经济循环漏洞
- 并发热点表:识别读写共享状态的 TOCTOU(检查时间到使用时间)竞态条件
Phase 2: 验证(主体审计)
逐行审查7张表的每个条目,标记严重(🔴)、中等(🟡)、轻微(🟢)或确认无误(✅),输出结构化漏洞报告。
Phase 3: 红蓝对抗
执行5条通用攻击链(认证绕过、注入、速率滥用、数据泄漏、并发竞态)及项目类型专属攻击链(游戏/数据工具/API服务/机器人/微信/平台),并为每个发现验证蓝队四层防御(预防→检测→遏制→恢复)。
Phase 4-6: 补充检查、回归验证与归档
运行通用安全模块作为安全网,验证修复未引入新bug,最终归档审计结果供后续参考。
显著优点
1. 项目特异性:通过"解剖代码→构建矩阵"替代通用清单,能发现业务逻辑层面的独特漏洞
2. 系统性穷尽:7张表格强制覆盖攻击面,避免"灵感枯竭"导致的遗漏
3. 数据流聚焦:明确识别"成对API缺少关联令牌"这类传统工具无法检测的高危漏洞
4. 并发深度:TOCTOU 竞态条件分析填补单请求测试的盲区
5. 经济安全:资源账本表专门应对游戏/金融类项目的经济系统漏洞
潜在局限
1. 时间成本高:完整审计需数小时,不适合快速扫描场景
2. 依赖人工代码阅读:自动化程度低,需审计者具备Node.js与Web安全经验
3. 微信/小游戏生态偏重:部分预设模块(如WeChat WebView兼容)对非微信项目价值有限
4. 运行时行为盲区:静态分析无法覆盖依赖特定数据状态的时序漏洞
5. 无主动漏洞利用:提供攻击思路但不包含自动化利用验证
适合人群
- Node.js 后端开发者进行发布前安全自检
- 安全工程师对游戏、API服务、微信生态项目进行深度代码审计
- 技术负责人建立团队代码审计规范与checklist
- 白帽安全研究员分析Web应用业务逻辑漏洞
常规风险
- 误报与漏报平衡:过于依赖审计者经验,经验不足可能导致关键数据流遗漏
- 修复回归风险:Phase 5虽已设计回归验证,但复杂项目的模块化拆分仍可能引入可达性错误
- 生态更新滞后:Node.js/npm生态快速变化,供应链审计(SC1)需配合
npm audit动态更新 - 并发测试受限:TOCTOU分析依赖代码审查,高并发场景的实际竞态重现需额外压力测试