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

Issue 635574 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

Use-after-poison in blink::CrossThreadPersistentRegion::shouldTracePersistentNode

Project Member Reported by ClusterFuzz, Aug 8 2016

Issue description

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

Fuzzer: therealholden_worker
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Use-after-poison READ 8
Crash Address: 0x7ecde1ce8338
Crash State:
  blink::CrossThreadPersistentRegion::shouldTracePersistentNode
  blink::PersistentRegion::tracePersistentNodes
  blink::ThreadHeap::visitPersistentRoots
  
Recommended Security Severity: High

Regressed: https://cluster-fuzz.appspot.com/revisions?job=mac_asan_chrome&range=409589:409828

Minimized Testcase (2.28 Kb): https://cluster-fuzz.appspot.com/download/AMIfv96jXqJu43my6uL7cwZa8coxo3lgrj3uliw7eiNxhHJ3kKAhFCWlyZRVcA2zeA01zBYzMOgd3XD_2HEqrHwl4k9ZHJ-R29j94HxFbpgbTQf4_qYbyszE6Bcd_UFMzUmqlvw2uJ-V0FAscTevs3XMm6nNtufEww?testcase_id=5170535808106496

Additional requirements: Requires HTTP

Issue manually filed by: mbarbella

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

Comment 1 by sheriffbot@chromium.org, Aug 9 2016

Labels: M-54
Project Member

Comment 2 by sheriffbot@chromium.org, Aug 9 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
Project Member

Comment 3 by sheriffbot@chromium.org, Aug 9 2016

Labels: Pri-1
Cc: haraken@chromium.org
Components: Blink>MemoryAllocator>GarbageCollection
Owner: sigbjo...@opera.com
Status: Assigned (was: Untriaged)
sigbjornf, mind taking a look at this one?
If CrossThreadPersistent<>s will be increasingly kept as fields on Blink GCed objects, then requiring all of those to be eagerly finalized, seems unworkable.

Hence, CrossThreadPersistentRegion::shouldTracePersistentNode() will at times be working over nodes that point into heap pages that will be lazily swept. So we'll have to exempt shouldTrace*() from ASan sanitization, as those lazily swept heap pages will have been poisoned by Oilpan.
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 10 2016

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

commit c00a99cd755fb8d985d811fef885a3dcf446abf2
Author: sigbjornf <sigbjornf@opera.com>
Date: Wed Aug 10 06:24:46 2016

ASan-exempt CrossThreadPersistentRegion::shouldTracePersistentNode().

CrossThreadPersistent<T>s can reside on heap objects which are lazily
swept. Consequently, when a (per-)thread GC runs and it iterates over the
CrossThreadPersistentRegion to determine what nodes point into its heaps,
it can in the general case also touch lazily sweepable heap objects.

This is a benign read access to a region of memory that Oilpan has poisoned;
therefore, shouldTracePersistentNode() must be exempt from ASan checks to
prevent false negatives from being caught and reported.

R=
BUG= 635574 

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

[modify] https://crrev.com/c00a99cd755fb8d985d811fef885a3dcf446abf2/third_party/WebKit/Source/platform/heap/PersistentNode.h

Comment 7 by sigbjo...@opera.com, Aug 10 2016

Status: Fixed (was: Assigned)
Project Member

Comment 8 by sheriffbot@chromium.org, Aug 10 2016

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

Comment 9 by ClusterFuzz, Aug 11 2016

ClusterFuzz has detected this issue as fixed in range 410309:410323.

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

Fuzzer: therealholden_worker
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Use-after-poison READ 8
Crash Address: 0x7ecde1ce8338
Crash State:
  blink::CrossThreadPersistentRegion::shouldTracePersistentNode
  blink::PersistentRegion::tracePersistentNodes
  blink::ThreadHeap::visitPersistentRoots
  
Recommended Security Severity: High

Regressed: https://cluster-fuzz.appspot.com/revisions?job=mac_asan_chrome&range=409589:409828
Fixed: https://cluster-fuzz.appspot.com/revisions?job=mac_asan_chrome&range=410309:410323

Minimized Testcase (2.28 Kb): https://cluster-fuzz.appspot.com/download/AMIfv96jXqJu43my6uL7cwZa8coxo3lgrj3uliw7eiNxhHJ3kKAhFCWlyZRVcA2zeA01zBYzMOgd3XD_2HEqrHwl4k9ZHJ-R29j94HxFbpgbTQf4_qYbyszE6Bcd_UFMzUmqlvw2uJ-V0FAscTevs3XMm6nNtufEww?testcase_id=5170535808106496

Additional requirements: Requires HTTP

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

If you suspect that the result above is incorrect, try re-doing that job on the test case report page.
Issue 638574 has been merged into this issue.
Labels: -reward-topanel reward-unpaid reward-3500
Another $3,500 courtesy of your fuzzer!
Labels: reward_to-therealholden_at_gmail.com
Labels: -reward-unpaid reward-inprocess
Project Member

Comment 15 by sheriffbot@chromium.org, Nov 16 2016

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