Dean Willis wrote:
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.
I think it belongs in this class, but I don't think we have a practicable
solution -- one is too strong, the other one too weak. (whoever doesn't
wish to indulge in a lengthy debate is invited to share his SIP address
with me -- I'll be happy to demonstrate that)
RFC4474 is simply not there. Despite we=iptel/TKLC have implemented in SER,
we found ourselves to be rather alone with it. I think the root reason
is it is heavier than it seems. Body integrity protection and dependence
on CAs
makes it just too impracticable. I would say as a hand waving
guesstimate 90% of
all SDPs on this planet gets rewritten for sake of NAT traversal and
there is 0%
SIP deployments leaning on a CA.
RFC3325, to the same extent as RFC3261 (From header field), buy really too
little. It is to some extent workable within single-domain, but not even
that
really reliably. (UAs would have to trust an IP address, but we run into the
questions like "which", or UAs would have to use TLS which appears largely
unused as well).
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.
Yes.
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".
Yes.
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.
I think that's about it indeed.
I think what we are seeking is something between zero-security and
heavy-weight
security. None of these two is really practicable. Like in the web -- we
have
no plain-text HTTP for online shoping, but the shopper don't really
prove their
identity protocol-wise either (other than sharing credit card number
over TLS).
Identity is a hard thing to solve, and it is really not easy to get to one's
DNA. (probably it is good so) Therefore what you called "functional proof"
appears more attractive to me.
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.
Right -- the consolation comes in that she can trace the caller if she
accepted a DERIVE-tested call and found it uncomfortable.
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.
Yes. Thank you indeed for catching this nuances. I think that addresses
some of the concerns on the mailing list, which were result on somehow
inadequately high expectations on DERIVE. This is what it can and can't
do.
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.
So it is. I think success of DERIVE-like tests depends largely on gaining
the critical mass. For that, the key prerequisite is it must be very simple.
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.
honestly, I don't know how its adoption will develop. I would historically
compare it to SPF, which required minimum changes and achieved its function
and current level of deployment by simplicity. a 2007 study shows 5%
penetration for it.
http://www.onlamp.com/pub/a/onlamp/2007/01/11/dns-extensions.html
Introduction of SPF for our own domain has quite increased the rejection
rate.
One of the ideas would be actually to give up the reverse check on SIP level
in exchange for DNS. That would similarly show that the caller (at domain
level) is in control of its name. Less granular, still better-than-nothing.
-jiri
--
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