New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 610643 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug-Security



Sign in to add a comment

Heap-use-after-free in blink::DeferredTaskHandler::handleDirtyAudioNodeOutputs

Project Member Reported by ClusterFuzz, May 10 2016

Issue description

Detailed report: https://cluster-fuzz.appspot.com/testcase?key=5175218980519936

Fuzzer: attekett_webaudio_fuzzer
Job Type: linux_asan_chrome_chromeos
Platform Id: linux

Crash Type: Heap-use-after-free READ 8
Crash Address: 0x6020001aa8b8
Crash State:
  blink::DeferredTaskHandler::handleDirtyAudioNodeOutputs
  blink::DeferredTaskHandler::handleDeferredTasks
  blink::AbstractAudioContext::handlePreRenderTasks
  
Recommended Security Severity: High

Regressed: https://cluster-fuzz.appspot.com/revisions?job=linux_asan_chrome_chromeos&range=391820:391867

Unminimized Testcase: https://cluster-fuzz.appspot.com/download/AMIfv95hZ_K_ZPZvxdu9-Eh0dmP_zllTNZPedVF969DKfXyd4U4RNa4AMabXP2u4fFl3uzv4yL_grkbc7COjlv55DxZOkIwlW0PKN4eFYleQ5FqvHWYqi_GwwI3vj09Udt3R8SWt3ET3MOH77HZjfVWLKe3UcOwAY26jNOzxrzqGpbhqwIxt4ug


Filer: mmoroz

See https://dev.chromium.org/Home/chromium-security/bugs/reproducing-clusterfuzz-bugs for more information.
 

Comment 1 by mmoroz@chromium.org, May 10 2016

Cc: mmoroz@chromium.org
Labels: Pri-1
Owner: tkent@chromium.org

Comment 2 by tkent@chromium.org, May 10 2016

Cc: rtoy@chromium.org
Owner: sigbjo...@opera.com
Project Member

Comment 3 by ClusterFuzz, May 10 2016

Status: Assigned (was: Available)
Project Member

Comment 4 by sheriffbot@chromium.org, May 10 2016

Labels: M-52
Project Member

Comment 5 by sheriffbot@chromium.org, May 10 2016

Labels: ReleaseBlock-Beta
This issue is a security regression. If you are not able to fix this quickly, please revert the change that introduced it.

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

Comment 6 by sigbjo...@opera.com, May 10 2016

Status: Started (was: Assigned)
Components: Blink>WebAudio
Project Member

Comment 8 by bugdroid1@chromium.org, May 10 2016

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

commit ac763683bafd8fe61ef1fe3285152b37d2bdab24
Author: sigbjornf <sigbjornf@opera.com>
Date: Tue May 10 21:14:00 2016

Prevent audio thread access to finished, non-active AudioNodes.

Follow up r392110 and have the audio thread skip over m_activeSourceNodes
nodes it has already deemed to be finished & removable by the main thread.
Accessing these cannot be safely done.

R=
BUG= 610643 

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

[modify] https://crrev.com/ac763683bafd8fe61ef1fe3285152b37d2bdab24/third_party/WebKit/Source/modules/webaudio/AbstractAudioContext.cpp
[modify] https://crrev.com/ac763683bafd8fe61ef1fe3285152b37d2bdab24/third_party/WebKit/Source/modules/webaudio/AbstractAudioContext.h

Comment 9 by sigbjo...@opera.com, May 10 2016

Status: Fixed (was: Started)
Project Member

Comment 10 by ClusterFuzz, May 11 2016

Labels: Merge-NA
Project Member

Comment 11 by sheriffbot@chromium.org, May 11 2016

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Project Member

Comment 12 by bugdroid1@chromium.org, May 24 2016

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

commit 7b953ca0869bb4f2910b0f834b0ce7ad89166445
Author: sigbjornf <sigbjornf@opera.com>
Date: Tue May 24 18:27:25 2016

Gracefully handle dirtying of audio nodes while processing current set.

When processing the set of dirty output nodes, nodes further down the
chain may be marked as dirty as a result. Take that into account
when iterating over the current set.

R=hoch
BUG= 610643 , 613902

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

[modify] https://crrev.com/7b953ca0869bb4f2910b0f834b0ce7ad89166445/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp

Hopefully #12 takes care of it, let's wait & see.
Project Member

Comment 14 by bugdroid1@chromium.org, Jun 29 2016

Labels: merge-merged-2743
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d0b96fee6dfd3887573769b147952633720cc36c

commit d0b96fee6dfd3887573769b147952633720cc36c
Author: Alex Mineer <amineer@chromium.org>
Date: Wed Jun 29 15:43:58 2016

Gracefully handle dirtying of audio nodes while processing current set.

When processing the set of dirty output nodes, nodes further down the
chain may be marked as dirty as a result. Take that into account
when iterating over the current set.

R=hoch
BUG= 610643 , 613902

Review-Url: https://codereview.chromium.org/2006883002
Cr-Commit-Position: refs/heads/master@{#395643}
(cherry picked from commit 7b953ca0869bb4f2910b0f834b0ce7ad89166445)

Drop unique audio thread ID requirement.

r391848 introduced the requirement that, once set, the audio thread ID
could not be changed. This is proving too burdensome a constraint to
keep, in case audio device threads do end up being stopped and new
ones created.

While r395182 took care of some cases where audio threads end up
stopping, carefully resetting the recordeed audio thread ID, other
cases remain (see associated bug.) While those could be similarly
handled, precisely tracking the current audio thread ID is proving
to not be worth the overhead. Hence, retire the constraint and let
the audio thread processing a render quantum set its thread ID as
part of executing, irrespective of what audio thread executed
the previous quantum.

This effectively reverts r395182.

R=
BUG=613902

(cherry picked from commit 94a98a7b9932aafbb3baeabfec458fcdeea16707)

Review-Url: https://codereview.chromium.org/2008903002
Cr-Original-Commit-Position: refs/heads/master@{#395682}
Cr-Commit-Position: refs/branch-heads/2743@{#520}
Cr-Branched-From: 2b3ae3b8090361f8af5a611712fc1a5ab2de53cb-refs/heads/master@{#394939}

[modify] https://crrev.com/d0b96fee6dfd3887573769b147952633720cc36c/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp

Labels: -reward-topanel reward-unpaid reward-3500 reward_to-attekett_at_gmail.com
Nice - $3,500 for this one.
Labels: -reward-unpaid reward-inprocess
Project Member

Comment 17 by sheriffbot@chromium.org, Aug 17 2016

Labels: -Restrict-View-SecurityNotify
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
Project Member

Comment 18 by sheriffbot@chromium.org, Oct 1 2016

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
Project Member

Comment 19 by sheriffbot@chromium.org, Oct 2 2016

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
Labels: allpublic
Issue 613902 has been merged into this issue.

Sign in to add a comment