返回 Web3 笔记
Day 56

Day 56:安全事件响应流程

深度研究安全事件响应 SOP 和 Euler Finance 被黑事件($197M 全额追回),产出面试题答案"被攻击如何应对"

2025-02-25
Web3安全事件响应EulerDeFiDay56Week8

Day 56:安全事件响应流程

日期:2026-03-12 主题:安全事件响应 SOP,深度研究 Euler Finance 被黑事件,产出面试题答案"被攻击如何应对"


今日目标

类型内容
学习安全事件响应的标准流程(SOP)、各角色职责、通信策略
实操研究 Euler Finance 2023 年被黑事件的完整时间线和应对方式
产出面试题答案:"某协议被攻击,你作为 PM 如何应对?"

一、Web3 安全事件响应框架

1.1 事件响应生命周期

┌──────┐   ┌──────┐   ┌──────┐   ┌──────┐   ┌──────┐   ┌──────┐
│ 检测  │ → │ 评估  │ → │ 遏制  │ → │ 修复  │ → │ 恢复  │ → │ 复盘  │
│Detect│   │Assess│   │Contain│  │ Fix  │   │Recover│  │Review│
└──────┘   └──────┘   └──────┘   └──────┘   └──────┘   └──────┘
  分钟内      <1小时     <2小时     数小时-天    数天-周     事后1-2周

每一步延迟 = 更多资金损失
速度是安全事件响应的第一要素

1.2 各阶段详解

Phase 1:检测(Detection)— 分钟级

检测来源:
├── 内部监控系统
│   ├── TVL 异常下降告警
│   ├── 大额交易告警
│   ├── 合约异常调用告警
│   └── 价格异常偏离告警
│
├── 外部发现
│   ├── 白帽黑客报告(Bug Bounty)
│   ├── Twitter/社区用户发现
│   ├── 安全公司告警(PeckShield/SlowMist 等)
│   └── 区块浏览器异常数据
│
└── 链上监控工具
    ├── Forta(实时监控机器人)
    ├── OpenZeppelin Defender
    ├── Tenderly Alerts
    └── 自建监控系统

Phase 2:评估(Assessment)— <1小时

需要快速回答的问题:
├── 1. 发生了什么?(攻击类型)
│   ├── 闪电贷攻击?
│   ├── 重入攻击?
│   ├── 预言机操纵?
│   ├── 治理攻击?
│   └── Admin key 泄露?
│
├── 2. 影响范围多大?
│   ├── 受影响的合约/资金池
│   ├── 估计损失金额
│   ├── 受影响用户数
│   └── 攻击是否仍在进行?
│
├── 3. 攻击者是谁?
│   ├── 攻击地址
│   ├── 资金流向追踪
│   └── 是否可识别身份?
│
└── 4. 能否阻止?
    ├── 合约是否可暂停?
    ├── 是否有紧急多签?
    └── 是否需要协调其他协议?

Phase 3:遏制(Containment)— <2小时

立即行动:
├── 暂停合约(如有 Pause 功能)
├── 暂停前端(防止更多用户受损)
├── 联系中心化交易所冻结攻击者地址
├── 联系稳定币发行方(Tether/Circle)冻结 USDT/USDC
├── 通知依赖本协议的其他协议
└── 发布初始公告:"我们已知悉安全事件,正在调查"

二、PM 在安全事件中的角色

2.1 PM 不写代码,但要做这些

PM 在安全事件中的核心职责:

1. 通信协调(最重要)
├── 起草对外公告
├── 协调内部信息同步
├── 管理社区情绪
└── 对接媒体/KOL

2. 影响评估
├── 受影响用户规模
├── 受影响功能范围
├── 业务影响程度
└── 声誉影响评估

3. 补偿方案设计
├── 确定受损用户名单
├── 设计补偿方案
├── 推动治理投票
└── 监督补偿执行

4. 改进推动
├── 推动事后复盘
├── 提出产品层面的安全改进
├── 更新安全相关 PRD
└── 优化应急响应 SOP

2.2 通信策略

时间通信内容渠道注意事项
发现后 30 分钟"我们已知悉安全问题,正在调查"Twitter + Discord不要给细节,避免更多攻击
2-4 小时"已暂停合约,正在评估影响"同上 + 博客给出大致影响范围
12-24 小时详细情况更新 + 初步补偿计划全渠道透明但谨慎
3-7 天完整事后报告博客 + 治理论坛技术细节 + 补偿方案
2-4 周补偿执行 + 改进措施落地治理 + 社区兑现承诺

2.3 通信原则

✅ Do:
├── 快速响应(即使没有完整信息)
├── 保持透明(承认问题、不淡化影响)
├── 展示行动(已经做了什么、接下来做什么)
├── 给出时间表(何时会有下一次更新)
└── 承担责任(不甩锅给用户或第三方)

❌ Don't:
├── 沉默不回应(最致命的错误)
├── 过早公布技术细节(可能被利用)
├── 指责用户("你不应该用这个功能")
├── 过度承诺("我们保证追回所有资金")
└── 删除社区讨论/屏蔽提问者

三、案例研究:Euler Finance 被黑事件

3.1 事件概览

维度详情
时间2023年3月13日
损失~$197M(当时 DeFi 历史第六大)
攻击类型闪电贷 + donate 函数漏洞
结果攻击者归还全部资金 ✅
耗时从被攻击到全额追回:23天

3.2 完整时间线

Day 0 — 2023年3月13日:攻击发生
├── 08:56 UTC:攻击者执行第一笔攻击交易
├── 09:01 UTC:PeckShield 在 Twitter 发布告警
├── 09:05 UTC:Euler 团队开始调查
├── 09:15 UTC:确认攻击,损失约 $197M
├── 09:30 UTC:Euler 发布第一条推文确认事件
├── 10:00 UTC:暂停 Euler 合约(通过治理模块)
├── 10:30 UTC:通知 Circle(冻结攻击地址的 USDC)
│             成功冻结 ~$34M USDC
├── 12:00 UTC:详细情况通报发布
└── 当天关键决策:
    ├── 暂停合约 ✅
    ├── 冻结稳定币 ✅
    ├── 不公布攻击技术细节 ✅(避免模仿攻击)
    └── 聘请 TRM Labs 追踪资金 ✅

Day 1-5 — 追踪与谈判
├── Day 1:攻击者将部分资金发送到 Tornado Cash
├── Day 1:Euler 通过链上消息联系攻击者
│          "我们知道你是谁。归还资金可获得赏金,否则会面临法律行动"
├── Day 2:Euler 宣布 $1M 赏金悬赏攻击者信息
├── Day 3:攻击者开始发送小额 ETH 回 Euler 部署者地址
│          → 这是一个积极信号
├── Day 5:攻击者在链上发送消息:"I want to do the right thing"
└── 关键策略:
    ├── 软硬兼施:赏金+法律压力
    ├── 保持沟通渠道开放
    └── 不公开敌对言论

Day 6-23 — 资金归还
├── Day 6-10:攻击者分批归还 DAI 和 wstETH
├── Day 11:攻击者归还约 $100M 资产
├── Day 15:攻击者归还大部分剩余资产
├── Day 20:Euler 确认已追回 ~$197M(几乎全部)
├── Day 23:最终和解完成
│            攻击者保留了约 $200K 作为"白帽赏金"
└── 关键因素:
    ├── 攻击者可能被识别身份 → 法律压力
    ├── Tornado Cash 制裁 → 资金难以清洗
    ├── Euler 团队态度专业而非激进
    └── 链上追踪技术的进步

3.3 Euler 做对了什么 & 做错了什么

✅ 做对了:
├── 快速响应:攻击后30分钟内发布声明
├── 暂停合约:限制进一步损失
├── 稳定币冻结:联系 Circle 冻结 $34M USDC
├── 专业追踪:聘请 TRM Labs 链上追踪
├── 谈判策略:软硬兼施,保持沟通
├── 透明通信:持续更新社区
├── 不公开敌对:没有在Twitter上骂攻击者
└── 完整复盘:发布详细事后报告

❌ 可以改进的:
├── donate 功能没有充分的安全评审
├── 缺少实时异常监控(由外部先发现)
├── 多份审计都没有发现这个漏洞
└── 没有合约暂停的快速通道(用了治理模块,不够快)

四、面试准备

问题:某协议被攻击,你作为 PM 如何应对?

30秒版本: 分六步走。第一,30分钟内发布初始声明告知社区。第二,协调技术团队暂停合约并评估损失。第三,联系稳定币发行方和 CEX 冻结攻击者资金。第四,保持每4-6小时社区更新。第五,协调补偿方案设计和治理投票。第六,事后2周内发布完整复盘报告。PM 的核心职责是通信协调——保持透明、展示行动、不过度承诺。

2分钟版本

即时响应(0-1小时)

  • 确认事件真实性 → 启动 War Room
  • 协助评估影响范围(受影响用户数、金额、功能)
  • 起草并发布第一条声明:"我们已知悉安全事件,正在紧急调查。已暂停受影响功能。将在 X 小时内提供更新。"
  • 关键原则:快速发声 > 等信息完整

短期应对(1-24小时)

  • 持续协调信息同步(技术调查↔通信↔法务)
  • 每4-6小时发布社区更新
  • 整理受损用户数据,为补偿做准备
  • 管理社区情绪:保持透明、承认问题、不删帖不屏蔽

中期处理(1-7天)

  • 设计补偿方案(国库资金/代币增发/IOU)
  • 推动治理投票通过补偿方案
  • 协助准备事后报告
  • 规划产品层面的安全改进

长期改进(1-4周)

  • 发布完整事后报告(时间线+技术分析+改进措施)
  • 推动安全改进落地(更好的监控/审计/应急流程)
  • 评估声誉恢复策略

Euler 案例佐证:Euler 30分钟内发声、暂停合约、冻结稳定币,最终23天追回全部 $197M。关键是专业的通信策略——不敌对、不沉默、持续透明更新。

追问准备

  • Q:如果资金追不回来怎么办?→ 三个选项——国库补偿(如果资金充足)、代币增发稀释补偿(需治理投票)、IOU 代币未来偿还。最差情况下也要给用户一个交代和时间表
  • Q:如何防止类似事件再发?→ 四个层面——加强审计(多家交叉审计)、实时监控(Forta/Defender)、合约增加 Pause 快速通道、定期安全演练
  • Q:暂停合约会不会造成更大恐慌?→ 短期恐慌 < 持续被盗。暂停时必须同时发布声明解释原因。Euler 暂停后价格确实下跌,但追回资金后恢复了大部分信心
  • Q:PM 和安全团队的分工?→ 安全团队负责技术调查和修复,PM 负责通信协调、影响评估、补偿设计。PM 不需要理解攻击细节,但需要能把技术问题翻译成用户能理解的语言

参考

  • Euler Finance 事后报告
  • Rekt News:rekt.news
  • Forta Network:forta.org
  • OpenZeppelin Defender
  • 博客笔记:/blog/day56-security-incident-response

完成后

Day 57:开发交易模拟器(Gas + 滑点估算),代码提交。