Chain Catcher
Chain Catcher
ChainCatcher 是一个综合性的区块链和加密货币信息平台,提供最新行业新闻和深入分析
资讯 / 专栏 / 文章详情

写代码可以交给 AI,域名(安全)可以交给谁?

作者:Yajin

10 月 31 日,十余个 DeFi 项目的网站相继被劫持。受影响的项目之一 Kintsu 在 X 上发文[1]说,它通过 Vercel 购买的域名在注册商层面被劫持了。这句话里有两个关键词,一个是 Vercel,一个是注册商。我们先从 Vercel 说起。

Vercel 是一家网站部署平台。开发者把写好的代码交给它,它负责构建和上线,再通过分布在各地的服务器把网页送到用户面前。Vercel 也是前端框架 Next.js[2] 背后的公司,在开发者中很流行,这次被点名的项目,网页大多就放在 Vercel 上。除了托管网站,Vercel 还卖域名,用户可以在同一个后台里买域名、管解析。

从我们查到的数据看,这些项目放在 Vercel 上的代码并没有被改动,被改的是域名指向哪里。

这件事值得每一家应用服务商关心,对数字资产服务商来说更是如此。这两年流行 vibe coding,也就是用自然语言描述需求,让 AI 把程序写出来。它大大降低了开发应用的门槛:用 AI 写好代码,交给 Vercel、Netlify、Cloudflare 这类部署平台一键上线,再在平台上一并买一个域名,几分钟就能拥有一个像样的网站。

门槛降低了,背后的原理却没有因此变简单。很多人并不清楚域名登记在谁那里,谁能修改它的指向,修改它需要什么钥匙。Vercel 只是其中一类平台,这些问题对所有一键上线的方式都成立。这篇文章想用尽量通俗的方式,把这几个问题讲清楚。

01一、一个网址是怎么被找到的

再来看 Kintsu 说的「注册商」。要明白注册商是做什么的,得先看一个网址是怎么被找到的。我们可以把网站想成一家商店。域名是店名,比如 example.com;服务器的 IP 地址是店的门牌号。用户只记得店名,所以需要有人把店名翻译成门牌号,翻译这件事就叫「域名解析」。

翻译过程涉及三个角色。

注册局像是总登记处。每一种后缀都有一家注册局,.com、.xyz、.finance 各有各的。注册局只记一件事:某个域名的「问路处」在哪里。

注册商像是替用户跑腿的中介。普通人不能直接去注册局登记,要通过注册商买域名、续费、修改登记信息。用户在注册商的后台,可以指定自己的域名由哪个「问路处」负责。

域名服务器(nameserver)就是「问路处」。它手里有一张表,写着店名对应哪个门牌号。这张表里的每一行叫一条解析记录。平时说的「改解析」,改的就是域名服务器上的这张表。

用户在浏览器里输入网址以后,浏览器先去总登记处问:这家商店的问路处在哪里?再去问路处问:门牌号是多少?最后按门牌号找过去,打开网页。

写代码可以交给 AI,域名(安全)可以交给谁?

浏览器先问注册局,再问域名服务器,最后按门牌号找过去

所以,如果有人想把顾客骗到自己的假店里,有两种办法。第一种办法是去问路处,把表上的门牌号改掉。第二种办法更隐蔽,是去注册商那里,把这家商店登记的问路处整个换成自己控制的,再在新的问路处写上假门牌号。用第二种办法时,店主去原来的问路处检查,表上一个字都没变,顾客却已经被带走了。

写代码可以交给 AI,域名(安全)可以交给谁?

两种办法:改问路处上的表,或者把问路处整个换成攻击者控制的

02二、一键买的域名,归谁管

了解了注册局、注册商和域名服务器,再回头看类似 Vercel 这样的部署平台。部署平台负责把写好的程序放到网上运行。为了让用户省事,很多部署平台把买域名、管解析也做进了自己的后台,用户从买域名到网站上线,从头到尾只和平台打交道。

可在平台背后,前面说的几个角色一个都没少。有的平台本身就是注册商,有的平台则是替用户去找注册商办理,Vercel 属于后者。我们查了 Kintsu 的域名,注册局登记的注册商是 Name.com,并不是 Vercel 自己。

这种「一站式」的方式很方便,代价是用户往往不知道自己的域名还有一个注册商,更不会去关心注册商这一层的安全。拿 Vercel 来说,它的后台和接口[3]里,域名服务器可以修改,转出域名用的授权码也可以获取。换句话说,谁掌握了平台账号或者它的接口权限,谁就有可能改掉域名的指向,甚至把域名转走。

很多项目对代码、对合约层层把关,域名却挂在一个账号下面,平时没人看,出了事也不知道该找谁。

到了 AI 时代,「一键」正在变成「零键」。Vercel 的命令行工具[4]已经支持脚本和 AI 助手在无人操作的情况下购买、续费域名。Vercel 还为 AI 助手提供了 MCP 接口(AI 助手调用外部工具的一种标准方式),其中和域名、DNS 相关的工具有 28 个[5]。也就是说,开发者对 AI 说一句「帮我把网站上线,配一个域名」,买域名、改解析这些事,AI 都可以替他做完。

开发者省掉的不只是点击,还有了解这些环节的机会:域名买在哪个账号下面,背后是哪家注册商,谁能修改它,很可能从头到尾都没有经过他的眼睛。

写代码可以交给 AI,域名(安全)可以交给谁?

一句话,AI 就替开发者买好了域名、配好了解析

03三、这次攻击者改了哪里

据公开报道[6],10 月 31 日当天,被点名的网站陆续增加到十余个。除了 Kintsu,还有 StonkFun、Pickle、Echelon、Origami、Fluxbeam、Stakepoint、SupSwap、Longbow、SHPRD、ApeX DeFi 等 DeFi 项目。

域名的登记信息是公开的,任何人都可以查询。我们查询了其中 11 个项目的域名,发现它们的注册商全部是 Name.com,其中 7 个在 10 月 31 日当天,注册局的登记有过修改。截至北京时间 31 日下午 6 点,仍有 5 个域名指向攻击者的服务器。

攻击者把前面说的两种办法都用上了。pickle.finance[7] 和 stakepoint.app 在 Vercel 的域名服务器上还留着一张表,表上写的仍然是 Vercel 自己的服务器地址,可见它们原来的问路处应该在 Vercel;但它们在注册局登记的问路处,31 日 UTC 凌晨 1 点多被改成了 Name.com 的域名服务器,新问路处上写的门牌号是 31.56.52.52。

另一种情况是,fluxbeam.xyz、supswap.xyz 和 apexdefi.xyz 的问路处本来就在 Name.com,注册局的登记从今年 2 月或 5 月以后就没有改过,问路处上的表现在写的门牌号却同样是 31.56.52.52,可以推断被改的是表本身。该地址登记在一家名为 Snowcore[8] 的公司名下,IP 段的登记国家是荷兰,与 Vercel 无关。

写代码可以交给 AI,域名(安全)可以交给谁?

不同项目的网址,都被指向了攻击者控制的同一个地址

其余几个域名,有的已经改回了正常的服务器,有的换到了别的服务商,还有的正在把域名转出,看起来是项目方在抢救。

两种办法有一个共同点:都要能在注册商这一侧做修改。攻击者是从 Name.com 本身、Vercel 和 Name.com 之间的对接,还是从项目方各自的账号拿到的权限,公开数据还看不出来。截至我们查询时,Vercel 和 Name.com 都还没有公开说明。

Kintsu 在公告里提到,修复迟迟无法生效,这可能和缓存有关。各地的解析服务器会把问路处的信息缓存一段时间,常见的是一个小时左右。项目方把登记改回来以后,一部分用户的电脑还在用旧答案,继续被带到假店里。这一点是我们的推测,还没有得到证实。

04四、钥匙不只是密码

前面提到,攻击者从哪里拿到了注册商这一侧的权限,现在还没有定论。不管入口在哪里,能改域名的,说到底都是某一把钥匙。说到钥匙,很多人想到的是账号密码和验证码。用 AI 写程序、自动化部署的人,手里其实还有另一类钥匙:访问令牌(token)。

令牌是一串字符,程序拿着它,就能代表用户调用平台的接口,不需要密码,也不需要验证码。以 Vercel 为例,令牌在创建时要选择权限范围[9]:可以只管一个项目,可以管一个团队的所有项目,也可以选「整个账号」,拿到全部权限。创建时还要选择过期时间,过期以后令牌自动失效。范围选得越大,令牌一旦泄露,损失也越大。

令牌泄露的途径,比很多人想象的多:

• 写进代码或配置文件。 令牌被写进代码,一起提交到公开的代码仓库,或者打包进前端,任何人都能看到。

• 交给 AI 编程助手。 编程助手为了帮用户部署,会读取项目里的配置文件,或者直接拿到用户贴进对话的令牌;通过 MCP 接入部署平台的助手,本身就握着修改域名和解析的权限。这些内容会随着对话发送出去,助手如果读到了被人动过手脚的网页或文档,还可能被诱导执行不该执行的操作。

• 经过中转站。 一些用户为了便宜或方便,不直接调用 AI 厂商的接口,而是使用第三方的「中转站」。对话内容全部经过中转站,其中如果夹带了令牌,中转站的运营者能看得一清二楚。

• 接入各种插件和集成。 每接入一个第三方服务,就多了一个保管钥匙的地方。

写代码可以交给 AI,域名(安全)可以交给谁?

能改域名的令牌,可能从这些地方泄露

需要说明的是,这次事件的入口还没有定论,我们并不是说它是由令牌泄露引起的;只是在 AI 写程序越来越普遍的今天,能修改域名服务器和解析记录的令牌,值得和私钥一样认真保管。

05五、为什么涉及资产的网站被劫持特别危险

普通网站被劫持,用户可能会在假页面上泄露账号密码。凡是涉及资产的服务,比如交易所、钱包、支付机构、DeFi 应用,域名一旦被劫持,后果往往更直接:用户在假页面上的每一步操作,都可能变成实实在在的资产损失。

数字资产尤其如此。用户在 DeFi 网页上点击「授权」「兑换」「质押」,网页把一笔交易递给钱包,用户在钱包里点确认。网页递过来的是什么,很多用户看不懂,只能相信网址本身。一个被劫持的网址,递过来的可能是一笔把代币授权给攻击者的交易,签下去,攻击者随时可以把钱转走。链上的转账一旦完成,几乎无法追回。

支付机构同样如此。用户在支付页面上填写卡号和验证码,或者按页面显示的收款地址付款,假页面只要换掉收款信息,钱就会落到攻击者手里。用户看到的域名、页面、流程都和平时一模一样,很难察觉。

在我看来,AI 时代的安全注意力需要挪一挪位置。代码越来越多由 AI 来写,团队把安全精力集中在代码审查和合约审计上,这没有错,但用户到达一个网站,还要经过注册局、注册商、域名服务器和部署平台。这条路同样是安全的一部分,而这些环节恰恰是 AI 替人做得最多、人了解得最少的地方。

后台系统和合约做得再严密,只要这条路上有一个环节被攻破,用户就会在一个假页面上,亲手把资产交出去。

06六、给应用服务商和数字资产服务商的建议

查清域名在谁手里。 查一查自己的域名登记在哪家注册商,域名服务器在哪里,相关账号由谁管理。在平台上一键买的域名,同样要知道背后是谁。

锁住域名。 开启注册商锁,防止域名被随意转走。重要项目可以申请注册局锁,修改问路处等关键信息时,需要人工核验身份。

保护账号,也保护令牌。 账号使用硬件安全密钥做多因素认证。令牌只给需要的最小权限,并设置过期时间。令牌不写进代码,不贴进 AI 对话,也不经过来路不明的中转站。不用的令牌要及时删除。

给 AI 助手单独的钥匙。 让 AI 助手帮忙部署时,给它单独创建令牌,只开放当前项目需要的权限,设置较短的过期时间。买域名、改域名服务器、转出域名这类操作,应该由人来确认,而不是交给 AI 自动完成。

盯住变化。 域名服务器、解析记录、域名状态,任何一项发生变化都应该收到提醒。攻击者在假网站上启用 HTTPS,通常需要为该域名申请新证书,而公开签发的证书都有公开记录,监控这些记录也能及早发现异常。

提前准备应急方案。 想好域名出事时怎样第一时间通知用户,怎样找到注册商的真人客服。Kintsu 在公告里抱怨客服只是一个机器人。遇到这种情况,提前准备好的人工渠道,可能决定止损的速度。

07七、上线越容易,越要清楚钥匙在谁手里

AI 让写代码变得容易,也让上线、买域名、配解析变得容易。门槛降下来了,责任却没有跟着减轻。用户输入一个网址,就是把信任交给了网址背后的整条路,以及手里握着钥匙的每一个人和每一个程序。

这些环节平时看不见,也很少有人去想,可在用户眼里,它们和服务商自己写的代码一样,都是服务的一部分。任何一环失守,用户都会把账算在服务商头上。

工具替我们做的事情越来越多,我们还清楚自己把哪些钥匙交了出去吗?

引用链接

[1] 发文: https://x.com/Kintsu/status/2116382643017101513 [2] Next.js: https://nextjs.org [3] 接口: https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar [4] 命令行工具: https://vercel.com/docs/cli/domains [5] 28 个: https://vercel.com/docs/mcp/vercel-mcp/tools [6] 公开报道: https://cryptoadventure.com/stepdrainer-hits-12-crypto-sites-in-dns-hijack-wave/ [7] pickle.finance: https://rdap.org/domain/pickle.finance [8] Snowcore: https://rdap.db.ripe.net/ip/31.56.52.52 [9] 权限范围: https://vercel.com/kb/guide/how-do-i-use-a-vercel-api-access-token