On Tue 23/Aug/2016 02:07:24 +0200 Brandon Long wrote:
On Sat, Aug 20, 2016 at 4:02 AM, Alessandro Vesely <[email protected]> wrote:


Say A -> B -> C are the MTAs:  C sees a message where B is cited in the
To: or Cc: header fields.  The message is ARC signed by B.  B says A's
DKIM signature was good, but now it is broken.  A's DMARC policy says
that C should reject in that case.  What should C do?

If C is gmail, it likely has sufficient history to know how A and B
behave.  But what about small MTAs whose email flow is statistically not
enough to use combinatorial trust assessments?

If your MTA is too small to use combinatorial trust assessments, then you
are stuck with the same two options you have today: manual whitelists or
using a service to give you that information.

If you're small enough, I don't think manually whitelisting the mailing list
servers your users are subscribed to would be that challenging, especially
if you receive the DMARC reports your server generates.

I can configure my filter to accept DMARC-failed messages from authenticated domains which are trusted MLMs. Even if I only see 20~30 new mail domains each day, I'm not going to manually look for names which seem to be lists.

A two-step heuristic to determine trusted MLMs consists of (1) collect domain names from received List-Post: header fields matching <mailto:*@*.*>, and authenticated (via SPF, DKIM, or DNSWL), and then (2) from the domains collected that way, select those that my users write to. _Small domains_ --by definition, for the scope of this discussion-- have no anonymous users.

That heuristics keeps failing until a subscribed user actually posts to a MLM. Skipping step (2) makes it an obvious attack path, but whitelisting can mitigate it a bit.

How can aggregate reports help here?  Would you please expand?

If A had added a second DKIM signature, signing just the To: or Cc:
field(s) which cited B, with l=0 for the body, then that signature
likely survived B's fixing and hence C could infer that B is a true (not
self-styled) forwarder.  IOW, A's second (weak) signature provides C
with a formal criterion to instruct its local policy to accept email
that fails the DMARC mechanism check even if A has published a "reject"
policy.

So, what I called ARC-0 in my former proposal, doesn't really have much
to do with ARC.  The concept is weak signatures.  Of course, they won't
work unless carefully standardized and implemented.  The question is if
they will ever work at all, and if this WG is willing to consider them.
If not, we need to address Dave's concern some other way, or resign
ourselves to building a solution which will likely work 98.7% for some
and 0.2% for others.

So, any message sent from A to B can then be used as a replay with any
content to any party as long as the To/Cc are intact?  That seems pretty
useless.

Yes, B can send whatever they like using your name@A. That's how weak signatures work. Of course, valuable domains such as banks and other phish targets should never use them. Our task here is to better indirect flows, not counter phishing. Anyway, regular domains may want to weak-sign only the copy of a message addressed to a trusted MLM. Bumping DKIM version was proposed as a means to have C also require a valid signature of B. Some receivers already use local policies to limit the shape of DKIM-Signatures they accept; for example, some regard signatures with l=0 as invalid. Smart C-role verifiers may want to match B to To: or Cc: before accepting weak signatures.

I'd put weak signatures when I play A. That way I'd complement the above technique, trusted MLMs whitelisting, which I'd use when I play C. An additional element would be to have B save From:. In fact, A's weak h= should not include From:, because rewriting From: currently seems to be the best anti-DMARC workaround. B would save the value of From: using a new header field name, e.g., say, Original-From:, Authenticated-From:, or ARC-From: for daisy chaining (vote for one). Finally, C may consider the presence of this new field to confirm A's role, and possibly fix From:. In those cases, a message passes if C is either smart or dumb, not somewhere in between. DKIM v=2 would eliminate the "dumb" side.

If I were clever, I would list all possible statuses of A, B, and C (such as complying with DKIM, DMARC and ARC, applying or recognizing weak signatures, being aware of either DKIM v=2 or the new header field, et cetera) along with the relative probabilities that they are implemented at various stages in time, and then compute the chances that C can pass/reject correctly in the two cases of B being white or black, at each stage. I reckon there are cases of A unknown to C, perhaps because either is small, where some mixes of the above techniques would save the day, thereby encouraging more small domains to publish strict DMARC policies, don't you think?

Ale
--






_______________________________________________
dmarc mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dmarc

Reply via email to