mt logoMyToken
ETH Gas
EN

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

Favoritecollect
Shareshare

写代码可以交给 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 只是其中一类平台,这些问题对所有一键上线的方式都成立。这篇文章想用尽量通俗的方式,把这几个问题讲清楚。

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

翻译过程涉及三个角色。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Disclaimer: This article is copyrighted by the original author and does not represent MyToken’s views and positions. If you have any questions regarding content or copyright, please contact us.(www.mytokencap.com)contact
More exciting content is available on
X(https://x.com/MyTokencap)
or join the community to learn more:MyToken-English Telegram Group
(https://t.me/mytokenGroup)