Re: [dmarc-ietf] [rfc-i] Question about changes introduced by erratum

Damian Lukowski <rfc@arcsin.de> Sat, 21 March 2020 23:23 UTC

Return-Path: <rfc@arcsin.de>
X-Original-To: dmarc@ietfa.amsl.com
Delivered-To: dmarc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 646B33A0783 for <dmarc@ietfa.amsl.com>; Sat, 21 Mar 2020 16:23:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=arcsin.de
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jHCqM3iiKbyj for <dmarc@ietfa.amsl.com>; Sat, 21 Mar 2020 16:23:51 -0700 (PDT)
Received: from scalar.arcsin.de (scalar.arcsin.de [185.162.250.16]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F23C23A077A for <dmarc@ietf.org>; Sat, 21 Mar 2020 16:23:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=arcsin.de; h= content-transfer-encoding:content-language:content-type :content-type:in-reply-to:mime-version:date:date:message-id :references:subject:subject:from:from:x-amavis-category; s= dkim01; t=1584833024; x=1586647425; bh=N7BXADpBGge8gnqDbO1FOXFLP zT/M4fuEaAnyGfRolc=; b=HsTjIAWqehDk7lD27j0voQpMQ97JErA1BWFhnpNWz ziFYuoNBntUEoS4upfhqeouZKjqPHuu8JuNUNLKl/0Mkf3rp0BCzBnpNPCtGyAOE 5fW3gTH/Pz8TBgX8iw55t8e9A1LIFZ2qFOFLJNSUfuQO63a49rGpnNyZBUKnasBE 4k=
X-Amavis-Category: scalar.arcsin.de; category=CleanTag
From: Damian Lukowski <rfc@arcsin.de>
References: <358069c2-4654-83cb-f800-4e3e33952c7f@arcsin.de> <1791077f-7d4e-de24-8720-0b19f601b2ba@gmail.com>
To: dmarc@ietf.org
Message-ID: <ff5c8f42-92b5-ee28-a9ac-7348bc813c86@arcsin.de>
Date: Sun, 22 Mar 2020 00:24:11 +0100
MIME-Version: 1.0
In-Reply-To: <1791077f-7d4e-de24-8720-0b19f601b2ba@gmail.com>
Content-Type: text/plain; charset="utf-8"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/dmarc/TQEeuckcDgY_FZ8krwXjA1WJlNI>
X-Mailman-Approved-At: Sat, 21 Mar 2020 17:31:11 -0700
Subject: Re: [dmarc-ietf] [rfc-i] Question about changes introduced by erratum
X-BeenThere: dmarc@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Domain-based Message Authentication, Reporting, and Compliance \(DMARC\)" <dmarc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dmarc>, <mailto:dmarc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dmarc/>
List-Post: <mailto:dmarc@ietf.org>
List-Help: <mailto:dmarc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dmarc>, <mailto:dmarc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Mar 2020 23:25:19 -0000

Hello DMARC working group,

I am going through the changes between RFC7601 and RFC8601 and try to
understand the implication of the change introduced by erratum 5435.
The new resinfo definition uses 1*propspec, that is, by my understanding
of [1] and [2], potentially multiple consecutive propspecs without
obvious delimiters. The beginning of a ptype and the end of a pvalue
have no mandatory CFWS, so from my understanding, a verifier could
construct a valid authres-header-field that is cumbersome to parse.

I will refer to the "ptype.property" part of a propspec as its "key".

The spf method defines smtp.helo and smtp.mailfrom. RFC8601, RFC7601 and
RFC7001 have only examples of the form smtp.mailfrom=domain-name.
However, RFC7208 shows a local-part@domain-name form in [3], so I must
assume a parser for an RFC8601 resinfo needs to recognize both forms. So
consider

> spf=pass smtp.mailfrom=x.y.zsmtp.helo=a.b

This is "clearly"
- smtp.mailfrom = x.y.z
- smtp.helo = a.b

It seems that a 10 character lookahead is sufficient, as long as we are
in the domain-name case. However, with

> spf=pass smtp.mailfrom=x.y.zsmtp.helo=a.b@c.de

the previous "cut" between x.y.z and smtp.helo is no longer valid, as we
have a single smtp.mailfrom with

- "x.y.zsmtp.helo=a.b" as the local-part, and
- "c.de" as the domain-name.

I see some issues:

1. The lookahead for the "@" is unbounded.
2. RFC8601 does not (that I am aware of) prohibit duplicate keys among
multiple propspecs. They may be either completely redundant, i.e. "k1=v1
k1=v1 ..." or contradicting/overwriting each other, i.e. "k1=v1 k1=v2
...". Without a delimiter between the propspecs, it seems even
impossible to parse them unambiguously.
3. I believe that a parser for potentially non-separated propspecs would
be ugly.

Did I overlook or misunderstand something? Would you consider a parser
RFC8601 compliant if it was only able to parse the "benevolent" forms of
an authres header?

Regards
 Damian

[1] https://www.rfc-editor.org/rfc/rfc5234
[2] https://www.rfc-editor.org/rfc/rfc5234#section-3.1 [no "implicit
     specification of linear white space"]
[3] https://www.rfc-editor.org/rfc/rfc7208#section-9.2

> But in answer to your question: dmarc@ietf.org, since RFC8601 is from the dmarc WG.

[...]

>> I have a question about a change in an RFC introduced by a specific
>> erratum (5435). Is this the right list to ask such question?