New issue
Advanced search Search tips

Issue 676353 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 630147



Sign in to add a comment

Log handshake messages from in NetLog

Project Member Reported by davidben@chromium.org, Dec 21 2016

Issue description

In TLS 1.3, most of the handshake is encrypted, which is great. But this means, once TLS 1.3 is widespread and we start needing to debug problems with it, net-internals logs will be pretty much opaque. There's SSLKEYLOGFILE, but asking users for that sounds absurd.

Instead, register the message callback in BoringSSL and put them in NetLog when logging is enabled. This will only contain the handshake transcript, not any private key material.

Even for TLS 1.2, it means we won't have to ask for tcpdumps or net logs with raw byte data for the cases where we just care about the handshake messages. (What extensions were negotiated, etc.)


The one caveat here is client certificates, which we currently do not log. We may wish to redact the client Certificate message. (This would be easy enough to do. Though it does mean we can't check the CertificateVerify signature which I've done on occasion.)

battre: Same question as with issue #674377, but I figure I ought to ask separately about this scenario. For people following the instructions at [0] and attaching logs for us in bug reports, should the client certificate message be included at the default level (where we do not redact URLs but do redact cookies and HTTP credentials)?

Background info: This does not include the private key (needed to impersonate), but does contain the user's public key and also often things like a name, email, organization, etc. In TLS 1.2 this was, despite this, transmitted in plaintext anyway (sigh). TLS 1.3 fixes this and encrypts it.

[0] https://dev.chromium.org/for-testers/providing-network-details
 

Comment 1 by battre@chromium.org, Dec 23 2016

Given that people will upload the network reports to the public bug tracker, I think that at default level, we should redact the client certificate message to prevent accidentally uploading PII.
Sounds good. That should be straightforward to do.
Owner: davidben@chromium.org
Status: Started (was: Untriaged)
https://codereview.chromium.org/2704623002/
Cc: mmenke@chromium.org
 Issue 430599  has been merged into this issue.

Comment 5 by mattm@chromium.org, Apr 17 2017

Cc: mattm@chromium.org
 Issue 712315  has been merged into this issue.
Project Member

Comment 6 by bugdroid1@chromium.org, Apr 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cef9e211832bf2d1f01f750296238fed28e416f0

commit cef9e211832bf2d1f01f750296238fed28e416f0
Author: davidben <davidben@chromium.org>
Date: Wed Apr 19 15:00:10 2017

Add non-application-data SSL messages to NetLog.

Right now we usually ask the reporter to give us a full byte-level log,
but this unnecessarily leaks a lot of information. In TLS 1.2, these
messages are all (save the Finished, which is not interesting) sent in
the clear anyway. This also doesn't work for renegotiation which we've
usually been blind for.

In TLS 1.3, these messages are now encrypted, which means even our prior
strategy wouldn't work. It's also somewhat silly to ask users for full
byte logging when we're only interested in protocol-level information.

Per the bug, Certificate messages we send (client certs) are filtered
out unless full byte logging is enabled.

BUG= 676353 

Review-Url: https://codereview.chromium.org/2704623002
Cr-Commit-Position: refs/heads/master@{#465603}

[modify] https://crrev.com/cef9e211832bf2d1f01f750296238fed28e416f0/net/log/net_log_event_type_list.h
[modify] https://crrev.com/cef9e211832bf2d1f01f750296238fed28e416f0/net/socket/ssl_client_socket_impl.cc
[modify] https://crrev.com/cef9e211832bf2d1f01f750296238fed28e416f0/net/socket/ssl_client_socket_impl.h

Labels: M-60
Status: Fixed (was: Started)

Sign in to add a comment