Sandy Murphy did a good secdir review of the answermode draft that I'd like to share with the working group. In trying to answer some of the questions raised, I found myself stumbling against some of the more perplexing (to me, at least) parts of the SIP specs, especially subtle nuances in caller preferences. I'll also send my rather lengthy response, under separate cover.



Begin forwarded message:

From: [EMAIL PROTECTED] (Sandy Murphy)
Date: August 9, 2007 5:47:32 PM CDT
To: [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED] lucent.com, [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: secdir of draft-ietf-sip-answermode-04.txt

I have reviewed this document (draft-ietf-sip-answermode-04.txt) 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.


My apologies for not completing this review within the period of the last call. Note that I am not sending these comments to the ietf.org list. I note that few others commented on this draft during the last call period,
so my late comments are more unwelcome, I am sure.

This draft adds a new header type to SIP interactions, a header called
Answer-Mode, which allows a UAS to request that the UAC automatically
answer a call without waiting for user action for acceptance.  The new
feature is under user policy control, based on authenticated SIP identify.

I have not found significant security shortcomings on this draft. The new feature presents obvious security vulnerabilities, which the authors have
related with adequate detail.  The security of the new feature relies on
the authenticated identity, the security of the SIP security architecture,
and the user's policy control over acceptance of automatic answer calls.

I do believe that the authors have glossed over the level of risk of two
discussed vulnerabilities.  First, the SIP security architecture secures
the hop-hop transfer of a SIP message, between UAS and outgoing proxy
server, between proxy servers, and between incoming proxy server and UAS.
The Answer-Mode header insertion, modification or deletion by proxy
servers and the user dependence on the initiator's authenticated SIP
identity provides (yet another?) opportunity for a mis-behaving proxy to
damage the end system.  As I note below, the draft says a proxy must not
alter these headers, but does not address the insertion or deletion (that
could be an unintended omission in the text).  Second, the authors
mention several denial of service attacks ("battery rundown", "forced
busy"), but combine these with the "whoopee-cushion" attack in the
category of "insertion attacks", and thereafter focus on the
"whoopee-cushion" style playout in their discussion of insertions.  That
leads them to slight the seriousness of the insertion attacks. I believe
that the authors should also note that automatic answer has another
denial of service sort of impact - that of cost to the user.  (Having
recently received my first spam text message on my cell phone, which
incurs financial cost for me, I am sensitive to this impact.)

There is a suggestion in Sect 7.4 of a mandated policy that would
prohibit (MUST NOT) auto answer when the media flow is outbound.  It
appears that this is not subject to user policy.  It seems odd to create
a new feature and then forbid its use.

I have other comments, not related to security.  One overall concern was
the draft's inattention to error modes, when headers and parameters
did not match as expected, etc.

Also, other SIP specs of new headers (e.g., RFC3841, RFC3325, RFC4474)
describe a new entry in the SIP header table (RFC3261, Table 2) that
summarizes the header use (valid in request or response, mandatory or
optional in methods, etc).  Such a summary would be good here as well.


Detailed comments:

Sect 1, page 5:
"Two different use cases converged to create the consensus", "The first
key use", "The second use case",  "Another representative use case was
introduced during discussion"  - Doesn't that make three different use
cases? Unless two of these collapse to one? Or the authors are trying to
distinguish use cases that created consensus from those raised during
discussion?

Sect 3, page 7:
                                  This sort of interaction generally
    occurs only during the formation of a dialog and its initial usage,
    and not during subsequent operations such as re-INVITE.

What happens if these header fields appear in a mid-dialog (re-) INVITE (or
ACK, CANCEL, whatever)?

Sect 4 page 8:

    Each value of the Answer-Mode or Priv-Answer-Mode header field can
include an optional parameter, "require". If present, this parameter
    indicates that the UAS would prefer that the UAC reject the request
if the UAC is unwilling (perhaps due to policy) to answer in the mode
    requested, rather than answering in another mode.

Doesn't this have UAS and UAC switched?  If not, the authors should
indicate more clearly why in this paragraph, the UAC is judging the
request and the UAS is making the request and indicating its preference.

Sect 4.1.1, page 8
UAS MUST NOT answer without user input in cases where the privacy or
    security of the user would be compromised as a result.

How does the UAS know?  Is this a per-method or per-application (however
that might be determined) configuration in the UAS?

Sect 4.1.1, page 9

    A UAC supporting the Answer-Mode and Priv-Answer-Mode header fields
    indicates its support by including an option tag of "answermode" in
    the Supported header field of all requests it sends.

In RFC 3261, sect 8.1.1.9 says that a Supported header SHOULD be included
in all requests.  Is this section expanding that to say that Supported
MUST be included if the request includes an Answer-Mode?

Section 4.1.2, page 9


    To indicate that it supports the answer-mode negotiation feature, a
    UA includes an extensions parameter with a value that includes
    "answermode".  Example:

      ;extensions="answermode,100rel,gruu"

in the Contact: header field of its REGISTER requests. This usage of
    feature tags is described in [RFC3840].


RFC3840 says:
    The REGISTER request MAY contain a Require header field with the
    value "pref" if the client wants to be sure that the registrar
understands the extensions defined in this specification. This means
    that the registrar will store the feature parameters, and make them
    available to elements accessing the location service within the
domain. In the absence of the Require header field, a registrar that
    does not understand this extension will simply ignore the Contact
    header field parameters.

This section does not mention a Require header of "pref" with respect to
use of the "extensions" feature tag.  So a registrar that did not
understand the use of "extensions" would ignore the
"extensions=answermode" in the Contact header - is this a matter for
concern? I could see the chance that a contact might be selected even if the INVITE indicated that only contacts that understood answermode should
be selected.  If that is likely to be important in applications that
stipulate <extensions="answermode";require>, should the Require: pref be
stipulated, or at least mentioned, here?

RFC3840 also says:
                           It is possible that other header fields and
    feature tags defined in the future may also overlap.  When there
    exists a feature tag that describes a capability that can also be
    represented with a SIP header field, a UA MUST use the header field
    to describe the capability.  A UA receiving a message that contains
both the header field and the feature tag MUST use the header field,
    and not the feature tag.

There are several header fields that define the answermode capability,
including Supported, Require, and Answer-Mode. I am uncertain whether the
above paragraph applies to the answermode capability, when a
<extensions="answermode"> feature tag is included in Contact headers. But
I think that the text of this draft ought to explicitly state that there
was no overlap, or at least no conflict.

Sect 4.1.3, page 9:

A UAC supporting this specification includes an Answer-Mode or Priv-
    Answer-Mode header field in an INVITE where it wishes to influence
    the answering mode of the responding UAS.

Note: this is meaningful only in initial or dialog-forming INVITE
       requests.

Again - what if it is used in a re-INVITE? Is that an error? What if the
original INVITE did not include an Answer-Mode header?  Or the re-INVITE
Answer-Mode is different from the initial Answer-Mode?

Sect 4.1.3, page 10

To request that retargeting proxies in the path preferentially select
    targets that have indicated support for this extension in their
    registration, a UAC includes an Accept-Contact header field with an
    extensions parameter having a value of "answermode".  This usage of
    Accept-Contact is described in [RFC3841].  This would normally be
    used in conjunction with the "Require: answermode" header field as
    described above.  Example:

      Require: answermode
      Accept-Contact: *;extensions="answermode";methods="INVITE"

Is it an error to use the extensions="answermode" if there is NOT a
Require: answermode?  What about including an <extensions="answermode">
when there is no Answer-Mode header?

How about the final example:

    [RFC3841].  This would normally be used in conjunction with the
    "Require: answermode" header field as described above.  Example:


      Require: answermode
      Accept-Contact: *;extensions="answermode";
       methods="INVITE";require;explicit

Is it OK to have <extensions="answermode";require> if there is NOT a
Require: answermode? I believe that the Require header is a directive to
the eventual UAS and the Accept-Contact is a directive to retargeting
proxies involved in the request, so if the retargetting proxy ignores the <extensions="answermode";require> part (because it did not understand it)
and chooses contacts that do not understand answermode, the Require
parameter will still prevent the call from succeeding at the contact's
UAS.  Correct?.  When the retargeting proxies do understand answermode,
would the Require header be redundant in a request that also had an
<extensions="answermode",require>?

Sect 4.2.1, page 11

                                          However, the serving proxies
    (proxies responsible for resolving an address-of-record into a
    registered contact) MAY exercise control over the requested answer
mode, either inserting or deleting an Answer-Mode or Priv-Answer- Mode
    header field or altering the value of an existing header field
. . .
    consequently proxies MUST NOT alter Answer-Mode or Priv-Answer-Mode
    header fields unless explicitly authorized to do so by an external
agreement between the proxy operator and the user of the UA that the
    proxy is serving.

First - Since the first text explicitly separates inserting and deleting
from altering, it is unclear whether the "MUST NOT" extends to the
insertion and deletion as well.

Second - this "explicitly authorized" is not performed in the protocol, so
it is not an active authorization, correct?  If this is a matter of
configuration of the proxy, it should be stated as such.  This is a
requirement of operational use, not a protocol implementation requirement.

Sect 4.3.1, page 12-13


    For a request having an Answer-Mode value of "Auto" and an Answer-
Mode parameter of "require", the UAS SHOULD, if the calling party is
    authenticated and authorized for automatic answering, accept the
request. The UAS MUST NOT allow "manual" answer of this request, but
    MAY reject it.  If, for whatever reason, the UAS chooses not to
accept the request automatically, the UAS MUST reject the request and
    SHOULD do so with a "403 (Forbidden)" response, and MAY include a
    reason phrase of "automatic answer forbidden"

This text does not say what happens if the calling party is not
authenticated and authorized for automatic answering.  The previous
paragraph, which discusses the Answer-Mode of Auto *without* the Require
parameter, does discuss this case explicitly, so I noticed the absence
here. In that previous paragraph, the unauthenticated, unauthorized call was subject to the rules of "Manual" calls, which might allow auto answer.
In this case, is a similar treatment possible - that if the policy for
Manual answermode calls allows auto answer, that the unauthenticated,
unauthorized call could still be answered automatically?  Nothing in the
language here prohibits that, though it does prohibit a Manual answer.

The S/MIME discussion in RFC3261 mentions cases where explicit guidance
MUST be sought from the user regarding a certificate (see page 203), but
I do not believe that there is a conflict between that RFC3261 guidance
and this prohibition, because a UAS is not required to comply with a
request for auto-answer.  But I don't know if that was considered by the
authors.  I am unsure if the S/MIME processing could sometime following
an answer by the UAS (RFC3261: "On future occasions... the UA MUST notify
its user"), or if disturbing the user for S/MIME purposes would be
considered to violate this prohibition against allowing manual answer.
I'm not certain what use cases would motivate a prohibition against manual
answer, so I can't judge whether the S/MIME notificatoin of the user
would be a bad thing in those cases.

Sect 4.3.2

The discussion of Priv-Answer-Mode points out that this feature allows
the caller to choose whether to make a request using its elevated
privileges or using normal privileges.  This same behavior could be
possible if a caller had multiple identities for the caller, could it
not? No objection to using a separate call to indicate deliberate choice
of use of the privilege, I just wondered if using multiple identities
was considered.

Section 6, page 16

None of the examples include a Supported header.  As noted, Sect 4.1.1
implies that the Supported header is included in all requests.

Section 7, page 17

The first part of this section lists several attacks, including spam,
battery-rundown, and "forced busy".  It later divides the attacks into
insertion and interception.  Later text focuses on the "whoopee-cushion"
playout of inappropriate content in discussions of insertion attacks. But
the denial of service aspect of battery-rundown and "forced busy" are
neglected.  So for example:

It seems reasonable to consider the "bug-my-phone" attack as being in
    a different class (potentially far more severe) than the "whoopee-
    cushion" attack.  This distinction suggests that security policy
    could be established in different and presumably less restrictive
    fashion for inbound media flows than for outbound media flows.

When the user incurs cost or denial-of-service from accepted inbound
media, I not agree that a less restrictive policy could be so easily
assumed to be appropriate for insertion attacks on inbound media flows.

Sect 7.2, page 19

This section discusses the mitigating factors of application design to the
security concerns.  Their first example says:


    In the most common use cases, the security aspects are somewhat
    mitigated by design aspects of the application.  For example, in
    traditional telephony, the called party is alerted to the request
    (the phone rings), no media session is established without the
acceptance of the called party (picking up the phone), and the media
    path is most commonly delivered to a single-user handset.
Consequently, this application (although bidirectional) is relatively secure against both media insertion and media interception attacks of
    the sort enabled by the extensions in this document.  The use of
policy-free automatic-answering devices (like answering machines) and
    amplifiers (speakerphones and call-screening devices) weakens this
    defense.

The traditional telephony application is relatively secure because the
application precludes automatic answering, so the security vulnerability
does not exist. If the message is that a good design defense against the new auto answer feature is not to use it, then this paragraph does present
a good case, but not one that you would expect the authors to promote.

    Similar approaches apply to most applications.  Insertion can be
controlled (but not eliminated) by combining identity mechanisms with
    simple authorization policy, and interception can be effectively
    eliminated by combining strong identity mechanisms with aggressive
    authorization policy and/or user interaction.

(This paragraph is another example of minimizing the threat of insertion
attacks in comparison with interception attacks.)

This is a section discussing Application Design.  Is there a suggestion
that authorization policy, whether simple or aggressive, would be a part
of application design?  Note below in Sect 7.4, the draft mandates (MUST
NOT) certain policies.  Is the intended usage that applications or UAs
will have hardcoded policies -- policies are not under user control?
Some users may not assess their risk as the policies mentioned here
suggest.

Sect 7.3, page 19:  (editorial only)

This section reads as if some section of text has been removed, with the
remainder retaining vestiges of reference to the removed text.

The extensions described in this document provide mechanisms by which
    a UAC can request that a UAS not deploy two of the five defensive
    mechanisms

Which five defensive mechanisms?

(10 lines later...)
    To recap, we have five defense mechanisms available at the
    application level:

Oh, THOSE five defensive mechanisms.

What do you mean "to recap"?  There's been no discussion to recap.
Unless you mean something like "From the discussion of the examples
above, we can see there are five...".  But I doubt it - the "limit
I/O" defense is not mentioned anywhere else.

Section 7.4, page 21

This section discusses "minimal policy requirement"

   User agents implementing this specification SHOULD NOT establish a
   session providing inbound media without explicit user acceptance
   where the requesting user is unknown, or is known and has not been
   granted authorization for such a session.  This requirement is
   intended to prevent "SPAM broadcast" attacks" where unexpected and
   unwanted media is played out at a UAS .

So the UA SHOULD NOT allow automatic answering for inbound media when the
caller is not explicitly authorized.

   User agents implementing this specification MUST NOT establish a
   session providing outbound or bidirectional media sourced from the
user agent without explicit user acceptance. Loopback media used for
   connectivity testing is not constrained by this requirement.  This
requirement is intended to assure that this extension can not be used
   to turn a UAS into a remote-controlled microphone (or "bug") without
   the knowledge of its user.

Does this mandate that a UA always reject auto-answer when that might
result in outbound media flows?  So the user would not be able to
override this policy?  Doesn't that make "Answer-mode: auto" useful only
for inbound media flows?

This is certainly more secure, but I wonder at the specification of
a feature that is mandated not to be used in about half the cases.
Why bother?  Why not specify the Auto answer mode for use only in
outbound media flows if this policy requirement was to be placed on
the system?

==============================================================

Nits:

p 6
   o  Alerting Mode includes behaviors in a SIP UA relating to to
                                                               ^^

p 7
   This syntax includes extension hooks, "token" for answer-modes
   values,
                                                     ^^^^^^^^^^^^
   ^^^^^^
either "answer-mode-value" or "Answer-Mode values" or
"Answer-Mode's values"

p 8
   Manual:  The UAS is asked to not accept
                             ^^^^^^
                             not to

(depending on how Draconian the RFC Editor adherence to grammar
rules is)

p 15
   Consequently, UAS supporting this specification
                ^
                a

determination, and the default configuration SHOULD be to not include
                                                          ^^^^^^
                                                          not to

(depending on how Draconian the RFC Editor adherence to grammar
rules is)

p 21
   intended to prevent "SPAM broadcast" attacks" where unexpected and
                                               ^




_______________________________________________
Sip mailing list  https://www1.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

Reply via email to