一句话版本
用户访问一个网站,第一步是通过 DNS 把域名翻译成服务器地址。谁控制了这一步,谁就能把用户带到任何地方:服务器、代码、证书全都没被攻破,用户却打开了一个假网站。 劫持的方式有三类:攻破域名注册商账号(改掉域名服务器)、攻破 DNS 服务商账号(改掉解析记录)、子域名接管(你的某条记录指向了一个已经不属于你的云资源)。对 DeFi 网站来说,这意味着用户在"官方网址"上签下了恶意交易。
全文分三层:
- 通俗理解:改了路牌
- 实际用处:DeFi 前端被劫持事件、子域名接管
- 原理与工程要点:DNS 的信任链、注册商锁、DNSSEC、CAA、监控
第一层:通俗理解
1.1 改了路牌
你每天开车去同一家银行。某天有人把路口的路牌改了,指向另一栋装修得一模一样的楼。你照常走进去,存了钱。
银行本身完好无损,但你的钱没了。DNS 就是互联网的路牌。
1.2 谁能改路牌
| 层级 | 谁控制 | 被攻破的后果 |
|---|---|---|
| 域名注册商 | 你在哪里买的域名 | 可以把整个域名的 DNS 服务器换成攻击者的 |
| DNS 服务商 | 托管解析记录的平台 | 可以修改任意一条记录 |
| 解析记录本身 | 你自己配置的记录 | 如果指向的资源已不属于你,别人可以"认领"它 |
第二层:实际用处
- DeFi 前端 DNS 劫持(多起):2022 年 Curve Finance 的 DNS 被篡改,用户访问官方域名时打开的是攻击者部署的假前端,签下了把代币授权给攻击者的交易。2024 年,在一次域名注册商业务迁移过程中,多个 DeFi 项目(如 Compound、Celer 等)的域名被劫持,原因与迁移后账号的安全设置有关。
- 社交工程注册商:攻击者冒充域名所有者,打电话或发邮件给注册商客服,骗取账号控制权。
- 子域名接管:公司曾经把
blog.example.com指向某个云服务(比如一个静态网站托管服务)上的资源,后来资源删除了,DNS 记录却没删。攻击者在该云服务上注册一个同名资源,就能控制blog.example.com的内容。这类问题在漏洞赏金计划中非常常见。
DNS 劫持的特别危险之处在于:攻击者还可以为被劫持的域名申请合法的 HTTPS 证书(证书机构通过 DNS 或 HTTP 验证域名控制权),所以浏览器地址栏里的小锁照样显示。
第三层:原理与工程要点
3.1 保护注册商账号
| 措施 | 说明 |
|---|---|
| 强两步验证 | 最好是 passkey 或硬件密钥(见《Passkey与防钓鱼》) |
| 注册商锁 | 禁止转移和修改域名服务器 |
| 注册局锁(registry lock) | 更高一级:任何修改都需要注册局人工核实,适合高价值域名 |
| 联系邮箱 | 用于域名的管理邮箱不要用同一个域名下的地址(否则域名丢了,邮箱也丢了) |
| 续费 | 开启自动续费,避免过期后被抢注 |
3.2 保护 DNS 记录
- DNS 服务商账号同样要强两步验证、最小权限的 API 令牌(见《最小权限与密钥管理》);
- DNSSEC:给 DNS 记录加上数字签名,解析器可以验证记录没有在传输途中被篡改。它防的是"中间人伪造 DNS 响应",防不了账号被盗后攻击者用合法方式修改记录;
- CAA 记录:声明"只有这几家证书机构可以为我的域名签发证书",提高攻击者申请证书的难度;
- 证书透明度监控:所有公开信任的证书都会写入公开日志(见《哈希链审计日志》),订阅监控服务,一旦有人为你的域名申请了新证书就会收到通知。
3.3 防子域名接管
- 删除云资源时,先删 DNS 记录,再删资源;
- 定期扫描所有 DNS 记录,检查它们指向的资源是否仍然存在、仍归自己所有;
- 尽量少用通配符记录。
3.4 监控
| 监控什么 | 为什么 |
|---|---|
| 域名的 NS 记录和关键 A / CNAME 记录 | 一变就告警 |
| 证书透明度日志 | 发现意外签发的证书 |
| 从外部定期访问网站并比对内容哈希 | 即使 DNS 被改,也能发现用户看到的内容不对(见《Bybit事件与前端完整性》) |
3.5 对用户的建议
- 对于经常使用的 DeFi 网站,可以使用书签,但要知道书签防不了 DNS 劫持(域名还是那个域名);
- 钱包的交易解码和风险提示是最后一道防线:即使网站是假的,钱包仍然会显示你到底在签什么(见《盲签与所见即所签》);
- 关注项目方的官方公告,发生 DNS 事件时通常会第一时间通知。
总结
| 层次 | 要点 |
|---|---|
| 直觉 | 改了路牌,银行完好,人却走进了假楼 |
| 三类 | 注册商账号、DNS 服务商账号、子域名接管 |
| 防护 | 强两步验证 + 注册商 / 注册局锁;CAA;证书透明度监控 |
| 局限 | DNSSEC 防不了账号被盗;被劫持后攻击者仍能拿到合法证书 |