New issue
Advanced search Search tips

Issue 821097 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 2
Type: Bug



Sign in to add a comment

Enrollment of U2F_V1 tokens is broken in M66

Project Member Reported by agl@chromium.org, Mar 12 2018

Issue description

This bug exists to track the merge of the following change to M66:

    cryptotoken: fix certificate replacement for U2F_V1.
    
    U2F_V1 is an old (deprecated?) version of U2F where (from reading the
    code) the server-provided challenge is passed directly as the challenge
    hash to the token. (In constrast, U2F_V2 incorporates the
    server-provided challenge into a JSON structure with other values and
    uses the hash of that structure as the challenge hash for the token.)
    
    Google Accounts currently provides both a U2F_V1 and U2F_V2
    registerRequest when a user adds a security key. Only the request that
    corresponds to the version of the token is actually used and, hopefully,
    nobody is registering U2F_V1 tokens any longer.
    
    However, when certificate replacement was added to the extension, it
    broke U2F_V1 because the clientData is missing. This change makes
    certificate replacement (which is enabled by default in Chrome) function
    with U2F_V1 by signing over the server-provided challenge directly.
    
    Bug: 793985
    Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
    Change-Id: Id347067a88e7370a1fa42a160e8f4607dd069092
    Reviewed-on: https://chromium-review.googlesource.com/951859
    Commit-Queue: Adam Langley <agl@chromium.org>
    Reviewed-by: Kim Paulhamus <kpaulhamus@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#541310}

This has been on master for four days now without issue.

Risks: this is a code change to U2F (i.e. gNubby) enrollment. The bug only affects users who are attempting to use v1 Security Keys, which was a very early protocol revision that was never standardised. However, internal metrics suggest that some of these tokens are still in use. We may be deprecating them soon, but we didn't intend to break them in M66.

Benefits: modest; these tokens can only be used on google.com and only a handful exist.
 
Project Member

Comment 1 by sheriffbot@chromium.org, Mar 13 2018

Labels: -Merge-Request-66 Merge-Approved-66 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M66. Please go ahead and merge the CL to branch 3359 manually. Please contact milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), josafat@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Project Member

Comment 2 by bugdroid1@chromium.org, Mar 14 2018

Labels: -merge-approved-66 merge-merged-3359
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a99649fbd7c5aefd232c630c2f41957baa06a93f

commit a99649fbd7c5aefd232c630c2f41957baa06a93f
Author: Adam Langley <agl@chromium.org>
Date: Wed Mar 14 02:30:53 2018

cryptotoken: fix certificate replacement for U2F_V1.

U2F_V1 is an old (deprecated?) version of U2F where (from reading the
code) the server-provided challenge is passed directly as the challenge
hash to the token. (In constrast, U2F_V2 incorporates the
server-provided challenge into a JSON structure with other values and
uses the hash of that structure as the challenge hash for the token.)

Google Accounts currently provides both a U2F_V1 and U2F_V2
registerRequest when a user adds a security key. Only the request that
corresponds to the version of the token is actually used and, hopefully,
nobody is registering U2F_V1 tokens any longer.

However, when certificate replacement was added to the extension, it
broke U2F_V1 because the clientData is missing. This change makes
certificate replacement (which is enabled by default in Chrome) function
with U2F_V1 by signing over the server-provided challenge directly.

Bug:  821097 
Change-Id: Id347067a88e7370a1fa42a160e8f4607dd069092
Reviewed-on: https://chromium-review.googlesource.com/951859
Commit-Queue: Adam Langley <agl@chromium.org>
Reviewed-by: Kim Paulhamus <kpaulhamus@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/960973
Reviewed-by: Adam Langley <agl@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#226}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/a99649fbd7c5aefd232c630c2f41957baa06a93f/chrome/browser/resources/cryptotoken/enroller.js

Comment 3 by agl@chromium.org, Mar 14 2018

Status: Fixed (was: Assigned)

Sign in to add a comment