ietf
[Top] [All Lists]

Re: [Simple] secdir review of draft-ietf-simple-msrp-sessmatch

2010-10-14 18:00:38
Hi Adrian,

Are you referring to the COMEDIA support in msrp-acm, the session matching 
change in msrp-sessmatch, or both?

Thanks!

Ben.

On Oct 14, 2010, at 5:26 PM, Adrian Georgescu wrote:

My two cents. Having implemented both models in Blink client (Blink is a free 
download if someone cares and wants to experiment with both MSRP models), I 
can comment that I do not like the acm model. The relay model is simply 
better, cleaner and more secure.

Adrian


On Oct 14, 2010, at 3:27 PM, Cullen Jennings wrote:


The new draft is clearer but I still don't think it addresses my concerns. I 
would say at this point they could be summarized as 

1) The draft is very hard to review without doing the diffs to 4975. To try 
and help instead of just complain, I'm willing to go back patch these 
changes into the last XML for 4975 and provide a draft that we can actually 
read to see what this all means. I can't do that till after the -01 
deadline. 

2) As far as I can tell, this does change the security of 4975 in a pretty 
significant way in that this allows a MITM to masquerade with the wrong to 
and from path that may be in the cert. It is not clear how it work when the 
end points are not using self signed certs and changes the preferred 
deployment mode from using certs rooted in a trust anchor to self signed. 
All this seems to significantly weaken the security of 4975 which concerns 
me and I have not seen relevant discussion of all this. I am open to the 
idea that it does not making this much worse than they currently are in 4975 
and that it is a reasonable trade off but I'd like to see concrete 
discussion of the issues and tradeoffs. How bad is it? how much worse is it? 
People says it is no worse but I and several others remain unconvinced that 
it is the same as 4975. I'd rather see a very explicitly discussion with 
people like the security reviewer about how much this changes things and if 
it is acceptable. It's not easy to sort this all out - it actually might be 
acceptable - I'm just not convinced yet and the "there is no problem because 
there is not change" form of argument is not convincing me - clearly there 
is a a change and at causal glance the point of that change seems to be to 
insert a MITM. 

3) The backwards comparability issue seems huge. Some people have said an 
endpoint using this draft will not talk with one that only does 4975. Yet if 
this draft if published as an RFC would basically depreciate the 4975 and 
replace it with a the result of applying this diff to 4795. So if one person 
implements the pre update version, and another person the post - it's not 
clear to me how we migrate from old to new on the existing deployments. A 
flag day is obviously not going to work. The more I look at this, the more I 
think this draft needs to be  recast as a backwards compatible extension to 
4975 and not a draft that update 4975. When I look at how this changes 4975 
it seems to mostly relax the existing security but not disallow things that 
used to work so I think it should be possible to do this. On a side note, I 
phoned a few people who I know that have MSRP implementation and none of 
them had any plans to implement this and were surprised to hear there was a 
draft that would update in 4975 with a change like this. To me this combined 
with the no backwards compatibility issue argues strongly for figuring out 
how to make this an extension instead of a change to MSRP. 

4) When I search the email lists, I find more more people who see 
significant problems with this than I find people that seem to think it is 
OK. I don't think it has consensus -I think it just has people who stopped 
care.  The changes that needed to happen in IETF LC to fix this draft so it 
had any chance of working at all more or less convinced me the WG did not 
read this draft. The ietf(_at_)ietf(_dot_)org list is not an ideal location 
for discussion that rewrites pretty much all of the normative text of this 
draft (which is what is happening here). 

Cullen



On Oct 5, 2010, at 1:33 AM, Gonzalo Camarillo wrote:

Hi,

Christer has submitted a new revision of this draft:

https://datatracker.ietf.org/doc/draft-ietf-simple-msrp-sessmatch/

Those of you who sent IETF LC comments on this draft, could you please
have a look at the new version and let Christer know if he has addressed
your concerns?

Thanks,

Gonzalo


On 31/08/2010 8:39 PM, Christer Holmberg wrote:
Hi,

The purpose of this e-mail is to address the secdir comments given by 
Richard
Barnes and Ted Hardie. Due to summer vacations, standardization meetings
etc it took a while to put the e-mail together, and we appologise for that.

GENERAL
=======

First, the draft does NOT propose any changes to the TLS authentication
procedures – that will be clarified. The changes are only related to the
procedure for matching an incoming MSRP message to an MSRP session that
has been negotiated using SDP – once any TLS authentication procedure has
already taken place.

So, in case of TLS and name based authentication, if an SBC/ALG modifies
the a=path MSRP URI, the TLS authentication WILL fail. That is the current
behavior, and sessmatch doesn’t change that.

We understand that this fact needs to be clearly indicated in the draft.

Basically sessmatch allows so that, when using peer to peer MSRP, SIP SBCs
and SIP aware firewalls can be in the SIP signaling path without acting as
MSRP B2BUAs. But, for an SBC or ALG to interwork correctly with MSRP relays
the SBC/ALG needs to act as MSRP B2BUA, as today.

Sessmatch aims to extend the usability of MSRP peer to peer communication 
to
scenarios where simple ALGs/SBCs are used, and at least in our experience
customer interest for standard MSRP has grown (from more or less zero)
dramatically due to sessmatch. And, OMA, which previously used a 
*non-standard*
version of MSRP (with no interoperability with standard MSRP), has also 
agreed
to switch to sessmatch (even if it required a number of changes in their
specifications).

Second, the intention of sessmatch is not to modify the MSRP URI matching 
rules,
but rather to not use MSRP URI matching for session matching.

Please also note that when we talk about SBCs/ALGs, we refer to entities 
that
normally do NOT have the capability to act as MSRP B2BUAs.

We will comment the individual comments based on the assumptions above.


Comments from Richard
=====================

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.

This document changes the URI matching algorithm used in MSRP.  MSRP 
sessions
are typically initiated using SDP bodies in SIP.  These SDP
bodies contain MSRP URIs that the peers use to contact each other.
When one peer receives a request to initiate a session, he verifies that 
the
URI being requested is one that he initiated in SDP, thereby using the 
URI as a
shared secret to authenticate that the originator of the session actually
received the SDP body in question.

According to the current SDP specification, this comparison is performed 
over
the whole URI; this document restricts the comparison to the "session-id"
component, omitting the host, port, and transport components.  The goal 
of the
document is to facilitate a certain class of man-in-the-middle attack, 
namely
to allow a signaling intermediary to insert a media intermediary.  The
restriction on the URI comparison is needed in order for the media 
intermediary
not to have to modify URIs in MSRP packets to reflect the modifications 
to URIs
in SDP bodies performed to redirect traffic through the media 
intermediary.

When an MSRP UA receives an MSRP packet it performs msrp session matching 
in order
to verify that the msrp packet belongs to an existing SDP negotiated msrp 
session
at the UA. RFC4975 prescribes that URI matching should be used for session 
matching.
We argue that the namespace scoping of the session-id values that use of 
URI matching
brings is unnecessary. The 80-bit randomness of the session-id and the 
fact that it
was the UA itself that decided on the session-id value and can ensure that 
it is
unique within the UA makes the session-id sufficiently unique for session 
matching.
Sessmatch is not changing the MSRP URI matching algorithm, it is changing 
the session
matching algorithm not to use MSRP URI matching.

I have a few significant reservations about this document:

1) This extension makes it more difficult for MSRP entities to secure 
their
communications against attackers in the signaling path.  The current model
provides a basic integrity protection, in that signaling intermediaries 
cannot
redirect traffic to an arbitrary third party; they must at least advise 
the
third party about how to modify MSRP packets. The proposed modification 
would
remove even this cost.

If we do not introduce the sessmatch change then the only alternative for 
MSRP
connections to be able to be set up when SBCs or SIP aware firewalls are 
in the
SIP signaling path is for these to introduce MSRP B2BUA support. This is 
probably
not feasible for most SBCs and SIP aware firewalls, and if it actually were
feasible then it would mean as big a security problem, or even bigger, than
sessmatch. The choice is thus to not use MSRP at all in presence of such 
devices
or to introduce sessmatch. Not to fix this probably would mean that use of 
MSRP
will be marginalized.

2) Moreover, it raises the cost of providing integrity protection to 
messages,
since Alice must now employ both integrity and confidentiality 
protections on
an end-to-end basis; if her messages are only integrity-protected, then a 
proxy
can remove the integrity protection and redirect traffic without it being
observable to Alice.

The document needs to clarify what the impacts are for authentication in 
secure
modes of MSRP.  In particular:
-- The distinction between "self-signed" and "public" certificates is
inappropriate.  The proper distinction is between the name-based 
authentication
in Section 14.2 of RFC 4975 and the fingerprint-based authentication in 
Section
14.4.

We cannot find the terminology “name-based” authentication in RFC 4975. 
The RFC talks
about TLS authentication using either certificates from well-known 
certificate
authorities, or using self-signed certificates together with certificate 
fingerprints.

Having said that, however, we DO agree that the terminology you suggest is 
more
appropriate than what we have used and we will introduce this terminology 
and explain
it in the Convention section of the sessmatch draft.

-- In either case, changing the host name need not result in an 
authentication
failure, since the media intermediary can simply authenticate as itself 
to both
endpoints, having changed the respective MSRP URIs appropriately.

A media intermediary can only do this if it is an MSRP B2BUA, and 
sessmatch was
introduced just to avoid most SBCs and ALGs having to implement an MSRP 
B2BUA in order
to allow standard MSRP deployment.

-- There is currently no requirement that an endpoint identity in the 
To-Path
URI matches the endpoint identity authenticated at the TLS layer, because 
these
two are required to be the same.  This document changes that assumption, 
and
should note that these two identities can differ.

We will explicitly mention this.

The document also precludes any name-based multiplexing, where a single 
MSRP
process (single IP address and port) directs requests to different virtual
recipients based on the domain name in the To-Path header. (In analogy to
Host-based multiplexing in HTTP, which is very widely deployed.) Since 
with
this extension, the domain in the To- Path is completely unpredictable 
from the
recipient's perspective, it is useless to the recipient.

That is correct, but there should be no problem for a single MSRP process 
(single
IP address and port) to direct requests to different virtual recipients - 
based
on the session-id instead. It is only needed for the different virtual 
recipients
to inform the receiver process on which session-ids that are currently 
negotiated
instead of informing it on which domain name the virtual recipient shall be
associated with.

The document has no backward-compatibility. MSRP implementations that do 
not
support this extension will not be able to receive MSRP sessions from
implementations that do. In that regard, this document seems more like a 
new
version of MSRP rather than an update.

It is not true that there is no backwards compatibility. If there are no
SIP ALGs/SBCs in the SIP/SDP signalling path then there is no problem for 
MSRP
implementations that do not support the sessmatch extension to receive MSRP
sessions from implementations that do.

MSRP implementations that do not support the sessmatch extension are 
however not
able to establish MSRP end to end conversations if there are ALGs/SBCs in 
the
session path (unless these implement MSRP B2BUA) and sessmatch does not 
change this
fact – it will not work disregarding if the other endpoint supports 
sessmatch or not.

I also note that the security considerations, in addition to having
some fairly disingenuous language about the impact of this change,
seems to fail to mention MSRPS URIs and what, if any, impact this
would have on them.

There are no impacts to MSRPS URIs. I assumed it would be implicitly
understood since MSRPS URIs are not mentioned in the draft.

However, we could explicitly make it clear by modifying the first
sentences of section 5:

"The change of session matching procedure does not impact the
format of MSRP URIs, disregarding if the "msrp" scheme or the "msrps" 
scheme
is used. However, MSRP endpoints can only check that the session-id part 
of
the MSRP URI..."

The conflict here is that with MRSPS authentication, the name in the
certificate is checked against the domain name in the URI, which was OK 
when
the URI in the message was required to be the same. By allowing the domain
name in the message to change, this draft removes man-in-the-middle 
protection
from MSRPS.

The document notes that a SIP MitM can already direct the user to another
destination.  However, if the peers use MSRPS with the current 
authentication
scheme, the MitM will not be able to be a part of the resulting MSRPS 
session,
since he can't authenticate as one of the endpoints. If only the session 
ID is
used in comparisons, the MitM can patch himself in by changing the domain 
in
the MSRPS URI. (Which actually seems to be the intended use case for this 
draft.)

So the current document does introduce a new MitM vulnerability to MSRPS.

Sessmatch does not change the fact that name based TLS authentication for 
MSRPS
will fail if an SBC or ALG has modified the hostname value in the MSRP URI 
in the
SDP a=path attribute without also acting as MSRP B2BUA.


Comments from Ted
=================

I join Richard in believing that this document makes changes beyond that 
which
could be understood as "updating" the MSRP URI scheme processing.

...

I also note that the security considerations, in addition to having some 
fairly
disingenuous language about the impact of this change, seems to fail to 
mention
MSRPS URIs and what, if any, impact this would have on them.

We will clarify what impacts there are.

-------

To highlight one particular aspect, RFC 4975 does not require
session-ids to be present, a fact noted both in the ABNF and in this
text:

4. The session-id part is compared as case sensitive.  A URI without
a session-id part is never equivalent to one that includes one.

A matching scheme which relies on a URI section which is not
guaranteed to be present has some interesting problems ahead of it. If
this effectively makes their use mandatory, that requires a change to
the fundamental ABNF and text.

An MSRP URI in an SDP offer or answer for an MSRP session MUST include a
session-id part, so I believe the comment is
based on incorrect assumptions.

This is not indicated in the URI matching section

We will clarify that sessmatch conformant UAs do not use MSRP URI matching 
in
order to perform MSRP session matching.

Section 6 of RFC 4975 says:

"The session-id part identifies a particular session of the
participant. The absence of the session-id
part indicates a reference to an MSRP host device, but does not refer to 
a
particular session at that device."


The full section from which that quote is taken is:

The MSRP URI authority field identifies a participant in a particular
MSRP session.  If the authority field contains a numeric IP address,
it MUST also contain a port.  The session-id part identifies a
particular session of the participant.  The absence of the session-id
part indicates a reference to an MSRP host device, but does not refer
to a particular session at that device.  A particular value of
session-id is only meaningful in the context of the associated
authority; thus, the authority component can be thought of as
identifying the "authority" governing a namespace for the session-id.

This proposal changes the concept of a namespace authority present in the 
URI
matching section of RFC 4975. I am sorry if my wry reference to this in my
previous message was hard to follow; I should have known better.

To be more plain, this proposal fundamentally changes the matching 
semantics of
the URI set out in RFC 4975, by requiring a match on only a portion of 
the URI.
At a bare minimum, this would require noting a normative update to 
section 6
and 6.1 of RFC 4975, which this draft does not do.  In reality, this is
unlikely to be sufficient, as URI matching semantics do not generally 
have the
concept of ignoring the authority in providing a match (at least in my 
reading
of the RFC 3986 "ladder of comparison" text).  That means you'd have to 
special
case the MSRP matching semantics, rather than have the URI be parsed and
compared using a standard library.

Sessmatch removes the URI matching as a means to do MSRP session matching, 
and
replaces it with a pure session-id matching. There is no need to create a 
new
URI scheme that does not re-use the authority component. We believe the 
minimum
80-bit randomness of the session-id, together with the fact that the UA 
itself
generates the session-id it matches on, to be enough for the session-id to 
be
unique in the scope of the sessions that are active at the UA.

Also, the security of the matching is not particularly decreased, since it 
is
relatively easy to find out the authority name anyway.

I also note that the security considerations, in addition to having
some fairly disingenuous language about the impact of this change,
seems to fail to mention MSRPS URIs and what, if any, impact this
would have on them.

There are no impacts to MSRPS URIs. I assumed it would be implicitly 
understood
since MSRPS URIs are not mentioned in the draft.

However, we could explicitly make it clear by modifying the first 
sentences of
section 5:

"The change of session matching procedure does not impact the format of 
MSRP
URIs, disregarding if the "msrp" scheme or the "msrps" scheme is used.
However, MSRP endpoints can only check that the session-id part of the 
MSRP
URI..."

This doesn't seem to me to actually work, based on Richard's comments, 
unless
what you mean to say is "if MSRPS is in use, nothing in this draft can be
used". That gives you different matching semantics for MSRPS (authority 
must
be present and must be matched using TLS semantics) vs MSRP (only 
session-id is
checked) which is at the very least a violation of the principle of least
surprise (no other foo over TLS protocol works that way that I know of ).

Session matching is done when receiving MSRP packets on an already 
established TCP
or TCP/TLS connection, and there will not be any different session 
matching procedure
depending on if the connection uses TLS or plain TCP.

Regards,

Christer

_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf

_______________________________________________
Simple mailing list
Simple(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/simple


_______________________________________________
Simple mailing list
Simple(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/simple

_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf