On Nov 20, 2008, at 5:52 PM, Jiri Kuthan wrote:
I'm just wondering, if folks could help to explain me this:
apparently when I asked if people in the WG feel safe about
IETF's mechanisms deployable to prevent spoofed From, nobody
spoke up. At the same time, there were some who felt that
we don't have a problem statement. I would be thankful if
representatives of the latter group could share with me
what is the missing piece here to state a problem.
So let's define a "spoofed From."
Are we talking about a real UA generating an INVITE request with a
bogus identity asserted in it's From: field, or are we talking about a
DOS attack (like a voice-hammer generator) where a device that is not
a UA is generating an INVITE request that causes the UAS to deliver
the attack to the victim?
For the first threat, in our current spec family, we have strong
identity (aka RFC 4474) as a general solution, and weak identity (RFC
3325) as a point solution for single-domains or federations with
identity enforcement points in trusted proxies.
For the second threat, we have null-authentication; the UAS can
challenge the request (which tests direct return routability to the
UAC) and wait for a response before proceeding to the alerting phase.
By direct return routability, I mean that we can follow the via-stack
back to the originating UAS (possibly with help for a via-pruning SBC).
So where does DERIVE fit in?
I believe it attempts to address both problems. It's clearly heavier
than the existing solution for the second threat, but if we use
DERIVE, we get this problem fixed for free. So the question of the
work really seems to be its applicability to the first threat.
Let us move to an examination of the assumptions. DERIVE assumes that
the identity expressed in the request being examined is a routable
identity, and that there is a indirect return routability for that
identity. By indirect return routability, I mean that a new request
targeted to that identity will reach the user agent that originated
the request. Further, DERIVE assumes that the UA reached by the
indirect return routability path has knowledge of the request being
examined and that it can attest to that knowledge, thereby
establishing the veracity of the identity expressed in the request to
the level of "this identity resolves in the routing topology to the
node that sent the request".
Therein lies the differentiator: Whereas RFC 4474 proves the identity
cryptographically (that is, through secrets known to the identity-
holder or to a trusted third party working on behalf of the identity-
holder), DERIVE proves it functionally (by the definition of
"functionally" meaning "it works", sorry you Haskell fans!).
Two questions remain:
1) Is a functional verification through indirect return routability
testing of the identity expressed in a request actually useful?
2) Is the mechanism used by DERIVE reasonable for implementing an
indirect return routability check?
Let's attack these one at a time.
Question 1: Usefulness of indirect request return-routability checks
in SIP
Many attacks seen in the Internet rely on forged transmission
identifiers. For example, consider the once wildly popular Smurf attack:
http://en.wikipedia.org/wiki/Smurf_attack
The Smurf attack uses a ICMP echo request with a forged IPsource
address, where the victim's address is used as its source address
(i.e, it's "From:"). This initial request is addressed to the
broadcast address of a remote subnet. If the attack succeeds, each
host on the remote subnet replies, thereby flooding the victim with
unexpected ICMP echo request responses.
Although we have not identified a Smurf-like direct amplification
attack in SIP, it's still obviously possible to use a forged From: to
cause the victim's phone to ring, thereby making the target UA an
attack amplifier against the person (or sanity) of the end user. One
might call this the "ring ring ditch" or "ring ring ginger" attack,
from the similar childish doorbell prank"
http://en.wikipedia.org/wiki/Knock_down_ginger
DERIVE clearly reduces the opportunity to use a forged From: to bypass
controls on the victim's phone. Not perfect, but it passes the script-
kiddie test.
Consider however the SIP Voice Hammer attack:
http://tools.ietf.org/id/draft-ietf-mmusic-ice-19.txt, section 18.15.1
This works similarly to Smurf, but it uses a second level of
indirection. Rather than spoofing the victim's From: address, Voice
Hammer insert's the victim;s address into the SDP of a SIP INVITE.
When the target of the request "answers" the call, the target becomes
an amplifier, spewing RTP packets at the victim.
Indirect return routability testing gives us no direct defense here,
in that provides some validation of the from: address but we have no
way of correlating this address with the one used in the SDP. However,
it does make it harder to originate the attack anonymously, as it
requires that the attacker establish indirect return routability at
the SIP level, which presumably gives us a little better chance of
hunting the perpetrator down and apply other mechanisms (such as
summary execution) in order to prevent further offenses.
In other words, it's good enough to stop script kiddies.
In a third attack scenario, presume the attacker's goal is to
impersonate a caller, such as the infamous "Radio-Show Sarkozy/Palin"
calls.
http://www.huffingtonpost.com/2008/11/01/masked-avengers-prank-cal_n_140023.html
Here the goal is not necessarily to prevent the call, but to give the
called party some level of comfort as to the authenticity of the
caller's expression of identity.
Indirect return routability checks clearly establish that the calling
party is sufficiently in-control of the expressed identity as to be
able to receive calls directed toward that identity. This is better
than nothing; it can't prove identity, but it greatly decreases the
probability of a random radio DJ being able to make a prank call.
Question 2: Does DERIVE provide a reasonable solution?
In order to impact the DoS attacks described in 1, the solution has to
be "strong enough" that we can reasonably reject a call, at the
automata level, without bothering the user. No arguments have been
made that the mechanism in DERIVE is sufficiently widely deployed that
one can reject calls not using it. One might argue that one could add
an extension detection mechanism (such as including a modifier in the
identity) that says "You can expect calls from me to support DERIVE;
if they don't, it isn't me" that might help. But it's still a pretty
weak defense against DoS. In the general case, DERIVE does NOT stop
script kiddies from known DoS attacks, so it may not be useful here.
Consider however the "Radio-Show Sarkozy/Palin" calls; here the
requirement is not to block the call entirely, but to give additional
guidance to the user as to how to evaluate the caller's claimed
identity. Here DERIVE might be useful. It's more use if we have a
reason to believe that calls from a given party should support DERIVE.
In the end, it comes down to breadth of availability. Will DERIVE be
widespread enough that anybody bothers with it? My hunch is that this
is unlikely, but this might be a useful point of discussion.
--
Dean
_______________________________________________
Sip mailing list https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip