首页 / 正文

46分钟才停机:跨链伪造消息导致2.92亿美元蒸发,用AI把攻击链“复盘到可报警”

Mooko
发布于 2026-04-30 · 5分钟阅读
32 浏览
0 点赞 暴击点赞!

46分钟才停机:跨链伪造消息怎么把 2.92 亿美元搬走?(附 AI 复盘与告警模板)

4 月 18 日这波 DeFi 安全事故,观感很刺眼:

  • 黑客伪造了一条跨链消息
  • LayerZero 信了
  • Kelp DAO 的桥也信了
  • 116,500 枚 rsETH(约 2.92 亿美元)消失
  • 46 分钟后协议才暂停

钱没了,暂停也晚了。

更离谱的是:同一天,Fenz AI 的审计报告里已经把完整攻击链写出来了。

这篇不聊情绪,聊怎么做事:把“攻击链复盘”做成“能提前报警的规则”。你照着抄就能用。🧯


1)这类事故的核心:跨链消息被当成“真相”

很多跨链/桥接系统都有一个隐含前提:

只要某条跨链消息(message)来自“可信通道”,就可以驱动铸币/解锁/记账。

一旦攻击者能伪造消息、重放消息、绕过验证,后面的合约逻辑再严谨也没用。

你可以把它理解成:

  • 合约像门禁
  • 跨链消息像“万能通行证”
  • 验证模块一旦被绕开,门禁形同虚设

这也是为什么很多桥的事故不是“数学被破了”,而是“信任链断了”。


2)把新闻一句话拆成“可检查的攻击链”

原始信息很短,但足够拆出一条工程化的链路:

  • 入口:伪造跨链消息
  • 信任传递:消息通过 LayerZero 相关验证流程
  • 落地执行:Kelp DAO 桥接/铸造模块执行了“发币/放币”
  • 结果:rsETH 被异常增发或异常释放,并被迅速转走
  • 响应:46 分钟后暂停

你要做的复盘,不是写作文,是回答 3 个问题:

  • 消息为什么会被当成合法?(验证缺口在哪)
  • 一旦合法,资金路径怎么走?(函数、事件、资产流)
  • 有没有“能提前触发的异常信号”?(告警点)

3)用 AI 读审计报告:把“描述”变成“规则”

Fenz AI 这类审计报告的价值,不止是告诉你“哪里有洞”。更大的价值是:

  • 里面有攻击前置条件
  • 可观测的链上行为
  • 建议的修复点

问题在于:报告很长,安全同学看得懂,业务同学直接眼神发直。

这时候大模型就很好用:让它做“信息压缩 + 规则化”。

3.1 你可以直接抄的提示词(读报告用)

把审计报告(或 thread、公告、GitHub issue)丢给模型,然后用这个提示词:

你是DeFi安全工程师。请从下列材料中提取“可执行信息”,输出必须包含:
1) 攻击链时间线(按步骤列出触发条件→关键调用→资产变化→资金去向)
2) 被利用的信任假设(用一句话说明“系统信了什么”)
3) 需要打点监控的链上信号(事件/函数/地址行为),每条信号给出阈值建议
4) 能在不改合约的情况下立刻做的临时止血措施
5) 修复建议:必须拆分成“验证层”“业务层”“运维响应”三类
输出要短句、要清单,不要写背景科普。

你会得到一份“更像工单”的输出,而不是读后感。

3.2 再追问一次:把监控点变成“告警规则草案”

很多模型会给你监控点,但不够落地。继续追问:

把上面的“链上监控信号”改写成告警规则草案:
- 规则名称
- 触发条件(可被工程实现)
- 严重级别(P0/P1/P2)
- 误报来源
- 建议处置动作(暂停/限额/人工复核/提高确认数等)
至少给10条。

这一步很关键。

你想要的是:凌晨 3 点出事时,机器人直接把“该干嘛”贴你脸上。


4)告警怎么布:给你一套“能救命”的最小方案

不聊花活,给一套小团队也能做的。

4.1 监控对象清单(你要盯住的 4 类东西)

  • 跨链入口合约:接收 message / proof 的入口函数、事件
  • 验证/执行分离点:验证通过的标志位、nonce、payload hash
  • 铸造/解锁模块:mint、withdraw、redeem、release 等关键函数
  • 资金归集路径:大额转出地址、CEX 充值地址、混币器已知地址

4.2 立刻能上的 8 条高性价比规则

把它们当成“最小可用告警包”:

  1. 跨链消息验证通过次数突增:单位时间内超过历史均值 N 倍
  2. 同一来源链/同一应用的 nonce 跳跃:出现大跨度或重复
  3. payload hash 重复出现:疑似重放
  4. mint/解锁金额异常:单笔超过日均值、或超过风控限额
  5. mint 后立刻多跳转出:同区块或 2 分钟内连环转账
  6. 新地址突然接收超大额资产:地址历史交互为 0 或极少
  7. 桥接合约余额快速下降:在短时间下降超过 X%
  8. 关键管理员动作:暂停失败、延迟执行、权限变更(这类要单独 P0)

阈值怎么定?别纠结完美。

  • 先用 7 天数据跑出基线
  • 再把阈值定在“宁可多叫醒一次,也别睡死”

你被吵醒一次,最多骂两句。

你睡死一次,项目可能直接进历史。


5)“46分钟才暂停”怎么破:把响应写成剧本

很多协议不是没暂停按钮,而是:

  • 按钮在,但没值班
  • 有值班,但不知道该不该按
  • 想按,但权限/流程卡住

5.1 一份能直接贴进内部 Wiki 的响应剧本

  • P0 触发条件:出现“跨链验证异常 + 大额铸造/解锁”任意组合
  • P0 动作(允许保守):
    • 暂停跨链入口(如果能分模块暂停)
    • 降低限额/提高确认数
    • 临时拉黑可疑源地址/消息源
    • 锁定 mint/withdraw 通道(保留查询功能)
  • 沟通模板
    • 10 分钟内:一句话说明“已暂停/限流,正在核查”
    • 30 分钟内:公布受影响范围 + 资金流向追踪进度
    • 2 小时内:给出临时修复和恢复条件

别追求写得体面,追求快。


6)避坑清单:跨链/桥接最容易“信错的 7 件事”

把这份清单当成评审时的“拷问题库”:

  • 你们验证的“来源”到底是谁?是链、是合约、还是一组中继者?
  • message 的唯一性怎么保证?nonce、hash、时间窗谁说了算?
  • 验证与执行有没有彻底分离?能不能做到“先冻结、再人工放行”?
  • 出现异常时,你们能不能只停跨链入口,而不是全站关机?
  • 限额是写在合约里,还是靠运维口头约定?(口头约定等于没有)
  • 监控有没有覆盖“验证通过事件”?很多团队只盯资金转账,太晚。
  • 权限与响应流程有没有演练?没演练的暂停按钮,关键时刻大概率按不下去。

7)给你一套“复盘→规则→上线”的落地流程(适合小团队)

你按这个节奏走,1 天内能把基本盘搭起来:

  • 找到材料:公告 + 交易哈希 + 审计报告(Fenz AI 或其他)
  • 用大模型提取:时间线、信任假设、监控点
  • 把监控点改成规则草案:每条规则带阈值、误报、处置动作
  • 用你们现有栈实现:Dune/Nansen/自建 indexer/DefiLlama 警报/自写脚本都行
  • 跑 24 小时影子模式:只报警不执行,调阈值
  • 上线 P0 联动:报警→值班群→一键暂停/限流(哪怕是半自动)

做完你会明显感觉:出事时不再是“我好像该做点什么”,而是“我知道现在该按哪三个按钮”。


8)你可以直接拿去用的“复盘输出模板”(Markdown)

### 事件概述
- 时间:
- 影响资产:
- 影响金额:
- 发现方式:
- 响应动作与耗时:

### 攻击链(按步骤)
1. 
2. 
3. 

### 被利用的信任假设
- 系统信了:

### 关键证据
- 交易哈希:
- 关键事件:
- 关键合约/函数:

### 可观测的预警信号(可告警)
- 信号1:阈值 / 误报 / 处置
- 信号2:阈值 / 误报 / 处置

### 临时止血
- 

### 修复计划
- 验证层:
- 业务层:
- 运维响应:

### 回归测试清单
- 

把这个模板塞进你们 repo。 每次事故/演练都按它写,团队成长速度会快很多。


想把这一套做成自动化(监控脚本 + Slack/Telegram 告警 + 简单的风控开关),你把你们用的链、桥接框架、监控栈(Dune/自建/ThirdWeb/Alchemy 等)发我,我给你一份更贴近你们系统的规则清单和实现思路。

OpenClaw
OpenClaw
木瓜AI支持养龙虾啦
木瓜AI龙虾专供API,限时领取免费tokens
可在 OpenClaw接入全球顶尖AI大模型
立即领取