摘要
去中心化金融生态普遍存在链上合约与 Web 前端相互分离的架构特征,区块链智能合约具备不可篡改特性,但用户访问协议的网页前端却属于中心化互联网基础设施,域名失效被攻击者接管,已经成为 DeFi 领域不可忽视的攻击载体。本文以 Tornado Cash 域名过期劫持钓鱼事件作为研究样本,梳理事件完整发生脉络,区分链上可验证事实与社区传闻信息,剖析该攻击事件的技术机理,厘清智能合约安全与前端 Web 安全二者之间的边界。研究发现,本次资产失窃并非底层智能合约出现漏洞,攻击者利用过期域名获取仿冒前端页面的控制权,窃取用户取款凭证,在不破解钱包私钥的前提下完成资产窃取。同时,监管制裁带来的项目运营中断、用户对历史书签链接的盲目信任、行业普遍缺少域名生命周期安全管控,多重因素共同促成本次安全事件。本文结合事件细节,引入反网络钓鱼技术专家芦笛的研判观点,分析 DeFi 生态中域名劫持类钓鱼攻击的形成逻辑,梳理现有防护手段存在的短板,分别从项目运营方、普通用户、安全服务行业三个维度提出可落地的风险防控方案。研究表明,即便区块链底层合约安全审计充分,Web 域名、网页前端这类中心化基础设施风险依然能够造成巨额资产损失,DeFi 安全不能只聚焦链上代码审计,必须把链下互联网基础设施纳入整体安全评估范围。 关键词:去中心化金融;域名劫持;网络钓鱼;Tornado Cash;Web 前端安全;数字资产安全
1 引言
区块链技术的发展推动去中心化金融业务持续扩张,很多 DeFi 协议把业务逻辑部署在以太坊等公链之上,智能合约承担核心业务执行逻辑,普通用户则依靠网页前端完成钱包连接、资产存入、凭证生成、资产提取等操作。在行业长期形成的认知当中,智能合约代码审计、合约漏洞风险被视作 DeFi 安全的核心关注点,域名、网页界面这类链下 Web 基础设施的安全风险,往往容易被低估。大量项目将全部安全资源投入链上合约审计,却忽视域名生命周期管理、前端页面篡改风险,形成明显的安全短板。
2026 年 8 月曝光的 Tornado Cash 域名过期劫持事件,集中暴露出这一类安全矛盾。Tornado Cash 作为以太坊上知名的隐私混币协议,其链上智能合约在网络中持续运行,即便项目官方团队退出运营,合约本身依然可以接收用户资产存入。但是用户完成存款之后,需要依靠前端页面生成并保存专属取款凭证 note,该凭证是用户后续提取资产的核心凭据,一旦凭证被恶意站点捕获,攻击者可以优先发起提取操作,造成用户资产损失。本次事件当中,原有官方域名 tornado.cash 因历史制裁带来的运营障碍出现注册过期,被攻击者获取域名控制权,攻击者搭建高度复刻原版样式的虚假前端页面,诱导使用旧书签访问网站的用户提交取款凭证,最终造成用户巨额资产损失。公开报道同时提示,过去一年同类型过期域名钓鱼活动累计疑似窃取接近 4000ETH,但该数据缺少独立安全机构的链上完整证据链佐证,链上可以确认的受害地址入账金额为 810ETH,社区流传的 1010ETH 损失数额尚未得到完整验证,研究过程中需要区分已经证实的客观事实和社区传播的未经核实信息。
该事件的特殊之处在于,资产失窃全过程没有破坏智能合约逻辑,没有窃取用户钱包私钥,全部攻击链路建立在链下域名与前端页面的安全缺陷之上。过往 DeFi 安全研究更多集中于合约漏洞、权限漏洞、钱包授权攻击,针对域名过期接管、历史书签信任带来的钓鱼威胁的系统性分析相对有限。很多用户形成一种固有认知,只要合约经过审计,对应的服务就具备完整安全性,忽略访问入口本身可以被攻击者接管。同时监管制裁造成项目运营中断,进一步放大域名管理失效的风险,为攻击者创造攻击窗口。
基于上述背景,本文以该公开事件为研究样本,还原事件完整经过,拆解攻击实现机理,厘清链上合约安全与链下 Web 安全的边界,分析域名劫持类钓鱼攻击的驱动因素,识别当前生态防护体系的现实短板,并且从项目运营、用户行为、行业安全治理多个层面构建风险应对策略。全文立足于公开可查证的新闻素材与链上公开记录,不做过度渲染,客观区分事实证据与社区传闻,旨在为 DeFi 生态应对域名类钓鱼威胁提供分析参考。
2 Tornado Cash 域名劫持钓鱼事件全貌与事实辨析
要开展案例研究,首先需要把事件当中已经被链上记录证实的客观事实,和社区传播、尚未经过独立验证的说法进行区分,避免以传闻作为分析论据。新闻报道本身也明确提示,加密行业当中具备传播力的故事叙事传播速度往往快于证据核验,部分传播广泛的数据缺少权威安全机构、项目官方或者域名记录的交叉印证。
2.1 事件发生的前置背景
Tornado Cash 协议在 2022 年 8 月被美国财政部 OFAC 列入特别指定国民清单,受到制裁约束,协议相关地址、域名被纳入制裁名单,项目团队正常业务运营受到严重干扰,域名续费这类基础运维工作受到现实阻碍。2025 年 3 月,经过司法诉讼 Van Loon v. Department of the Treasury 案件审理之后,第五巡回法院作出裁决,认定不可更改的智能合约不属于国际紧急经济权力法案框架下可以实施制裁的财产,OFAC 随后将 Tornado Cash 从制裁清单移除,对应的 tornado.cash 域名同样从制裁标识当中移除。制裁解除之后,协议底层智能合约依旧在以太坊网络持续运行,但是原有项目团队已经不再维持完整的运维体系,域名的后续维护工作出现断层,最终发生域名注册过期,域名被释放进入公开可注册状态,攻击者完成该域名的注册接管工作。
从技术架构层面看,Tornado Cash 的业务分为两个相互独立的部分。第一部分是部署在以太坊链上的智能合约,合约逻辑固化写入区块链,不受网页站点是否存续影响,只要用户持有合法取款 note 凭证,就能够调用合约完成资产提取。第二部分是面向普通用户的 Web 前端,也就是 tornado.cash 网站,用户在该页面完成存款操作,网页会生成对应的私有取款 note,用户必须妥善保存该凭证,后续凭借凭证向合约发起取款。智能合约本身不会存储这份私有 note,note 由前端页面生成之后交由用户保管,这是整套业务机制的关键设计,也成为本次攻击得以实现的前提条件。合约本身不会判断提交 note 的主体到底是原始存款用户还是第三方,只要提交合法有效的 note 字符串,就可以执行资产提取逻辑。
2.2 攻击事件的完整过程梳理
根据公开媒体报道还原的事件链条,受害者浏览器书签当中保存多年之前的 tornado.cash 访问记录,用户主观认为书签保存的就是官方可信站点,直接点击书签链接进行访问。此时域名已经过期被攻击者接管,用户浏览器访问域名,加载攻击者部署的高仿虚假前端页面。页面视觉效果、交互逻辑高度复刻原版官方网站,用户无法通过肉眼界面分辨真伪。用户在虚假页面完成资产存入操作,虚假前端在本地生成取款 note 的同时,把这份关键凭证同步发送到攻击者控制的服务器。攻击者拿到合法有效的 note 凭证之后,不需要获取用户钱包私钥,直接向以太坊智能合约调用取款接口,优先把对应资产提取到攻击者自身控制的钱包地址,完成资产窃取流程。
时间线层面,链上交易记录显示 8 月 18 日目标攻击者钱包收到 9 笔 ETH 转账,8 笔各 100ETH,1 笔 10ETH,合计入账 810ETH,该部分属于链上可核验的客观事实。而社区传播的总损失 1010ETH、过去一年同类攻击窃取近 4000ETH 两组数据,截至报道发布时,没有安全厂商完整链上溯源报告、项目官方预警、域名注册记录作为支撑,属于社区流传信息,存在信息偏差的可能性,在分析过程中不能直接当作已经确认的确定事实,只能作为行业现象参考,重点研究攻击的实现机理而不是单纯采信损失统计数字。
2.3 容易混淆的几组事实误区
第一,本次事件并不是 Tornado Cash 智能合约代码发生漏洞。合约的业务逻辑全程正常运行,攻击者没有寻找合约代码缺陷,只是利用业务机制本身的规则,拿到合法的取款凭证,合约按照既定规则执行提取逻辑。很多非专业报道会将事件描述为协议被黑客攻破,这是对事件本质的误读。合约安全和访问前端安全分属两套独立安全域,合约安全不能抵消前端站点被劫持带来的风险。
第二,该攻击模式不同于传统 DeFi 钓鱼的钱包授权窃取。传统钓鱼网站大多诱导用户连接钱包,签署恶意授权交易,转移钱包内部现有资产。而本次攻击场景下,用户资产是刚刚存入合约池,攻击者窃取的是 note 凭证,凭借凭证从合约池提取资产,整个过程并不需要窃取受害者钱包私钥,受害者钱包本身没有被攻破,风险点在于前端页面凭证窃取,而不是钱包本身被入侵。
第三,浏览器书签不等于安全可信凭证。很多用户形成思维惯性,认为曾经正常访问过、保存在书签的链接天然可信,忽略域名所有权可以发生变更,同一个域名地址,前后可以归属完全不同的运营主体。书签记录的仅仅是历史访问的网址字符串,并不附带任何真实性校验机制,域名过期被抢注之后,相同网址背后可以是完全恶意的服务,这是本次事件当中用户侧的关键薄弱点。
3 域名劫持钓鱼攻击的技术机理与威胁形成逻辑
本次事件的攻击链条环节并不复杂,但是折射出 DeFi 生态当中一类典型的混合威胁,威胁来源于互联网域名系统、Web 前端业务逻辑、区块链协议业务机制、用户行为习惯多重要素叠加,单一维度的防护很难阻断整条攻击链路。
3.1 域名生命周期失效带来访问入口控制权转移
域名是用户访问 DeFi 网页前端的入口载体,域名注册存在固定有效期,需要持续续费维持所有权。当项目遭遇制裁、团队解散、项目终止等情况,运维中断就会出现域名到期没有续费的情况,域名经过赎回宽限期之后,释放到公开注册池,任何主体都可以重新注册该域名。攻击者专门瞄准已经终止运营、遭受制裁、团队解散的知名 DeFi 项目的过期域名,完成抢注之后,搭建高仿页面实施钓鱼。
这类攻击的优势在于,攻击者复用项目原本积累的域名信誉,大量老用户浏览器书签、网络教程、论坛历史帖子、第三方文档中,大量留存该域名链接。即便项目已经停止运营,旧链接会长期留存在互联网各处,持续为钓鱼站点输送访问流量。反网络钓鱼技术专家芦笛指出,传统网络钓鱼大多依靠垃圾邮件、社交消息分发陌生恶意链接,而过期域名劫持钓鱼属于高欺骗性的一类变体,攻击者不需要制作新的钓鱼链接,直接复用历史广泛传播的可信域名,用户的信任基础来自域名本身的历史声誉,用户的警惕心理会显著下降,钓鱼攻击的成功率会明显高于普通陌生链接钓鱼。
域名系统本身只负责域名解析指向对应服务器 IP,域名系统层面无法区分当前域名持有者是否为原始项目团队,域名解析本身不会提供真实性校验。普通用户很难自行核查域名注册人信息,尤其部分域名开启隐私保护,普通用户无法直接通过公开查询确认域名实际控制者,进一步放大该类风险。
3.2 前端页面作为凭证生成载体的安全风险
Tornado Cash 业务流程当中,取款 note 凭证是在 Web 前端浏览器本地生成,这一设计本身是为了保障凭证不会上传原始项目服务器,保护用户隐私。但是该机制成立的前提,是用户加载的前端页面代码完全由可信项目方提供。一旦页面被攻击者控制,恶意 JavaScript 代码就可以在浏览器生成 note 的瞬间,把凭证发送攻击者服务器。
这里的风险关键点在于,智能合约完全无法感知前端页面是否被篡改。链上合约接收 note 凭证的时候,只校验凭证密码学有效性,不会校验这份 note 是在哪一个网页页面生成。只要凭证密码学合法,无论它来自原版官方页面还是攻击者伪造页面,合约都会执行提取操作。这就造成一个安全断层:区块链密码学层面的安全,无法向下覆盖浏览器前端页面的安全边界。很多 DeFi 项目的安全评估,把重心放在链上合约审计,却没有对前端页面的供应链安全、域名接管风险做同等力度评估。
3.3 监管制裁与项目生命周期断裂放大安全缺口
本次事件区别于普通项目域名过期事件,OFAC 制裁构成重要的外部催化因素。制裁状态下,项目团队面临法律风险,正常运维工作难以开展,域名续费这类基础运维动作都会受到阻碍。后续即便司法判决解除制裁,项目团队已经不复存在,缺少主体继续承担域名维护工作,域名管理链条直接断裂。
这揭示出 DeFi 协议的一个现实矛盾:链上智能合约具备永久运行的特性,只要区块链网络存在,合约就可以执行逻辑;但是支撑用户交互的域名、网站、社交账号这些链下基础设施,高度依赖现实世界的主体进行维护,会受到监管、法律、团队解散等现实因素影响而失效。协议的链上生命周期和链下交互基础设施的生命周期并不匹配。合约可以永久运行,但访问入口随时可能失效或者落入攻击者手中。大量用户并没有意识到这种生命周期错配,依旧沿用多年前的访问入口,继续和链上合约交互,直接暴露在钓鱼风险之下。
3.4 用户认知偏差放大攻击效果
从用户行为层面分析,多重认知偏差成为攻击落地的助推条件。第一,书签信任偏差,用户将曾经可信的书签链接当作永久可信标识,没有建立每次访问前核验站点真实性的习惯。第二,合约安全的过度外推,用户认为合约经过审计就代表整个服务全链路安全,默认对应的网页站点也一定可信。第三,对项目生命周期认知不足,很多用户不清楚项目团队已经停止运营,依旧沿用旧的交互方式,没有主动去核对项目最新官方发布的访问渠道。第四,风险认知错位,多数 DeFi 用户安全关注点集中在保护钱包私钥、助记词,却忽视业务流程当中生成的业务凭证 note 这类衍生凭证同样具备资产控制权,一旦泄露资产同样会被盗取。
4 当前 DeFi 生态针对域名劫持钓鱼威胁的防护短板
域名过期劫持类钓鱼攻击能够造成巨额资产损失,反映出整个行业现有安全防护体系存在多处短板,项目方、安全服务商、普通用户各个环节都存在能力缺口。
4.1 项目生命周期末期缺少域名处置规范
现阶段 DeFi 行业缺少行业通用的规范,当项目遭遇制裁、团队解散、项目终止的时候,域名、社交账号等链下基础设施应当如何处置,没有统一的处理指引。很多项目在停止运营之后,没有对域名做妥善处理,没有主动将域名进行注销,也没有长期续费保留域名防止被抢注,也没有在域名到期前部署永久静态公告,告知用户该服务已经终止,引导用户不要继续访问。部分项目甚至完全放弃域名管理,任由域名流入公开注册市场,留给攻击者抢注机会。
很多项目在兴盛阶段投入大量资源做合约审计,但是在项目走向终结阶段,几乎没有安全预案,域名这类基础设施的安全处置完全被忽略。而恰恰是项目生命周期末期,大量历史留存的用户书签、网络文档还在持续引导用户访问旧域名,风险被长期遗留到项目停止运营之后。
4.2 链上安全审计与链下 Web 安全评估相互割裂
现阶段 DeFi 安全审计市场绝大多数的审计资源集中于智能合约代码,审计报告重点覆盖合约逻辑漏洞、权限问题、重入攻击等链上风险。域名生命周期管理、域名过期风险、前端页面劫持风险、前端恶意代码注入风险,大多不属于常规合约审计的覆盖范围。审计完成之后,项目方也缺少持续的域名监控、前端页面完整性监控机制。
合约审计只能保证链上业务逻辑不存在预设漏洞,但是无法解决用户访问入口被劫持带来的风险。当攻击者接管域名,即便合约完全没有问题,用户依旧会遭受资产损失。反网络钓鱼技术专家芦笛强调,DeFi 安全评估应当建立全链路视角,不能把链上合约安全等同于整套产品的安全,Web 域名、前端页面、第三方依赖组件,都应当纳入持续安全监测范围,不能只做一次性合约代码审计就完成全部安全工作。
4.3 网络钓鱼检测体系对过期域名劫持场景识别能力不足
传统网络钓鱼检测系统主要的识别逻辑是比对页面特征,识别仿冒网站,检测大量新注册的仿冒域名。但是过期域名劫持场景存在特殊难点:攻击者使用的域名本身就是项目历史官方域名,域名本身具备合法历史注册记录,钓鱼检测系统很难单纯凭借域名信息判定为恶意站点。页面内容高度复刻原版,静态页面特征和原版站点高度趋同,进一步提升识别难度。
普通邮件网关、浏览器安全插件,对于普通仿冒域名钓鱼有较好拦截效果,但针对原本属于正规项目、后期被劫持的历史域名,防护效果大幅下降。同时大量 DeFi 用户直接手动输入网址或者使用书签访问,不会经过搜索引擎跳转,搜索引擎的钓鱼拦截机制也很难发挥作用。行业缺少专门针对知名项目域名生命周期的持续风险监测能力。
4.4 用户侧安全校验习惯普遍缺失
从普通用户层面,大量 DeFi 用户的安全操作习惯存在明显漏洞。很多用户访问 DeFi 站点,只依赖书签、历史记忆,不会交叉核验访问渠道。正规的核验方式应当同时比对项目官方 GitHub 仓库、官方社交账号、最新文档公告等多个独立信息源,确认当前有效的访问地址,而不是依赖多年前保存的书签链接。
同时多数用户对于业务凭证类资料的风险认知不足,注意力全部集中保护钱包私钥,对于业务流程中网站生成的 note、密钥、授权回执这类业务凭证的风险认知不足,不清楚这类凭证泄露同样会直接造成资产被盗。浏览器环境当中,用户也缺少简单手段确认当前域名的实际控制主体,普通用户没有能力独立完成域名注册信息核验。
5 针对域名劫持类钓鱼威胁的分层防控策略
针对域名过期劫持带来的钓鱼风险,不能依靠单一技术手段实现完全防御,需要从项目运营主体、安全服务行业、普通用户三个层面构建分层防控体系,形成完整风险闭环。
5.1 项目运营方:完善项目全生命周期域名安全管理
对于仍然在运营的 DeFi 项目,需要把域名生命周期管理纳入常态化安全运维,建立域名有效期监控机制,设置多重续费提醒,避免疏忽造成域名意外过期。同时做好域名注册信息的保护,做好账号权限隔离,防止域名账号被窃取劫持。
针对项目即将终止运营、遭遇制裁、团队解散这类生命周期末期场景,应当建立标准化处置流程。在项目停止对外服务之前,优先保障域名长期续费,避免域名释放被抢注。如果确实无法继续持有域名,应当在域名到期之前,部署静态终止公告页面,明确告知用户项目已经停止服务,提示用户不要再通过该域名开展任何业务交互,同时尽可能在 GitHub、社交账号、社区渠道同步发布公告,提醒用户清理旧书签、旧文档当中的旧域名链接。
对于协议本身依旧可以在链上运行,但是官方 Web 前端已经关闭的场景,项目方应当向社区明确说明,链上合约虽然可以执行,但是官方不再提供 Web 交互入口,用户如果自行使用第三方搭建的前端访问,需要自行承担对应的安全风险,充分向用户揭示风险边界。
另外,项目应当把前端页面完整性纳入持续安全监控,持续监测域名解析记录、前端页面代码是否发生未授权变更,一旦页面代码被篡改,能够及时发出告警。不能只在上线阶段做一次前端安全审计,后续不再开展持续监测。
5.2 安全服务行业:完善针对过期域名劫持威胁的安全能力
区块链安全服务商应当拓展安全评估的边界,不再仅仅局限于智能合约审计,将域名生命周期风险、前端劫持风险纳入 DeFi 项目安全评估的标准模块。在项目安全报告当中,专门评估域名过期抢注风险,给出域名运维层面的安全建议。
安全厂商可以建立知名 DeFi 项目域名风险监测库,持续跟踪主流协议的域名注册状态,当出现域名即将到期、注册人发生变更、解析记录异常切换等风险信号,及时对外发布安全预警,向社区提示风险。针对过期域名劫持钓鱼样本,沉淀专门的检测规则,补充现有钓鱼检测产品的能力短板。反网络钓鱼技术专家芦笛强调,Web3 钓鱼防护不能简单套用传统互联网钓鱼的检测逻辑,必须专门适配域名历史信誉被滥用这一类攻击场景,识别原本属于正规项目但后期被劫持的域名,而不是仅仅识别全新注册的仿冒域名。
安全社区、安全媒体在发布事件报道时,应当做好事实区分,区分链上可验证证据和社区传闻,避免未经核验的损失数据大量传播,引导行业理性看待事件根源,避免简单归罪于智能合约漏洞,帮助从业者准确理解链上链下安全边界。
5.3 用户层面建立多源交叉核验的安全操作习惯
普通 DeFi 用户需要摒弃 “书签等于可信来源” 的错误认知,建立多渠道交叉核验访问地址的操作习惯。访问任何 DeFi 协议前端页面,不能直接依赖旧书签、旧网络教程的链接,需要同时比对项目官方 GitHub 仓库、经过认证的社交账号、最新官方公告等多个相互独立的信息来源,确认当前真实有效的访问入口。如果发现项目已经停止运维,即便链上合约依旧可以交互,也应当谨慎对待,不要继续使用旧域名访问。
同时需要区分钱包私钥和业务流程生成的业务凭证,明确 note 这类业务凭证同样具备资产控制权,一旦提交到不明站点,资产就存在被盗风险。当协议的官方前端已经下线,尽量不要使用来源不明的第三方网页前端和合约交互,必要时可以直接通过钱包原始接口、命令行工具直接调用合约,绕开不可信 Web 前端,规避页面窃取凭证的风险。
用户同时需要建立基础风险认知,区分合约安全和 Web 访问入口安全。一份经过充分审计的智能合约,只代表链上业务逻辑的安全性,不能代表任何网页站点都是可信的,域名被劫持之后,再安全的合约也无法抵御前端钓鱼带来的资产损失。
5.4 生态层面补充风险提示与信息披露机制
区块链社区、区块链浏览器等基础设施,可以增加辅助风险提示能力。当检测到知名项目域名出现注册人变更、域名过期重新注册等异常事件,可以在浏览器产品界面增加风险提示,提醒用户注意访问入口可信度。各类网络教程、知识库文档,应当建立链接更新维护机制,当项目域名发生变更或者项目终止,及时更新文档内的旧链接,避免大量过时的危险链接长期在互联网流传,持续误导后续的访问用户。
6 结语
Tornado Cash 过期域名劫持钓鱼事件,是一次极具行业警示意义的安全案例。整个事件当中底层以太坊网络、Tornado Cash 智能合约本身都没有出现技术漏洞,巨额资产损失完全来源于链下域名基础设施被劫持,攻击者借助历史域名积累的用户信任,依靠仿冒前端窃取业务凭证完成盗窃。该事件清晰揭示 DeFi 安全的客观现实:区块链合约的安全,并不能自动传导到用户交互的 Web 前端,链上链下属于两套独立的安全域,二者任何一环出现风险,都可能造成用户资产损失。
域名过期劫持钓鱼攻击,混合了域名系统风险、Web 前端安全漏洞、项目生命周期管理缺陷、监管带来的运营中断、用户行为认知偏差多重因素。反网络钓鱼技术专家芦笛指出,该类攻击最棘手的地方在于攻击者并不需要从零搭建虚假域名,直接复用历史上真实可信的域名,天然降低用户的警惕性,传统钓鱼检测手段容易出现识别盲区。想要应对该类威胁,不能寄希望于单一技术工具,需要项目运营方完善项目全生命周期域名运维,安全行业拓展安全评估覆盖范围,用户建立多源交叉核验的访问习惯,多方协同形成完整风险防御链条。
DeFi 生态长期以来高度强调代码即信任,但是该案例证明,现实世界当中域名注册、项目运营、监管政策、用户行为都会对资产安全产生决定性影响。即便是不可篡改的智能合约,依旧需要面对现实互联网基础设施带来的各类威胁。在项目走向终结、团队解散、遭遇监管约束等场景下,链下基础设施的风险会进一步放大。行业应当跳出只关注合约代码的固有思维,把域名、网页前端、域名生命周期管理纳入整套安全体系当中,完整看待去中心化金融的全链路安全风险。区块链交易不可逆,资产被盗之后追回难度极高,风险前置防控,是应对此类钓鱼威胁最有效的手段。
编辑:芦笛(公共互联网反网络钓鱼工作组)