OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-msg message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Subject: Threat assessment, some dissent RE: [ebxml-msg] security problem withebXML MS

This summary concerns whether we should be spending a lot
of time worrying about how to protect internal MIME content-*
headers for the purposes of ebXML messaging.

Jim Galvin remarked that:

"Regardless of where the MIME headers are duplicated -- whether the
manifest or in the signature element as an object -- the point is it
needs to be required, not optional."

And Rich Salz's aside that:

I deliberately didn't specify WHICH headers to encode, it's up to the
sender to determine which ones to protect.  The spec should advise, of

(By the way, for what it's worth, I don't think this defense will be
necessary in real pratice.)

I would like to support, and possibly extend,
Rich Salz's position that
while there may be a MITM threat posed by unprotected
MIME content-* headers, it is not a threat
that greatly impacts ebXML messaging. 
There might be a minor threat of 
denial of service (but this is a threat 
that signing headers will not alleviate).
The remedies adopted should not be made 
REQUIRED as urged by Jim Galvin. I also
think it is actually of marginal utility 
to even get involved
in protecting the internal bodypart headers.

Here are supporting reasons (many already mentioned):

1. (Internal) Header modification is most 
commonly a problem for one transport,
SMTP, when using Relays (or Gateways or other intermediaries).
"Helpful" CTE changes and companion header changes
are presumably not going to happen
under HTTP or HTTPS, even when intermediaries are involved,
unless they gateway into email. And simply ignore any
BEEP profile that has the problem :-) So a "MITM threat"
based on changed headers is usually not malicious, and not
universal across transports. In a way, the SMTP situation speaks
for not including headers in the scope of the signature
if we are mainly concerned with the threat of inadvertently
breaking signatures that are otherwise good. In other words,
by including headers in the scope of the signature, we
risk not getting the payload (potentially validly signed
and intact) processed, because a signature check would fail
due to the changed headers in the SMTP relay case. 
We are opening ourselves up to uninintentional 
denial of service by signing headers!
If headers were important, and they were in danger
of being maliciously changed, 
then using a Suresh/RichSalz method could
be optionally adopted (but I think simplicity would
favor not going there).

As Chris Ferris mentioned, peer to peer transports using 
transport layer encryption would frustrate header manipulation. 
Likewise, digital envelopes would discourage header manipulation, 
even when intermediaries (gateways, relays, MSHes, 
various FW proxies,etc) are involved. 
This means there exist other ways of avoiding the MITM
threat to headers when it is thought to be a live possibility.
This means that mandating some redundant encoding of
headers is not universally warranted; whether it is even
a live possibility, depends on the specifics of transport
as well as packaging.  No reason to require unconditionally.

2. There could be hijacked relays or even other 
hijacked intermediaries and they could 
change headers maliciously. One suggested change
was to alter the content-type header so that the payload
processing would benefit the hijacker somehow, 
by misdirecting it to another application handler.

However, the _routing_ function within ebXML has largely dispensed
with any strict dependence on the semantics of MIME content-*
fields. MIME is mainly being used for its generalized bundling
and unbundling capability. The diminished dependence on the
MIME apparatus is partly because whatever the service or action
element says, the ebXML payload will
most likely just have the same old content-type of "text/xml" or
"application/xml" ( or maybe "*/*+xml.") Why did we have service
and action elements, if we were going to use the MIME apparatus for
application-level routing? The MIME values were 
regarded as insufficiently fine-grained.
The MIME content-type provides a partly
redundant, insufficiently informative label, that within
ebXML messaging, can be largely ignored for app. routing
purposes anyway. So, MITM threat largely irrelevant for internal
content-type headers and the application level misrouting.
No reason to require unconditionally.

3. MITM change of headers could at least interfere 
with processing, and so be an interference with 
service attack. If the goal is interfering with service, 
however, there are a lot of other attacks that would 
be easier/faster/cheaper to undertake.
Signing headers would not in itself defeat
the interference with service, but just offer another
way to detect it. Signing provides no remedy for this
threat. No reason to require here.

4. Another possible reason to show
that the "message" had not been messed with, 
would be to discourage a certain
kind of "replay" ( payload recycling ).
By binding a SOAP envelope 
to its payload(s) by signing,
we would at least have some evidence about
the entity that was replaying the payload.
(It would not prevent it, of course. We could
always still cut and paste an independently
signed payload and repack, resign, resend.)

Interestingly, we already decided that some changes 
are "don't care" with respect to
message "integrity" (the changes intermediaries 
do to the SOAP envelope, for example). 
Given this existing agreement--which forced our use
of XMLDsig in the first place--why not just
decide to exclude the headers from within 
the scope of the signature,
and say that ebXML message "integrity"
does not guarantee that the bodypart headers 
have not changed (added, deleted,
changed case, been given wrong values, etc)? 

As Suresh pointed out, the one bodypart header 
that ebXML messagers do care about a little 
(content-id) is one whose alteration will 
most probably throw 
an exception during processing anyway,
if we are using XMLDsig. Since the
error is already detected, no reason
to require internal header signing here

None of the other headers 
(content-description, -disposition,etc)
supply info that needs to be trusted in the typical
ebXML messaging case. If the payload
did happen to be some elaborate MIME
structure of many varied content types
with embedded multiparts and whatnot,
protecting all these headers could get
quite complex. Easier to just envelope 'em
if there is a viable threat of MITM.
Mandating some header protection scheme
again unwarranted.

5. Under a CPA, the packaging elements would specify
what the content types and layout are supposed 
to be for a specific conversation. The
wrong content-type headers could be detected and 
warned about. So, again, embedding and
signing a header is not universally warranted
or necesary.
All that said, if you still want to complicate
things by worrying about a threat with very
little real disutility, the Suresh/RichSalz procedure
seems OK as an optional 2.0 addition. I think
there is yet no compelling reason to require its
use unconditionally within ebXML messaging, however.

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Powered by eList eXpress LLC