跳到正文
← 使用教程

Wake 没报 tx.origin:检查 detector 来源、过滤和屏蔽

链小知 · 进阶 · 核验 · 依官方文档整理

定位 Solidity 静态检测的扫描覆盖,并区分授权钓鱼风险与账户抽象兼容问题。

开始前准备

  • 准备可以编译的 Solidity 工程副本、Wake 实际版本与既有扫描结果;编译器/依赖已在本地准备。
  • 只使用静态 detector 路径;不要执行工程中的部署或钱包脚本。源码仍须人工检查,扫描零报告不是安全证明。

1. 确认命令与 detector 来源

在项目目录查看 wake detect --help 与 wake detect list,确认存在 tx-origin,并记录加载来源。本地 ./detectors 或全局同名插件会优先覆盖包内 detector;名字相同不保证执行的是官方实现。先解决编译错误,再判断扫描是否真的完成。

检查结果:tx-origin 可用、来源明确;无未解决的编译错误。

2. 对目标文件运行指定检测器

使用 wake detect tx-origin 检查该项目,或按帮助给出目标合约路径。对比全项目 wake detect all 的结果时,把扫描路径、min-impact 和 min-confidence 一起记录;只扫 utils 或设高阈值可能将相关合约/发现排除。

检查结果:扫描范围覆盖实际授权函数,阈值没有隐式改变比较口径。

3. 沿着发现位置读授权条件

找到报告对应函数、源码行和条件。如果用 tx.origin == owner 作为授权,按调用链推演:owner 调用中间合约,再由中间合约调用目标,tx.origin 仍为 owner。报告提示应进一步检查权限设计;不能仅把 tx.origin 字符串替换后便宣布修复。

检查结果:每个发现有实际可定位的源码条件和调用链解释。

4. 区分影响与置信度、兼容分支

Wake 消息第一标签为 impact、第二为 confidence,不能把二者互换。tx-origin 也会提示 tx.origin == msg.sender 等 EOA 限制对 ERC-4337 用户的影响;account-abstraction 检查默认开启。若该分支被关闭,应在结果里说明未覆盖这一类问题。

检查结果:记录两类标签,并明确钓鱼授权与账户抽象兼容发现各自的条件。

5. 核对隐藏报告的配置再复验

搜索目标文件附近 wake-disable-line、wake-disable-next-line、wake-disable 及匹配 detector 名称,同时检查 wake.toml 的 detector 设置。无名称屏蔽会覆盖所有检测;编译错误却不能被这种注释忽略。调整有依据的配置或代码后比较扫描结果,保留人工判断和剩余覆盖限制。

检查结果:对零报告能说明路径、阈值、屏蔽、detector 来源与编译状态,不以零报告代替审计。

怎样确认完成

  • 完整保留 detector 来源、扫描范围、编译状态、标签和屏蔽配置。
  • 官方文档核对未包含实际编译、执行或合约漏洞利用测试。

常见错误与边界

  • 同名自定义 detector 的行为可能不同,不能只看命令名字。
  • 关闭 account-abstraction 分支不等于修复兼容问题。
  • 静态 detector 提示需结合授权语义与调用路径,扫描通过不能证明资金安全。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据