上一篇文章《从事件到监管:为什么加密机构需要区块链渗透测试》阐述了区块链渗透测试为何是必要的。本文转向探讨"它是什么",更详细地考察区块链渗透测试的定义与边界。
目前尚不存在一个被广泛接受的区块链渗透测试正式定义,许多提出的定义将其与其他缓解措施混为一谈,因此审计、扫描和漏洞赏金等标签有时会被纳入渗透测试的一部分,尽管它们各自服务于不同的目标。这使得人们更难判断某一次具体的评估工作到底验证了什么。我们的出发点源自学术界和产业界的实践,故意保持简单:区块链渗透测试,正如其名称所示,就是渗透测试——一门有着数十年历史的成熟学科——应用于web3生态系统,以对抗性、全系统评估的方式针对一个运行中的web3环境展开。从这门熟悉的学科出发,然后追问web3对威胁模型以及对测试人员所需判断力增添了什么。
区块链渗透测试是对运行中系统的一种对抗性、动手实践的评估,在约定的环境和交战规则下进行,以验证可利用的路径和控制链。 它对代码层面的安全审计起到补充作用,也可以单独委托进行[1]。
它寻找的是路径而非孤立的弱点,并在明确的授权、范围、访问假设和安全约束下运作。本文回答三个问题:区块链渗透测试是什么、它能验证什么(尤其是超出审计通常所能提供的证据之外的部分),以及一个机构如何从高层次入手开始这项工作。
web3带来了什么:资金处理威胁模型
Web3保留了传统渗透测试的所有对象面:云基础设施、网站、API、身份、特权访问、供应商以及运营工具。它并非用一个仅限于区块链的威胁模型来取代这一威胁模型,而是将其延伸到这样的系统中——在这些系统里,同样的立足点可能直接导向授权、记账或转移价值的操作。

这种延伸由三个特征所塑造。
-
第一,数字资产是可以直接转移的。攻击者一旦触及正确的交易或提现路径,就可能在不经过传统支付所使用的那些撤销和对账机制的情况下转移价值。
-
第二,签名往往就是一个转移资金的动作。一个加密学上有效的签名证明了某个密钥对某个负载进行了授权;但它本身并不能证明操作员看到了正确的目的地、理解了该交易,或遵循了预期的审批策略。
-
第三,当一个机构部署自己的合约时——随着产品增加更丰富的链上功能,这种情况越来越普遍——这些合约是可公开调用且可组合的。外部用户和其他合约可以以该机构无法控制的顺序调用它们。因此,安全性不仅取决于每个组件本身,还取决于身份、应用程序、策略、签名系统、记账逻辑和合约之间的相互作用方式。
我们将由此产生的风险敞口建模为一条资金处理链——即通向链上交易(以及日益增多的机构自身部署的合约)的链下签名意图、审批和资金逻辑控制——以及支撑这些环节的云、Web、API和身份层[1]。攻击者可能从一个普通的立足点开始,逐步跨越多个控制环节推进:操纵呈现给签名方的内容、抵达一个特权工作流、利用授权缺口,或使资金逻辑接受一个非预期的状态转换。
其中决定性的组合缺口在于链下与链上之间的交接环节:即身份、界面、审批、签名和资金逻辑控制,在预期动作转化为一笔链上交易时,是否能够保持不变。并非每一次攻击都会遍历整条链条。关键在于,保障的目标是跨层次的:单独看起来健全的控制措施,仍可能组合成一条穿越正在运行的资金处理系统的可利用路径。
区块链渗透测试做什么
区块链渗透测试将这一组合缺口转化为证据。在授权范围和约定规则之内,测试人员将跨层假设转化为攻击场景,针对运行中的环境执行这些场景,并判断它们是否会产生一条可复现的路径和具体的影响。其输出成果将该路径与支撑证据、严重程度、修复建议以及对已达成一致的修复措施的复测联系起来——而不是止步于一份互不关联的弱点清单。

它的差异化优势在于专业的web3安全判断力,而非某种独特的工具箱。测试人员必须解读托管、交易意图、审批策略、提现流程、资金记账以及链上交易行为(包括已部署的合约),同时将来自传统云、Web、API、身份和特权访问对象面的证据整合起来。工具可以辅助发现或验证,但确立所观察到的条件是否构成一条可信的资金转移路径,依赖的是专家判断。
该评估是有条理的、以证据为导向的,并且是时点性的。其结论适用于所测试的系统、版本、配置、访问假设和条件。潜在路径会被检查;经确认的可利用路径会附有可复现证据加以记录。
请注意,针对约定对象面开展的系统性工作无法保证发现每一个弱点或攻击路径,负责任的评估工作也不保证测试人员一定能够实现突破。
在一个机构级的web3环境中,这一从场景到证据的流程贯穿五项相互关联的能力——同一条资金处理链上的可测试对象面。它们涵盖支撑该链的基础设施、其三个链下控制环节,以及它所交接到的链上交易;这些能力之间是相互关联的,因为单一路径可能会跨越其中多个环节:
-
生产环境与自动化运维: 测试人员验证访问权限、部署、密钥或运维控制是否能够被串联成一条通向资金处理动作的链条,从而产生将运维立足点与其可触达影响相连接的证据。
-
Web与dApp前端、授权及签名意图: 测试人员验证呈现给用户或操作员的交易是否会与最终获得授权的动作发生偏离,并记录下被操纵的流程以及由此产生的签名或提交行为。
-
签名、审批与提现授权链: 测试人员验证身份、角色、策略检查或审批步骤是否可以被绕过或组合利用,并记录该序列以及其所导致的未授权动作。
-
资金业务逻辑: 测试人员验证余额、限额、对账、提现规则或状态转换是否会接受非预期的条件,捕获的是一条可复现的业务影响路径,而不仅仅是一个技术缺陷。
-
链上交易与已部署合约: 测试人员验证机构的链上交互在对抗性运行条件下的表现;在机构已部署自有合约的情况下,他们会检验这些合约的运行时行为,并保留所观察结果在交易层面的证据。代码层面的保障仍然是相应的Code Audit所承担的职责。
第4部分:Web3攻击面:渗透测试概览对这些对象面及其相互关联进行了梳理,而核心目标保持不变:确定约定运行环境中的各项条件能否串联成可复现的影响。
它在其他保障手段中的定位
最清晰的比较维度是保障目标:即该项工作旨在支持的决策以及预期产生的证据。如下图所示,方法可以重叠,不同学科可以协作,而任何有意义的边界都不应基于这样一种假象——即某个团队完全是静态分析,而另一个团队完全是动态分析。同一个目标对象——一个已部署的合约、一个云或RPC对象面、一个签名系统——可能同时受到不止一门学科的检验;不同之处在于每门学科所侧重的保障目标,而不是对该系统的独占性主张。

渗透测试与代码层面审计
Code Audit——代码层面审计的正式名称——主要在代码层面(也包括设计、架构和协议假设)建立保障。它将专家评审与检测工具相结合,可能包含动态技术,并针对约定的审计范围出具一份签署报告。对于合约、链、桥、rollup、钱包或其他实现,审计要回答的问题是:设计和代码是否满足其预期的安全属性。
渗透测试主要确立的是:在一个约定的、正在运行的机构环境中,真实存在的各项条件是否能够被串联成可复现的影响。它追踪已部署应用程序、身份、配置、工作流、业务逻辑、签名系统和合约调用之间的相互作用,然后记录下复现和修复该路径所需的证据。
这是目标和证据层面的差异,而非能力上的相互排斥。审计人员可以执行测试、对组件进行模糊测试并调查运行时行为;渗透测试人员也可以评审配置、应用逻辑和实现细节以理解某条路径。两种方法可以有所重叠,两个团队也可以协同工作。这两项服务是互补的,而非彼此替代:仅靠审计通常无法提供这种机构层面的运行时可利用性证据,而渗透测试也不能取代审计所涵盖的实现和协议属性方面的代码层面保障。
因此,一份合约在真实机构路径中的对抗性行为可能属于渗透测试的范畴,而对合约代码本身的保障则归属于相应的Code Audit。
扫描、漏洞赏金与专项测试
漏洞扫描针对已知特征、暴露的服务、缺失的补丁和常见配置问题提供自动化的广度覆盖。它支持可重复的可见性,并可以为侦察阶段做出贡献,而渗透测试则增添了由专家主导的深度,并判断这些条件是否能够被串联成一条有意义的路径。
漏洞赏金邀请独立研究人员按照已发布的规则报告符合条件的发现。其持续性的、众包式的模式能够发掘出长尾问题,而一次渗透测试项目则指派一个团队按部就班地检查约定的环境,并交付整合后的证据、严重程度评级、修复建议以及复测结果。这两种模式是互补的,且都不能保证发现全部问题。
举例来说,BlockSec的Blockchain Security Testing是一个并列的项目,而不是渗透测试的上级或子集。它使用专门的引擎——包括差分测试、模糊测试、私有部署、大规模RPC拒绝服务测试以及节点或集群基础设施测试——来验证定制化基础设施的实现正确性和韧性[2]。区块链渗透测试的核心是机构层面、贯穿正在运行的资金处理系统的跨层路径。应用托管和应用CI/CD归属于渗透测试的对象面;节点和集群基础设施以及大规模RPC韧性则归属于Blockchain Security Testing。一套架构可能两者都需要。
相近的保障目标也需要精确的归属划分。合约代码层面的保障归属于相应的Code Audit。密钥托管实现(包括MPC、TSS和TEE设计)的密码学正确性归属于Wallet Security Audit。支付侧的代理式系统归属于Agentic Payment Security[1]。当签名工作流、运维代理或应用路径构成约定的机构范围的一部分时,渗透测试仍可能对其周边环节进行检查。
| 保障目标 | 对应方法 |
|---|---|
| 验证可利用的路径是否会穿越一个正在运行的机构的应用程序、身份、审批控制、资金逻辑以及链上交易(包括已部署的合约) | Blockchain Penetration Testing |
| 评估代码、设计、架构或协议假设 | Code Audit |
| 评估MPC、TSS、TEE或密钥托管实现中的密码学正确性 | Wallet Security Audit |
| 验证定制化节点、集群、EVM、数据库、MPT或大规模RPC基础设施的实现正确性与韧性 | Blockchain Security Testing |
| 针对已知特征和配置问题保持广泛的自动化可见性 | Vulnerability Scanning |
| 在已发布的合格对象面上邀请持续的、激励驱动的研究 | Bug Bounty |
| 评估支付侧代理式系统及其安全假设 | Agentic Payment Security |
这是一份归属指南,而非一个操作顺序。单一系统可能会产生多个保障目标,因而有理由采取一套协同一致的评估措施;这些标签之间并非相互排斥。
根据司法管辖区和机构类别的不同,测试可能是一项监管要求或监管期望,某些制度体系要求由独立第三方进行;第1部分对这些区别做了说明[3]。监管适用性应与法律顾问确认。
如何着手开始
在做出决定之前,我们可以从以下三个问题入手:哪些系统在转移资金?已经存在哪些保障证据?哪条控制链尚未经过对抗性验证? 这些问题的答案能够识别出保障缺口,而无需过早地按名称选定某项具体服务。
随后,一次范围界定的沟通可以对目标、访问假设、安全防护措施和预期交付成果进行对齐。第3部分:机构级区块链渗透测试的交战规则与生产安全介绍了将该项工作付诸实施所需的授权、安全和协调事宜[4]。
当您准备好采取行动时,请与BlockSec一起界定您的保障缺口,在测试开始前对目标、证据和防护措施进行对齐。
继续阅读攻击面系列指南:
本系列即将发布的其他文章:
- 第5部分:授权与签名安全:Web、dApp以及
- 第6部分:云与CI/CD安全:自动化运维攻击面
- 第7部分:资金库控制平面安全:签名与提现审批
- 第8部分:交易所账本安全:盗窃路径与数据平面逻辑
区块链渗透测试专题主页提供了项目层面的整体视角。
参考文献
按首次出现顺序编号。



