On 10/20/10 10:55 AM, Murray S. Kucherawy wrote:

>  I think a lot of this discussion conflates protocol specification
>  with implementation. I'm focused on the former. I maintain that
>  including wording intimating that a DKIM implementation is
>  non-compliant if it fails to do mail format validation prior to
>  accepting input or returning a result causes the specification not
>  to be clean. It's a layering violation. It's sloppy design. It
>  shouldn't be done.

Disagree.  Since DKIM /REQUIRES/, at minimum, the From header field be 
signed, are you suggesting layer violations when DKIM's verification 
process checks for non-compliant multiple From header fields?   It would 
be negligent of DKIM not to return a result of PERMFAIL when multiple 
 From header fields are detected.  Clean layering of a verification 
process is /not/ achieved when consumers of DKIM results must re-examine 
messages that receive a PASS result.

RFC5322 Section 6.4 amends the compliance required by SMTP, and removes 
strict enforcement.  There is not even a clearly defined error code to 
report non-compliance.  Since no layer below DKIM assures RFC5322 
compliance, it is negligent for the DKIM verification process to skip 
checks for multiple From header fields.   DKIM extends trust based upon 
the signing domain to include the From header field, as a minimum.  
Since normally there is no advantage obtained by introducing multiple 
 From header fields without the additional trust established by DKIM, it 
becomes fully incumbent upon DKIM to check for illegal conditions that 
might lead to erroneous placement of  trust.   Failure in this regard is 
likely to result in trust related exploitations.

>  The difference may be as subtle as what you're talking about above.
>  For example, although I am arguing that RFC4871bis shouldn't contain
>  any kind of normative enforcement of other specifications, my own
>  open source implementation already does it and has almost since day
>  one. I think that's the right thing to do, not because RFC4871 told
>  me to, but because RFC5322 did. And as a result, it's in the part
>  of the code that deals with mail, not the part that deals with DKIM.

Disagree.  DKIM MUST detect conditions that would allow trust 
established by DKIM to be exploited, where DKIM, at a minimum, includes 
the From header field.  Specifying a DKIM result for multiple From 
header fields impacts ONLY consumers of DKIM results.  This is not about 
enforcing RFC5322 compliance, this acknowledges that many processes 
assume there will be only a single From header field, as required by 
RFC5322.   Violation of this expectation prevents any DKIM status other 
than PERMFAIL to be safely returned.

>  It also does all kinds of validation that the data it got back from
>  the nameserver on a key or policy query conforms to the expected
>  format of a DNS query described in RFC1034, because if it doesn't
>  (which does happen sometimes, four so far today in the logs) then
>  running with those bits can have nasty side effects. But RFC4871
>  doesn't, and shouldn't, require that checking. That syntax is
>  defined in RFC1034.

DKIM Section 3.2 requires that tags with duplicate names *MUST NOT* 
occur within a single tag-list; if a tag name does occur more than once, 
the entire tag-list is to be considered invalid.  Because many had 
trouble with the format specified in Section 3.2 for tag values that are 
space delimited, many did not want to use the colon delimited structure 
specified in section 3.6.1.  Now many have decided to list the t= tag 
twice when adding the t=y value.  A similar problem also exists with the 
g= tag.  It is ironic that DKIM is having trouble ensuring strict format 
compliance for these unique DNS resource records.

RFC1034 clearly indicates valid results without expecting the consumers 
of DNS to second guess their validity.  However DKIM requires use of TXT 
resource records that are not required by SMTP.  An intrusion into DNS 
that is also being overlooked.  DKIM also specifies RFC3833 which warns 
against name chaining that also impacts the operation of DKIM validation.

>  Or are you folks also saying we should add text to RFC4871bis
>  mandating validation of the results returned by functions like
>  res_send()? Suppose a chthonic hacker could send DKIM-signed mail
>  that causes his DNS server to be queried, returning a reply that
>  will somehow always validate (or crash). And suppose res_send()
>  doesn't validate the payload, only passes it through to the caller.
>  Isn't this just as dangerous?

How would changing DKIM mitigate this type of threat?

>  We are most certainly obliged to emphasize to consumers of DKIM
>  output the distinction between what was covered by a signature and
>  what was not, and lay out the possibility that such consumers could
>  be confounded in the way that's been described. Failing to do so is
>  a disservice. I'm all for putting that into Security Considerations
>  in intricate detail with lots of examples of possible exploits. That,
>  to me, is precisely why that section is mandated as part of all RFCs.
>  I will happily write a sesquipedalian treatise on this topic to be
>  included there if it resolves this issue.

Disagree.  DKIM ALWAYS includes the From header field!  It would be a 
disservice to expect consumers of DKIM results to involve themselves in 
the same intricacies currently handled by the DKIM verification 
process.  By providing the correct results, no second guessing (layer 
violation) would be needed.

[]
>  No, Doug, I don't think these checks belong in POP3, or IMAP, or
>  SIEVE. They belong in whatever component is the one that decides
>  when or whether seek or apply a DKIM result.

What component?  How many of these "whatever" components need to be 
updated to mitigate use of multiple From header field exploitations of 
the trust established by DKIM?  Won't this be asking them to make the 
same checks that the DKIM verification process should have made?

>  Like I said before, it should be perfectly reasonable for a protocol
>  specification to require something proper from the layers below it,
>  and to require of itself that it only hands something valid to the
>  layers above it.

So you expect SMTP will now start strictly enforcing RFC5322 compliance 
just to retain the integrity of DKIM results?  IMHO, this would not be a 
realistic expectation.

>  Validating mail syntax belongs in the specification for the mail
>  components and DKIM work belongs in the DKIM components. Anything
>  else makes as much sense to me as asserting that an MTA/MUA/whatever
>  should only invoke a DKIM verifier after confirming that the
>  DKIM-Signature header field conforms to what RFC4871 says. I would
>  find that equally incorrect, and for the very same reasons.

RFC5321 does not mandate strict RFC5322 compliance!  It never has, and 
likely never will.  Since DKIM, at a minimum, binds the DKIM domain with 
the From header field, it remains critical from a security standpoint 
that DKIM not offer PASS results when there are multiple From header 
fields!

>  There has been talk of applying DKIM to technologies like Usenet and
>  HTTP output. Packing DKIM with mail-specific verification
>  requirements could prevent such things from happening. Shall we
>  also add a "but only when used in the email context" clause?

Disagree.  Whenever results might be ambiguous and thus exploited, PASS 
should not be returned.  This rule would be equally true for any message 
format.

-Doug


_______________________________________________
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html

Reply via email to