Document: draft-ietf-tls-dtls-rrc
Title: Return Routability Check for DTLS 1.2 and DTLS 1.3
Reviewer: Mike Ounsworth
Review result: Has Nits

I have reviewed this document as part of the security directorate's
ongoing effort to review all IETF documents being processed by the
IESG. These comments were written primarily for the benefit of the
security area directors. Document editors and WG chairs should treat
these comments just like any other last call comments.

The summary of the review is Has Nits; the document could be published as-is,
but I include suggestions to enhance readability of the security implications
of the document.

Naïve question (I am not a DTLS / routing expert). Does this spec introduce a
new DDoS surface in the case that the new (preferred) path is longer, and
therefore the connection will keep pausing to do this path-check? I expected to
see somewhere a recommendation for a guard against that – only do this once per
pair of paths, or something similar.

I would like to see the Introduction add a paragraph about
mandatory-to-implement and interop implications of this draft; give a sense of
whether this is a mandatory-to-implement extension to DTLS, or optional, and
whether one side of the connection can perform this successfully even if the
other end does not support it. I think the text I’m looking for is: “This
specification defines a RECOMMENDED mechanism for DTLS 1.2 and 1.3. DTLS 1.2
and 1.3 implementations SHOULD implement this and include it in all DTLS
ClientHellos, but note that no security value is obtained unless both parties
support it”, but I’ll leave it to the experts to frame the correct wording.

Intro needs more description of what the vulnerability is, and which party is
gaining protection against which type of adversary by implementing this. You
have this nicely and in great detail in Section 6, but I would pull a short
summary up to the Intro. After reading section 6, I see that you are solving
two problems: amplification-to-a-victim, and path-hijacking. You have some good
sentences in Section 6 that you could pull up into a short summary of the issue
and fix.

Nit: Section 4: “Future extensions to the Return Routability Check sub-protocol
may define new message types.” … should that be a normative “MAY”?

Section 6: It would be nice if you synced up with the terminology for type of
attack / attacker as defined in Section 3 of RFC3552. What you have is close to
S. 3.2 of RFC3552; probably just needs a reference and a sentence “We extend
the definitions of “on-path” and “off-path” attackers as given in [RFC3552] to
more precisely fit the specifics addressed by this specification”. Could /
should also site definitions in RFC 4949.

Section 6.1.1: “When receiving a packet with a known CID and a spoofed source
address, an RRC-capable endpoint will…”  Technically, the endpoint doesn’t know
for a fact that it’s spoofed, right? I assume that the whole point of defining
a challenge-response sub-protocol here is to distinguish the legitimate
path-changes from attacks, right? I would say instead “When receiving a packet
with a known CID and a source address that does not match, the RRC-capable
endpoints will begin by assuming that it is spoofed and verify by …”

Section 6: “The attack is more reliable if relatively few packets are sent or
if packet loss coincides with the attempted attack.” I’m a little confused
about the grammar of this sentence. I could see this meaning one of several
things: That the attack is harder if the victim channel has some
naturally-occuring (unrelated) packet loss that the attacker has no control
over, but happens to coincide with the attack. That the attacker needs to
induce packet loss in order to perform the attack, and this is easier if it’s
an otherwise noise-free channel. That the off-path that the attacker is trying
to migrate to should be noise-free. Either way, making this sentence more
precise would help

Grammar: “In order to determine whether this path change was not triggered by
an off-path attacker” In English, you don’t use the “whether … not”
construction. I would suggest either: “... determine whether this path change
was triggered by …” or “... determine that this path change was not triggered
by …”

Joke: Figure 5 looks like what happens when I try to change my tax address with
the government; and this triggers all sorts of paper mail to all my registered
addresses.

You use language like “attacker trying to place itself on path”. Would it be
more evocative to say “hijack the path”? Your described attack here seems to
agree with the definition of “Hijack Attack” given in RFC 4949.

“If the path via the attacker is reliably faster than the old path despite
multiple attempts to use that old path, it is not possible to distinguish
between an attack and an improvement in routing.” This is funny. I am picturing
a Wired.com article titled “Actor X hijacks the entire internet by providing
faster, more reliable service”. Right. Hard to really call that an attack.

Section 7 intro: I feel like this needs some tie-back to the negotiation done
during the ClientHello / ServerHello step. Like, the entirety of Section 7 only
happens if this session negotiated to use RRC, right?

Section 7.2 / 7.3 is literally the first time in the document that the terms
“Basic” / “Enhanced” appear. You at least need to introduce this at the top of
section 7. Basic vs Enhanced something that needs to be negotiated? Are these
interop-equivalent and therefore implementer’s choice? … some introduction
needed.


_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to