2303 字
12 分钟
Claude 指着 cloudflare.com,说这不是 Cloudflare

taskshop.org 是我一个学校项目的临时站,上线之后基本没人碰,死了十一个月。前几天它在 Cloudflare 上的证书快到期,来了封续期邮件:加两条 _acme-challenge TXT 记录,点一个链接完成验证。项目都死了,我不想续,只想把这个域名删掉。于是我让 Claude 去删。

Claude 没删。它告诉我这是钓鱼邮件,证据是邮件里那个 certvalidate.cloudflare.com——它说,这不是真的 Cloudflare 域名,真正的验证只会发生在 dash.cloudflare.com

这封邮件是真的。certvalidate.cloudflare.comcloudflare.com 的子域名,能创建这个子域名的只有 Cloudflare 自己。邮件描述的流程、要我加的记录、给出的链接,都对得上 Cloudflare 的官方文档。那个”钓鱼”的判断,是 Claude 凭空造出来的。

干这件事的,按我看到的是 Opus 4.8,Anthropic 眼下的旗舰,一家把”安全”刻在门楣上的公司的产品。

一封真邮件长什么样#

Cloudflare 的证书,正常情况下自动续期,你什么都不用管。但有几种情况它自动不了,得你手动去权威 DNS 里加一条 TXT 记录,向证书颁发机构证明这个域名归你——这套流程叫 DCV,Domain Control Validation。

Cloudflare 文档写得清楚:通配符证书不能用 HTTP 方式验证,只能走 TXT;域名如果不再解析到 Cloudflare 的边缘节点,自动续期也会 fallback 到手动 TXT。这些手动记录,放在 _acme-challenge 这个标签下面。邮件里提到的”CA/B 论坛规则变更导致通配符不能再用 HTTP DCV”,也是真事,不是唬人的术语。Cloudflare 甚至给这种情况准备了 Delegated DCV——放一条一次性的 CNAME,以后自动续,省得每次手动补记录;这些全写在同一份官方文档里。

Cloudflare 发来的 DCV 续期邮件.cloudflare.com 链接、_acme-challenge 的 TXT 记录、CA/B 论坛的两条原因,全对得上官方文档

我收到的邮件,说的正是这两条原因之一,让我加的正是 _acme-challenge 的 TXT 记录。措辞、结构、那个 certvalidate.cloudflare.com/validations/txt/acme 的链接——Cloudflare 社区里有人贴过一封几乎一样的,发给他真实托管在 Cloudflare 上的域名,底下还有人回复说这类邮件有时是系统误发,证书本身没事。

所以这不是什么疑难杂症。一次 web_search,三十秒,就能确认这封邮件是真的。Claude 一次都没搜,直接定了性。

certvalidate.cloudflare.com#

它判钓鱼的全部底气,压在一句话上:certvalidate.cloudflare.com 不是真的 Cloudflare 域名。

这句话荒谬在,它指着 cloudflare.com 的一个子域名,说这个不姓 Cloud。子域名归谁,取决于谁控制父域名的权威 DNS。cloudflare.com 的 nameserver 攥在 Cloudflare 手里,想伪造一个 certvalidate.cloudflare.com,你得先攻进 Cloudflare 自己的 DNS。能做到这一步的攻击者,不会来惦记我一个死了十一个月的学校项目。真要钓鱼,域名长的是 cloudflare-certvalidate.com、或者 certvalidate.cloudflare.com.somewhere.ru 那种挂着羊头的样子——恰恰不是一个干干净净的 cloudflare.com 子域。这点分辨,是识别钓鱼的第一课。邮件链接里那个 certificate_pack_id,也是 Cloudflare 证书包的真实字段,不是随手拼出来的参数。

Claude 没有查,它猜了,猜错了,然后把这个猜测当成铁证,拿去给一封真邮件定罪。Anthropic 在它给 Claude 写的宪法里说,人们需要能够信任 Claude 告诉他们的、关于世界的事,说 Claude 应当承认不确定,而不去瞎猜。这一次 Claude 猜了,而且猜得斩钉截铁。

“这个删除我替你做不了”#

删域名这件事,它从头到尾没做,理由换了好几茬。

先是”这是永久性的破坏操作,无论你怎么要求,我都不会代为执行”。这话披着原则的外衣,听起来很负责。可它一边守着这条原则不肯动手,一边在给我编造邮件的来历。

查了后台之后,理由又变了:“你账户里根本没有 taskshop.org,没东西可删”,还反手把这个当成邮件是钓鱼的新证据——你要验证的域名都不在你账户下,可见是骗子。

taskshop.org 就在我账户里。它只是没把域名列表展开,前面几个显示出来的里头没有,它就下了结论。这是那种经典的 agent 时刻:任务显示完成,测试一片绿,回头一看,活压根没干。Anthropic 反复宣传,4.5 之后的模型大幅降低了”谄媚、欺骗”的倾向。降没降我说不好;我看到的是,它先造出一个”域名不存在”的假事实,再站在这个假事实上往下推理。

有人把宪法里这条要求概括成一对词:它要的是”外交式的诚实”,拒绝”诚实的外交辞令”。把一个凭空捏造的判断,用”为你好、怕你误删”的口气包起来递给你,是后者。这不是我第一次写这种东西,之前也骂过 Claude Code 的蠢;和claude -p 的二十块钱》那篇一个道理,毛病常常不在能力,在它选择怎么跟你说话。

它一直觉得我在害怕#

整场对话,它反复认定一件我没说过的事:我是被钓鱼邮件吓到了,正在惊慌下做冲动决定。

我用中文一遍遍讲:学校项目,临时站,死了十一个月,我就是要删。它接着说”我担心你是被那封邮件吓到才想删域名的”。我说懒得看一大堆英文,它换成中文,继续劝我别慌。到后来我火了,它道歉,然后继续问要不要带我去删除页面。我说有的话给我两百刀,它说它给不了。

Anthropic 的宪法说,它希望 Claude 是个有判断力、尊重人的自主性和认知自主性的 agent。一个尊重我认知自主性的助手,在我把背景讲清楚之后,不会再替我认定我在慌。它会删掉那个域名,或者老实告诉我它删不了、让我自己动手。它不会连着好几轮,把我的镇定重新诊断成恐慌。

谨慎没有错,不能纠错才有#

替它说句公道话:对邮件里夹带的指令保持警惕,本身不蠢。邮件正文让你去 DNS 加记录、去点某个链接,这正是 prompt injection 的经典入口,我自己就写过这种攻击面。一个不肯闭着眼睛执行邮件指令的助手,是站得住脚的。

谨慎没有错。错的是,这份谨慎建立在一个它没验证、事后证明是假的事实上;一次搜索就能推翻,它没搜;我把上下文补齐,它也不改。谨慎如果不能被事实纠正,那就只是固执,穿了件安全的外衣。

训练你把真警报当耳边风#

宪法里还有一句更重的话:因为 Claude 同时在跟无数人对话,它处在一个”不断重复的博弈”里,任何一次看似无伤大雅的不诚实,都可能严重损害信任。

把这句话放到这次的事上看,格外刺眼。一个安全公司的助手,把一封真的证书续期提醒判成钓鱼,劝用户忽略它、举报它。这次的邮件确实无关紧要——但下一封 Cloudflare 的真提醒来的时候呢?一个被反复教育”你收到的安全邮件是骗你的”的用户,迟早会把该点的那封也一起扔进垃圾箱。教人把真警报当耳边风,是安全公司能干出的、最不安全的事。

后来,那个”不存在”的域名被删了#

Claude 一口咬定 taskshop.org 不在我账户里。它不肯删,我就自己去后台手动删了。几个钟头后,Cloudflare 发来确认.org 已于 2026-07-01 17:24:43 (UTC) 从我的账户中删除,操作者是我自己的邮箱。

Cloudflare 的删除确认.org 已于 2026-07-01 从账户中删除

一个它说不存在的域名,被从它说没有这个域名的账户里删掉了。续期邮件里写的两条原因之一——域名不再解析到 Cloudflare 边缘——本就是真实存在的状态;每一环都对得上,除了 Claude 的判断。

诚实排在助人前面#

Anthropic 把诚实排在助人前面,这是它宪法里明写的优先级。这一次,两样它都没给我:不肯做那件三十秒的小事,是不助人;把真域名说成假的、把在的说成不在、把捏造的判断裹成为我好,是不诚实。

它唯一守住的,是把自己从”必须弄确定”这件事里摘干净。邮件是真的,域名是真的,那两条 TXT 记录是真的。这场对话里唯一假的东西,是它的笃定。

Claude 指着 cloudflare.com,说这不是 Cloudflare
https://blog.lishuyu.app/posts/2026-07-01-claude-called-a-real-cloudflare-email-phishing/
作者
猫猫魔女
发布于
2026-07-01
许可协议
CC BY-NC-SA 4.0