Audit Verification Pipeline

Polar Sponsor
爱发电 赞助
.NET 9.0

审计finding三级验收流水线:自身forge test验证 → GitHub CI → 审查员评审。确保提交真实可靠的验证级产出。

审计验证管道 PoC 一级:自我验证 建立 + 伪造测试 + 发现 + 等级 3:提交前核对表 + 福尔格测试 + ouali

功能概述

审计验证管道 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轮)→ 仍失败 → 丢弃

反触发(不使用此技能的场景)

  • 没有 PoC 代码时:纯代码审查或白板分析不需要 forge 验证
  • 非 Solidity 项目:此流水线基于 Foundry,不适用于 Rust/Go/Python 审计
  • 理论级发现:没有可运行 PoC 的发现标记为理论级,不进入验收流程
  • 宝总明确说"先看看"时:探索阶段不触发正式验收

概述

三级验收流水线,确保每个审计 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。跳过任一环节 = 未验证。

Level 1: Self-Verification

分步操作

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 决策

PoC 模板

// 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");
    }
}

常见陷阱

  1. vm.roll vs vm.warp: vm.roll 仅修改区块号,需改时间戳请用 vm.warp
  2. StaleMessage: 部分协议校验消息新鲜度,需设置正确时间戳
  3. NotTolled/Payable: 认证类函数可能要求支付费用(例如 kiss())
  4. Solidity 中的 Unicode 字符: 替换 —、→ 等非 ASCII 符号为纯 ASCII
  5. 库路径: 核对实际文件位置,勿依赖假设路径
  6. 虚拟份额/余额: 协议特定的虚拟记账机制可能吸收舍入误差(参考 Morpho 教训)
  7. PASS ≠ 正确: PoC 通过不代表 finding 成立——须验证攻击 EFFECT,而非仅机制可行

质量自评模板

【提交前质量自评】
- Finding ID: [F-XX]
- 验证状态: [ ] 已编译 [ ] forge test PASS [ ] 攻击效果已确认
- 严重度: [H/M/L/I] — 理由: [为何定为此严重度]
- 新颖性: [New / Known / Duplicate] — 若已知,请注明来源: [link]
- 已知限制: [任何注意事项或边界条件]

Level 2: GitHub CI(待补充)

必需工作流

# .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。

Level 3: 审计师复核

审计师核查内容(forge test 无法覆盖)

  1. 新颖性: 该 finding 是否已被发现?需查阅历史审计报告
  2. 严重度准确性: Medium 是否确为 Medium?(Sablier 教训:2/5 存在高估)
  3. 影响量化: 精确计算损失金额,而非定性描述
  4. 报告质量: 清晰的复现步骤、代码引用、修复建议
  5. 协议经济学: DeFi 场景下的博弈论分析与激励机制评估

提交前检查清单

  • forge test PASS(Level 1)
  • 推送后 CI 通过(Level 2)
  • 已比对历史审计报告,排除重复项
  • 严重度判定附有数据支撑
  • 影响已量化(不可仅写“资金损失”)
  • 报告符合目标平台提交格式
  • 已向 宝总 汇报并获准提交

严重度评估指南

严重度 判定标准
HIGH 直接资金损失、核心功能 DoS、权限提升
MEDIUM 间接损失、受限 DoS、造成经济成本的骚扰行为(griefing)
LOW 违反最佳实践、纵深防御缺陷、仅理论存在且无实际可利用路径
INFO 代码质量、文档问题,无安全影响

常见高估情形:若影响发生需同时满足多个低概率条件,应下调一级。 常见低估情形:若影响具有系统性(波及全部用户),应上调一级。

回溯验证复盘经验(2026-03-31)

  • 共提交 135 个 finding,0 个经验证 → Cantina 封禁
  • 29 个 finding 进行回溯验证:28 个真实(96.6%),1 个误报(3.4%)
  • 代码分析能力扎实;验证层此前缺失
  • 误报示例:Morpho F-01(虚拟份额吸收舍入误差)
  • 严重度高估示例:Sablier F-03、F-05(Medium → Low)
  • PoC 编译报错属正常现象,预期需 2–3 轮修复
  • forge test PASS ≠ finding 成立,务必验证攻击 EFFECT,而非仅机制可行

相关专题

更多
python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

2025.07.23

2487

16

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

2024.12.23

5722

11

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

2024.12.20

4243

6

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

2023.10.09

1870

5

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习

Python虚拟环境官方教程
Python虚拟环境官方教程

共0课时 | 0人学习

Python venv官方模块文档
Python venv官方模块文档

共0课时 | 0人学习