New issue
Advanced search Search tips

Issue 844195 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac , Fuchsia
Pri: 2
Type: Bug-Security

Blocking:
issue 798795



Sign in to add a comment

Security: SpeechSynthesisEvent exposes high-resolution timestamps

Reported by mds...@gmail.com, May 17 2018

Issue description

VULNERABILITY DETAILS

SpeechSynthesisEvent#elapsedTime is specified to return the elapsed time in
seconds since the associated SpeechSynthesisUtterance began playing to the user.
Chrome instead returns the elapsed time in milliseconds.

Moreover, SpeechSynthesis::StartSpeakingImmediately and
SpeechSynthesis::FireEvent (blink/renderer/modules/speech/speech_synthesis.cc)
draw the timestamps used to calculate the elapsed time value from
CurrentTimeInSeconds, which returns a raw OS timestamp that bypasses the
degradation of resolution applied to performance.now() post-Meltdown/Spectre. We
have been able to observe timing precision of 5-7 microseconds via this route
(vs the 20 microseconds exposed via performance.now).

Ideally, Chrome would have one designated API for obtaining a user-safe
timestamp value, instead of applying the necessary filtering ad-hoc at the
performance.now() API boundary.

VERSION

Chrome Version: 66.0.3359.181 stable
Operating System: Windows 10 Pro Version 1709 (OS Build 16299.371)

REPRODUCTION CASE

`demo.html` compares time intervals extracted from the Web Speech API with ones
obtained via performance.now()
 
demo.html
3.6 KB View Download
Blocking: 798795
Cc: palmer@chromium.org
Cc: katie@chromium.org dmazz...@chromium.org dtseng@chromium.org
Components: Privacy
Labels: Security_Severity-Low Security_Impact-Stable OS-Android OS-Chrome OS-Fuchsia OS-Linux OS-Mac OS-Windows Pri-2
Status: Available (was: Unconfirmed)
Labeling low-severity as high-resolution timers aren't something that is exploitable on their own but are useful as part of timing-based attacks.

katie@ could you please take a look at this or suggest someone more suitable?

Comment 3 by katie@chromium.org, May 18 2018

Owner: katie@chromium.org

Comment 4 by katie@chromium.org, May 18 2018

Status: Started (was: Available)
Project Member

Comment 5 by bugdroid1@chromium.org, May 25 2018

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

commit cd32918faafeb42a02f6d47c41741cc11f43226d
Author: Katie D <katie@chromium.org>
Date: Fri May 25 19:52:44 2018

Use web-safe timestamps in window.speechSynthesis.

Tested to ensure that the values are the same magnitude as before the change.

Bug:  844195 
Change-Id: I8f884e1535037741bc34186edcfb80ac3f96a2bd
Reviewed-on: https://chromium-review.googlesource.com/1066225
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: Jonathan Metzman <metzman@chromium.org>
Commit-Queue: Katie Dektar <katie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561982}
[modify] https://crrev.com/cd32918faafeb42a02f6d47c41741cc11f43226d/third_party/blink/renderer/modules/speech/speech_synthesis.cc
[modify] https://crrev.com/cd32918faafeb42a02f6d47c41741cc11f43226d/third_party/blink/renderer/modules/speech/speech_synthesis.h

Comment 6 by katie@chromium.org, May 25 2018

Status: Fixed (was: Started)
Project Member

Comment 7 by sheriffbot@chromium.org, May 26 2018

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Labels: reward-topanel
Labels: -reward-topanel reward-unpaid reward-500
*** Boilerplate reminders! ***
Please do NOT publicly disclose details until a fix has been released to all our users. Early public disclosure may cancel the provisional reward. Also, please be considerate about disclosure when the bug affects a core library that may be used by other products. Please do NOT share this information with third parties who are not directly involved in fixing the bug. Doing so may cancel the provisional reward. Please be honest if you have already disclosed anything publicly or to third parties. Lastly, we understand that some of you are not interested in money. We offer the option to donate your reward to an eligible charity. If you prefer this option, let us know and we will also match your donation - subject to our discretion. Any rewards that are unclaimed after 12 months will be donated to a charity of our choosing.
*********************************
Thanks for the report, mdsmtp@. The VRP panel decided to award $500 for this. Cheers!
Labels: -reward-unpaid reward-inprocess
Project Member

Comment 12 by sheriffbot@chromium.org, Sep 1

Labels: -Restrict-View-SecurityNotify allpublic
This bug has been closed for more than 14 weeks. Removing security view restrictions.

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

Sign in to add a comment