平板电脑运行银行域名的 DMARC 查询,显示 p=none,背景中的笔记本电脑上打开着银行安全警告

read receipts

那把人人炫耀的挂锁正挂在敞开的门上

你的银行有 DMARC。你的航空公司也有。它基本上形同虚设,而证明这一点的设置只有一个词。

·3 分钟

大约十分之九发布 DMARC 记录的域名都将其设置为 p=none — 这个模式会告诉世界上的所有人谁在冒充你,然后直接放行他们。Red Sift 对过去十年的分析表明,实际的 DMARC 强制执行多年来仅占个位数百分比,即使是乐观的供应商数据仍然显示绝大多数记录都是 none。

这个词埋藏的笑话就在这里。DMARC — 在 RFC 7489 中有详细说明 — 是一项决定接收邮件服务器在收到声称来自你的域名但未通过底层检查的邮件时应该 做什么 的技术。这些检查包括 SPF(这台服务器被允许代表你发送邮件吗?)和 DKIM(这条邮件是否由你在密码学上签署?)。DMARC 在上层发布裁决。p=none 是那种不是裁决的裁决。它说:注意欺诈,记录欺诈,给我寄一份关于欺诈的报告 — 然后照样投递。

一个电池被拔掉的烟雾报警器仍然挂在天花板上。看起来像是保护。拍起来也像是保护。只是当厨房着火时,它就不会响。

真正能起作用的两个设置是 p=quarantine,它把失败的邮件扔进垃圾箱,以及 p=reject,它告诉接收方在邮件到达前退回。这就是全部意义所在。一个伪造 billing@yourbank.example 的诈骗犯只有在那家银行发布了 reject 时才会遇到障碍。如果银行发布的是 none — 大多数都是 — 伪造邮件会直接进入收件箱,看起来完全就像真邮件,甚至带着直接从真实网站拉下来的真实徽标。

为什么人人都停留在 none?因为 none 是安全的第一步,而安全的第一步往往会成为永久的地址。你应该从那里开始,阅读报告,找出每一个代表你发送邮件的合法服务 — 薪资供应商、营销平台、那个没人记录的售票工具 — 让他们都正确签署,然后 升级到 reject。最后这一步才是可怕的。在还有流浪的未认证发件人的情况下切换到 reject,你就把自己的发票送进了黑洞。所以团队发布记录,告诉审计员已经处理好了,然后就再也不回来完成。报告邮件堆积如山,无人阅读。电池一直没装回去。

受害者是你,阅读这条邮件的人。当一个你信任的品牌把 DMARC 设置为 none 时,"它来自他们真实的域名"就不再意味着什么,因为罪犯的伪造品通过了同样的视觉测试。这正是我们在 xmail 接收端监控的那个缺口:一条邮件可能彻底失败身份验证,却仍然以你的公用事业公司的身份到达,因为那家公用事业公司从未告诉互联网要拒收假冒品。

所以这是一个你可以在大约十五秒内运行的测试。拿任何一个曾经用"可疑活动"邮件吓到你的品牌 — 打开一个公共 DMARC 查询工具,粘贴进他们的域名。如果策略显示 p=none,那家公司就是在要求接收方注意冒充行为然后什么都不做。每天有数百万个域名在悄悄提出这个要求。

修复方法不是更多的技术。而是有勇气把一个词从 none 改成 reject。报警已经看到了烟。只是需要有人把电池装回去。

DMARC records stuck at p=none (no enforcement)

来源

  1. IETF — RFC 7489, the DMARC specification defining p=none, quarantine, and reject
  2. Red Sift — State of DMARC adoption and enforcement analysis
  3. Valimail — Annual email fraud / DMARC enforcement reports

← 全部文章