审计finding三级验收流水线:自身forge test验证 → GitHub CI → 审查员评审。确保提交真实可靠的验证级产出。
审计验证管道 PoC 一级:自我验证 建立 + 伪造测试 + 发现 + 等级 3:提交前核对表 + 福尔格测试 + ouali是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
| 场景 | 对应能力 | 说明 |
|---|---|---|
| 写完 PoC 准备验证 | Level 1: Self-Verification | forge build + forge test 确认攻击效果 |
| 准备提交 finding 到外部平台 | Level 3: Pre-submission checklist | 提交前必须完成三级验收 |
| forge test 结果不确定 | Quality Self-Assessment | 判断 PASS 是否等于 finding 真实 |
| 判断 finding 严重度 | Severity Assessment Guide | 防止高估(Medium→Low 惯例) |
| 推送审计代码到 GitHub | Level 2: GitHub CI | CI 必须配置防止跳过验证 |
发现可疑代码 → 写 PoC → forge build → forge test ├─ PASS + 攻击效果确认 → 质量自评 → 提交宝总决策 → (是) 提交外部平台 ├─ PASS + 无攻击效果 → 丢弃(FALSE POSITIVE) └─ FAIL → 修复(最多3轮)→ 仍失败 → 丢弃
三级验收流水线,确保每个审计 finding 经过确定性验证后才作为交付物。
核心原则: 代码生成虽具概率性,但验证是确定性的。没有 forge test PASS 的 finding 不是交付物。
Level 1: Self-Verification (forge test PASS) Level 2: GitHub CI (automated, prevents skipping) Level 3: Auditor Review (novelty, severity, quality)
串行依赖关系:L1 → L2 → L3。跳过任一环节 = 未验证。
1. 阅读源码 → 识别可疑模式 2. 编写 finding 描述(初稿) 3. 编写 Foundry PoC (.t.sol) 4. forge build → 修复编译错误(预期需 2–3 轮迭代) 5. forge test → 检查结果: - PASS + 攻击效果确认 → REAL - PASS + 攻击效果 = 0 → FALSE POSITIVE - FAIL(PoC 缺陷)→ 修复 PoC,重试 - FAIL(被测代码正确)→ FALSE POSITIVE,丢弃 6. 质量自评 7. 向 宝总 汇报,申请进入 Level 3 决策
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.x;
import "forge-std/Test.sol";
import "../src/TargetContract.sol";
contract POC_FindingName is Test {
TargetContract target;
function setUp() public {
// 部署合约
// 初始化状态
}
function test_attack_succeeds() public {
// 步骤 1:准备攻击前提条件
// 步骤 2:执行攻击
// 步骤 3:断言攻击效果(NOT 仅断言交易成功)
assertGt(attackerProfit, 0, "Attack must produce profit");
}
}
vm.roll 仅修改区块号,需改时间戳请用 vm.warpkiss())—、→ 等非 ASCII 符号为纯 ASCII【提交前质量自评】 - Finding ID: [F-XX] - 验证状态: [ ] 已编译 [ ] forge test PASS [ ] 攻击效果已确认 - 严重度: [H/M/L/I] — 理由: [为何定为此严重度] - 新颖性: [New / Known / Duplicate] — 若已知,请注明来源: [link] - 已知限制: [任何注意事项或边界条件]
# .github/workflows/audit-test.yml
name: Audit PoC Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: foundry-rs/foundry-toolchain@v1
- run: forge test --match-path "test/POC_*.t.sol" -vv
- run: forge build
防止因会话中断或记忆疏漏而跳过 Level 1。每次推送均须通过 forge test,方可提交 PR。
| 严重度 | 判定标准 |
|---|---|
| HIGH | 直接资金损失、核心功能 DoS、权限提升 |
| MEDIUM | 间接损失、受限 DoS、造成经济成本的骚扰行为(griefing) |
| LOW | 违反最佳实践、纵深防御缺陷、仅理论存在且无实际可利用路径 |
| INFO | 代码质量、文档问题,无安全影响 |
常见高估情形:若影响发生需同时满足多个低概率条件,应下调一级。 常见低估情形:若影响具有系统性(波及全部用户),应上调一级。