Re: [secdir] [Captive-portals] Secdir last call review of draft-ietf-capport-rfc7710bis-04

Rifaat Shekh-Yusef <rifaat.s.ietf@gmail.com> Mon, 08 June 2020 22:57 UTC

Return-Path: <rifaat.s.ietf@gmail.com>
X-Original-To: secdir@ietfa.amsl.com
Delivered-To: secdir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D5B723A08AD; Mon, 8 Jun 2020 15:57:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0MiB4Y6-G_95; Mon, 8 Jun 2020 15:57:52 -0700 (PDT)
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DA3E43A0895; Mon, 8 Jun 2020 15:57:51 -0700 (PDT)
Received: by mail-wm1-x331.google.com with SMTP id l17so1069698wmj.0; Mon, 08 Jun 2020 15:57:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/Xlo56ZZAuQCaWTs+wDXHYaZ1tjOg9NtZSVeLVHDA5s=; b=YAJAMxkq/RNbn51D6BsjZ/jH5psdd6aT2ZBaqdso+UjpmmFRMhIJCmz1KEg07VDAbb yq8SiofL28CfPeLBHWBvzHE8tvioBnfjKp7Hr9MIvYPJMS5ZYQmqavfh52/5flqt8OaU Cj/AVVI16uxJlJSglJ+fYllBZSbsxXcstIfg0/F9ucPPYTctN6VbnUNz3veOl5qtffKV au0cWoWmd6bGBWi7/0ZFlRSdE0NU1FC9tm20diGVKNpxZp9nqEFxn1Ka9E/kRH4tFA9J RSyUjCso/XGdiD5waqxUdi5TmPVSWI6XbCOwOfJ89zePM5HwEgoXZJv6eLcKcckuPmVH gp2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/Xlo56ZZAuQCaWTs+wDXHYaZ1tjOg9NtZSVeLVHDA5s=; b=IJNLPsl3OF2SJ4Pt2NWKtW5laJfgtFSg74RPxAQBb6WrUaxBCdwU2SlVTy9R5/K1Vq 8d9Ngkrgpk3JLqdypFqk598aOm8LYRj1LrXvHJb42o3s0hkO6eiXqqHEUcA2MnYZBlhR 28RPT0wHxkJtnk9VwSOv0rJwAAxxbOlNzOYr0aSG+k38nho+EqS4/OiMw1Gb86sr/ieF zPWikW27yNZ2aG2SkIbl3C/DwGTOUYnw4/kCtHMSGkynpJwqM90KIwz6nFQdKm3VARqa msQQktYwtSkU/osyFQy+YYWb/ALRIRQ4BMoIIzbSTPPfukFKvdF2vQ4RqOhtu9Mh6Ct9 aVQg==
X-Gm-Message-State: AOAM531TSttrYUsYp6di4QJa6S6j1KvLrl8X/3uiY9JbYDzIR3I/PMIZ Ix1kxn3WyG1AK2hYdj1lt/QyXKaK2NBDXXOiyJc=
X-Google-Smtp-Source: ABdhPJwgwIbViZKrEVw9o2NzLJVPsIowaFPqn7AA7GyyxwmExminRzi9rq6DGnbVE6jCG0DWZY+2BQcm4vCv8ry87D8=
X-Received: by 2002:a1c:1b17:: with SMTP id b23mr892786wmb.3.1591657070345; Mon, 08 Jun 2020 15:57:50 -0700 (PDT)
MIME-Version: 1.0
References: <CADNypP-MYk31mt2v8sqzYd583cTqHbfB4r6J0V_Lq5T7KuDsxg@mail.gmail.com> <AE32B5DA-FE7F-4691-8C2C-B0E5E9403EC8@apple.com> <CADNypP_BycOUSRiwQyvBfbDeM6-pVBQhvnyQkO4bsB-zstLZtg@mail.gmail.com> <CAMGpriXL30fqPSkoReoS7z94BLOsS2Z=UBbbDhEvRXO2h=PFrA@mail.gmail.com>
In-Reply-To: <CAMGpriXL30fqPSkoReoS7z94BLOsS2Z=UBbbDhEvRXO2h=PFrA@mail.gmail.com>
From: Rifaat Shekh-Yusef <rifaat.s.ietf@gmail.com>
Date: Mon, 8 Jun 2020 18:57:39 -0400
Message-ID: <CADNypP95ifYhJn5RqqukwpZ60Q=uYRv7QQ2FyLLSDjuiuPzQCQ@mail.gmail.com>
To: Erik Kline <ek.ietf@gmail.com>
Cc: Tommy Pauly <tpauly@apple.com>, captive-portals <captive-portals@ietf.org>, Martin Thomson <mt@lowentropy.net>, Benjamin Kaduk <kaduk@mit.edu>, Barry Leiba <barryleiba@computer.org>, IETF SecDir <secdir@ietf.org>, d.thakore@cablelabs.com
Content-Type: multipart/alternative; boundary="000000000000483fe505a79a8a03"
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/VAcuyXeGNbPuQyeGPG_Mt4EsbB4>
Subject: Re: [secdir] [Captive-portals] Secdir last call review of draft-ietf-capport-rfc7710bis-04
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Security Area Directorate <secdir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/secdir>, <mailto:secdir-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/secdir/>
List-Post: <mailto:secdir@ietf.org>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/secdir>, <mailto:secdir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 08 Jun 2020 22:57:55 -0000

On Sun, Jun 7, 2020 at 8:21 PM Erik Kline <ek.ietf@gmail.com> wrote:

> I think there are two separate things here.
>
> [1] The use of HTTPS allows the client to authenticate the API and
> interactive URLs the same way a browser would be confident it's
> talking to amazon.com, for example.
>
> I think in this sense, the text is correct.
>
> The client would not be able to validate the server identity without the
help of the end user, because an attacker could inject DHCP messages to
force the client to contact an attacker controlled server.
The text explicitly states that the end user is expected to be involved,
but some of the replies I received in this thread indicate otherwise.
When you say "the text is correct", do you include the user involvement?



> [2] There is, however, no way to know whether
> bobshouseofportals.example.com is the authoritative captive portal
> service for the MyCoffeeShop ESSID.
>
> Assuming that the client was able to validate the API server's identity in
the previous step, would the client not be able to obtain all the needed
information to validate the web portal server?

Regards,
 Rifaat



> We should have this explicitly stated somewhere.  I couldn't quickly
> find such a section, but perhaps I should add some text about this to
> the 7710bis Security Considerations or thereabouts.
>
> On Sat, Jun 6, 2020 at 1:02 PM Rifaat Shekh-Yusef
> <rifaat.s.ietf@gmail.com> wrote:
> >
> > Hi Tommy,
> >
> > You will probably need to do more than just dropping this specific
> sentence, because the text just before this sentence talks about the client
> authenticating the server and allowing the user to be confident of the
> server and its identity.
> >
> > Regards,
> >  Rifaat
> >
> >
> > On Tue, Jun 2, 2020 at 1:33 AM Tommy Pauly <tpauly@apple.com> wrote:
> >>
> >> Hi Rifaat,
> >>
> >> Your comments make it clear that the recommendation to make the API
> server name visible isn’t necessarily clear. I think it’s not a harmful
> thing to show, as a way to give troubleshooting information and
> transparency to the user, but it is not a security-critical point.
> >>
> >> It seems appropriate to either explain the rationale more in depth, or
> remove that sentence entirely to avoid the misinterpretation.
> >>
> >> Do others in the CAPPORT group have thoughts on this sentence, and any
> background on why we decided to go that way? Would there be any objections
> to removing the sentence?
> >>
> >> Thanks,
> >> Tommy
> >>
> >> On Jun 1, 2020, at 6:05 PM, Rifaat Shekh-Yusef <rifaat.s.ietf@gmail.com>
> wrote:
> >>
> >> 
> >>
> >>
> >> On Sun, May 31, 2020 at 2:07 AM Erik Kline <ek.ietf@gmail.com> wrote:
> >>>
> >>> On Wed, May 20, 2020 at 4:37 AM Rifaat Shekh-Yusef
> >>> <rifaat.s.ietf@gmail.com> wrote:
> >>> >
> >>> > Adding SecDir back to this thread.
> >>> >
> >>> >
> >>> > >Martin Thomson <mt@lowentropy.net> Tue, 19 May 2020 01:02 UTCShow
> header
> >>> > >
> >>> > >On Tue, May 19, 2020, at 07:08, Rifaat Shekh-Yusef wrote:
> >>> > >>    it provides the client of the API
> >>> > >>    an opportunity to authenticate the server that is hosting the
> API.
> >>> > >>    This authentication is aimed at *allowing a user to be
> reasonably
> >>> > >>    confident that the entity providing the Captive Portal API has
> a
> >>> > >>    valid certificate for the hostname in the URI*
> >>> > >[...]
> >>> > >> An end user should be able to validate that the name is
> example.com and
> >>> > >> not any other form of the URI.
> >>> > >> It would be much more difficult for the end user to make sense and
> >>> > >> validate an IP address.
> >>> > >
> >>> > >I think that you missed the point of my comments.  This validation,
> performed by
> >>> > >a user, has no meaningful security value.  The text you cite says
> that the server
> >>> > >has a certificate for the name it chooses, which is not the same as
> "has a certificate
> >>> > >for a name the client expects".  The difference is important.
> >>> > >
> >>> >
> >>> > This is not the way I read these statements from section 4.1 titled
> Server Authentication.
> >>> >
> >>> > Here is the use case I have in mind when I read this section:
> >>> > If I walk into an airport and I see an ad for a paid Internet
> service from example.com, then as an
> >>> > end user it is reasonable to expect that I would have some ability
> to make sense of the name
> >>> > presented to me and make sure it is from example.com if I choose to
> get such a service.
> >>> >
> >>> > If this is not the case, then yo might want to make it clear that
> this is not about Server Authentication
> >>> > as the title of the section and the text inside that section is
> suggesting.
> >>>
> >>> If we changed the API document's section 4.1 title from "Server
> >>> Authentication" to "API Server Authentication", would that be more
> >>> clear?
> >>>
> >>> I reality, users should never see the API URL.
> >>
> >>
> >> The following is a quote from section 4.1 of the API document, which
> implies otherwise:
> >> "The hostname of the API SHOULD be displayed to the user in order to
> indicate the entity which is providing the API service."
> >>
> >> Regards,
> >>  Rifaat
> >>
> >>
> >>
> >>>
> >>> They'll just be
> >>> connecting to "Cool Cafe" or "Awesome Bookshop" ESSIDs.  If anything
> >>> will only be one or both of the "user-portal-url" or "venue-info-url"
> >>> URLs that might be visible in the browser that's opened for the user's
> >>> interaction.
> >>>
> >>> -ek
> >>>
> >>> > Regards,
> >>> >  Rifaat
> >>> >
> >>> >
> >>> >
> >>> > >In a typical web scenario, a person types a string in and (ignore
> the case where there
> >>> > >is an extra hop via a search engine) that string determines what is
> acceptable as a
> >>> > >server identity.  The exposure to confusables is limited (under a
> set of other assumptions,
> >>> > >HSTS, etc...).  Here, the network has free reign to do as they
> choose with homoglyphs and
> >>> > >other such nonsense.  Any expectation you might have about this
> really being a trustworthy
> >>> > >entity is meaningless in this context.
> >>> > >
> >>> > >There are protections against this, but they all lie firmly in the
> anti-phishing domain.
> >>> > >Most of those rely on having a certificate though, so the
> requirement for HTTPS is in
> >>> > >service of that, not in terms of ensuring that an untrained human
> can make a security
> >>> > >critical decision based on poisoned information.
> >>> >
> >>> > On Mon, May 18, 2020 at 5:08 PM Rifaat Shekh-Yusef <
> rifaat.s.ietf@gmail.com> wrote:
> >>> >>
> >>> >> Adding Ben.
> >>> >>
> >>> >>
> >>> >> On Sun, May 17, 2020 at 9:26 PM Martin Thomson <mt@lowentropy.net>
> wrote:
> >>> >>>
> >>> >>> Adding more lists..
> >>> >>>
> >>> >>> On Sun, May 17, 2020, at 02:50, Rifaat Shekh-Yusef wrote:
> >>> >>> > > Here is a quote form the API document:
> >>> >>> > > "The hostname of the API SHOULD be displayed to the user in
> order to indicate the entity which is providing the API service."
> >>> >>> > >
> >>> >>> > > This seems to suggest that the user is expected to inspect the
> displayed name and make sure it is make sense in the context of whoever is
> providing that service.
> >>> >>>
> >>> >>> I don't think that is the case.  If this were a security
> mechanism, then it would use "MUST".  This is likely for the purpose of
> enabling some sort of accountability.  In other words, this is to offer
> maximal information about what is going on.
> >>> >>>
> >>> >> Here is the sentence just before the above quote from the API
> document:
> >>> >>
> >>> >>    it provides the client of the API
> >>> >>    an opportunity to authenticate the server that is hosting the
> API.
> >>> >>    This authentication is aimed at allowing a user to be reasonably
> >>> >>    confident that the entity providing the Captive Portal API has a
> >>> >>    valid certificate for the hostname in the URI
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >>>
> >>> >>> > > Since this would be an easier attack compared to the
> interception attack, and IP address is still permitted, then an attacker
> might force the use of IP address to make it harder for the user to make
> sense of the displayed name.
> >>> >>>
> >>> >>> I don't think that is materially different than getting a name
> with confusable characters (or using the prefix hack, example.com.<some-guid>.example,
> in an attempt to confuse).
> >>> >>
> >>> >>
> >>> >> An end user should be able to validate that the name is example.com
> and not any other form of the URI.
> >>> >> It would be much more difficult for the end user to make sense and
> validate an IP address.
> >>> >>
> >>> >> Regards,
> >>> >>  Rifaat
> >>> >>
> >>> > _______________________________________________
> >>> > Captive-portals mailing list
> >>> > Captive-portals@ietf.org
> >>> > https://www.ietf.org/mailman/listinfo/captive-portals
>