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 + 滑点估算),代码提交。