[ 标准和DMARCbis ]

修改RFC 9990的聚合报告解析器

保留当前聚合报告的结构和含义,同时提供遗留、扩展、重复和格式错误的输入显式有界处理。

由EmailAuth研究团队提供 · 6 分钟阅读

[ 要点 ]

  • dmarc-2.0 XML 命名空间和 version=1.0 元素不会更改DNS v=DMARC1.
  • 将原始身份验证结果与DMARC对齐和策略部署分开。
  • 未知的扩展、重复的信息和格式错误的输入需要显式处理,而不是静默强制。
在此页面上

将解析器升级视为数据契约更改

报告收集器可以继续显示图表,同时失去更新的聚合格式旨在承载的区别。一个 RFC 9990 因此,迁移需要的不仅仅是接受新文件名或忽略验证错误。定义识别哪些线路格式、它们的字段如何映射到内部模型以及在更改生产摄取之前如何处理不兼容或可疑的输入。

将源接收、解压缩、XML 解析、模式解释和聚合作为单独的阶段。每个都应该产生有限的结果并保留足够的来源用于诊断。本文提出了该设计及其测试清单。它不提供已部署的解析器、执行的固定装置或任何现有收集器符合新规范的证据。

无需更改DNS版本即可识别格式

RFC 9990附录 A 使用命名空间 urn:ietf:params:xml:ns:dmarc-2.0 定义当前 XML 模式。在第3.1.1.2节中,可选版本元素的值为 1.0 。这些标识符描述了报告格式;两者都不意味着域应该在DNS中发布v=DMARC2 。这 DMARC 政策版本仍然受 RFC 9989第 4.7 节.

兼容性设计应识别与当前配置文件分开的受支持的旧配置文件。保留选择的配置文件及其原因。不要重命名不熟悉的命名空间以使输入验证,静默插入缺少的必填字段或仅仅因为根元素被命名为反馈而将旧报告重新解释为当前报告。未知的输入应该收到明确的不支持或隔离的结果。

根据适当的访问和保留策略保留原始报告字节以及摘要和标准化解释。如果稍后的解析器更正改变了结果,则该分离使得重新处理可以审查。它还可以防止标准化记录被误认为是记者发送的内容。

保留政策背景和一致性意义

当前的policy_published结构包括可选的discovery_method和测试信息。发现可以报告为 psl 或 treewalk,测试则带有 t 值。缺少的可选字段并不能证明特定的实现版本。 RFC 9990第3.1.1.5节 定义这些字段及其范围。

将policy_evaluated 与auth_results 分开。前者记录DMARC相关 结盟 结果和处置;后者在DMARC解释之前携带身份验证结果。一个原始的 DKIM 在标准化过程中,来自不相关域的传递不得提升为对齐传递。保留覆盖原因,而不是更改身份验证结果以匹配最终处置。第3.1.1.9和3.1.1.11节描述了这种分离。

当前DKIM结果条目需要 选择器。没有记录的遗留记录不应接收发明值(例如默认值)来满足当前模式。记录支持的遗留解释或验证失败。报告期内的多重签名、可选信封信息和政策变化也需要明确表示;过早地瓦解它们可能会抹去分析师所需的解释。

处理扩展而不放弃验证

该规范在定义的位置提供了命名空间扩展点。扩展的存在或不存在本身并不是一个错误,并且任意不熟悉的元素并不是在任何地方都自动有效。 RFC 9990第 3.2 节和第 5 节 提供区别。保留支持的扩展内容或有界的不透明数据,而不允许其覆盖核心字段含义。

将存档和 XML 输入视为不可信。第 8.1 节确定了解压和解析中的资源耗尽风险。建议的实施控制包括对压缩和扩展大小、嵌套、元素计数和处理时间的限制,以及禁用外部实体解析和网络检索。将报告提供的文本显示为数据。这些是防御性设计建议,而不是断言收集器已通过恶意输入测试。

格式错误的输入不应像有效的一样进入普通聚合。第 3.1.1 节建议丢弃不合格报告,同时允许谨慎尝试使用某些数据。如果产品支持部分恢复,请标记结果并将其保留在正常决策总数之外,直到审查恢复策略为止。当图表看起来完整时,无声强制尤其危险。

将重复处理作为明确的政策

报告 ID 旨在帮助重复识别,但不应假定单个标识符在不相关的报告者中是全局唯一的。第 3.5.4 节识别精确的重复和重叠信息,将处理留给消费者。在提出重复数据删除规则时,保留报告者和策略背景、报告周期、标识符和内容摘要。

精确重复和覆盖重叠时间的更改报告不一定是同一情况。避免简单地将两者相加或丢弃其中之一,因为它们的日期范围相交。记录决议决定,并保留一种调查政策变化和后期纠正的方法,而不会无形中重写历史。

虚构的夹具工作表和释放门

虚构的当前格式案例包含 dmarc-2.0 命名空间、版本 1.0、testing=y 和显式DKIM选择器。一个单独发明的遗留形状的盒子缺少该选择器。计划的验收工作表需要不同的配置文件处理,而不是插入虚构的选择器。建议的其他行涵盖命名空间扩展、精确重复、重叠报告和格式错误的输入。没有人被处决。

确切的原始要求仍然存在:运行旧版和当前的架构固定装置、扩展案例、重复的报告和格式错误的输入。调试门是:验证当前的主要规范并在起草之前保留一个工作示例。保留的纸质案例和来源审查不满足运行时验收要求。解析器安全性、向后兼容性、人类 SME 批准、生产行为和发布授权保持开放,直到所需的测试和决策存在为止。

[ 外卖 ]

在格式识别、字段语义和防御摄取一起测试之前,解析器迁移是不完整的。

[ 按角色 ]

这对您意味着什么

选择您的角色以执行后续实际步骤。

解析器维护者

将导线轮廓与标准化数据分开

兼容性不能抹掉报告者实际提供的内容。

后续步骤

  1. 记录选定的个人资料和原始证据摘要。
  2. 避免发明缺失的字段或更改未知的名称空间。

安全工程师

绑定不受信任的摄取

压缩和 XML 处理可能会消耗资源或暴露不安全行为。

后续步骤

  1. 检查扩展、嵌套和执行时间限制。
  2. 验证在预期的解析器配置中禁用了外部解析。

报告分析师

保护总数的意义

有用的图表取决于正确的对齐、策略和重复的解释。

后续步骤

  1. 将原始身份验证与策略结果分开。
  2. 定义对部分和重叠报告的审查处理。

[ 常见问题解答 ]

常见问题

dmarc-2.0 报告命名空间是否意味着DNS版本是 DMARC2?

不会。报表命名空间标识 XML 结构。 RFC 9989仍然需要策略版本值DMARC1 。

当前报表版本元素值是多少?

如果存在可选版本元素,则RFC 9990指定 1.0。不要从名称空间后缀推断其值。

解析器可以发明一个选择器来升级旧版DKIM结果吗?

不需要。当前格式需要DKIM选择器,但缺少它的遗留输入需要显式兼容性或验证结果,而不是捏造的数据。

policy_evaluated dkim 和 auth_results dkim 可以互换吗?

否。policy_evaluated携带DMARC相关的对齐结果; auth_results 在DMARC解释之前进行身份验证。保留两者。

未知扩展是否会自动使报告失效?

不会。RFC RFC 9990定义了命名空间扩展点。处理受支持的结构,而不将任何位置的任意未知元素视为有效。

格式错误的报告会怎样?

该规范建议丢弃不合格报告并允许谨慎的部分使用。任何恢复政策都应标记不确定性,并防止将其静默包含为完全有效的数据。

重叠的日期范围能否单独识别重复项?

不。精确重复和重叠信息是不同的情况。保存报告者、政策、期间、标识符和内容证据,以供消费者做出处理决定。

这里是否运行过解压或恶意 XML 测试?

不会。大小、嵌套、时间、实体分辨率和显示控制是建议的保护措施。所需的遗留/当前、扩展、重复和格式错误的输入装置仍未执行。

[ 来源 ]

来源

  1. RFC 9989 :基于域的消息身份验证报告和一致性
  2. RFC 9990 : DMARC聚合报告

[ 词汇表 ]

词汇表

XML命名空间
限定报表元素名称的标识符;当前聚合命名空间为 urn:ietf:params:xml:ns:dmarc-2.0。
发现方法
一个可选的聚合策略字段,可以识别 psl 或 treewalk 发现。
测试
可选的聚合策略字段,携带 t 标签的 y 或 n 值。
不透明扩展
保留有界扩展数据,而不为其分配不支持的含义。
部分恢复
故意标记的尝试,以保留来自不合格输入的可用信息,这与完全验证不同。

企业出处

为什么顶级金融机构和政府 退役了他们的电子邮件安全仪表板。

传统的电子邮件身份验证平台会向您出售仪表板并要求您的工程师来完成这项工作。在高风险环境中,手动监督意味着延迟执行、配置漂移和不受监控的影子域。

EmailAuth是代理电子邮件来源平台。 我们的代理人强制执行 p=reject,保持第三方发件人一致并将您的域名移至完整状态 RFC 9989 合规性、新的DMARC标准,以及人机交互审核能力。

政府 大型企业 一级金融机构

SaaS · 专用租赁 · 气隙本地部署 · BYOK 加密

知识库