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

Issue 740314 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac , Fuchsia
Pri: 1
Type: Bug-Security

Blocking:
issue 770106



Sign in to add a comment

CHECK failure: actual_unused_property_fields > map()->unused_property_fields() in objects-debug

Project Member Reported by ClusterFuzz, Jul 8 2017

Issue description

Detailed report: https://clusterfuzz.com/testcase?key=6211017381249024

Fuzzer: inferno_js_fuzzer
Job Type: linux_asan_d8_dbg
Platform Id: linux

Crash Type: CHECK failure
Crash Address: 
Crash State:
  actual_unused_property_fields > map()->unused_property_fields() in objects-debug
  v8::internal::JSObject::JSObjectVerify
  v8::internal::Object::ObjectVerify
  
Sanitizer: address (ASAN)

Regressed: V8: 46477:46478

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6211017381249024


Issue filed automatically.

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

Comment 1 by sheriffbot@chromium.org, Jul 8 2017

Labels: M-61
Project Member

Comment 2 by sheriffbot@chromium.org, Jul 8 2017

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

If this doesn't affect a release branch, or has not been properly classified for severity, please update the Security_Impact or Security_Severity labels, and remove the ReleaseBlock label. To disable this altogether, apply ReleaseBlock-NA.

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

Comment 3 by sheriffbot@chromium.org, Jul 8 2017

Labels: Pri-1
Project Member

Comment 4 by sheriffbot@chromium.org, Jul 9 2017

Labels: M-61
Owner: titzer@chromium.org
Status: Assigned (was: Untriaged)
titzer@chromium.org, your CL is in the regression range. Could you help triage this issue? Please feel free to re-assign. 

Thanks!

Comment 6 by titzer@chromium.org, Jul 11 2017

Cc: jarin@chromium.org
Owner: mstarzinger@chromium.org
As discussed in person, it appears that when the deoptimizer materializes a JS_ARGUMENTS object, the first object it creates does not verify correctly:

diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
index 5ff442588c..78a284699d 100644
--- a/src/deoptimizer.cc
+++ b/src/deoptimizer.cc
@@ -3658,10 +3658,18 @@ Handle<Object> TranslatedState::MaterializeCapturedObjectAt(
       Handle<JSObject> object =
           isolate_->factory()->NewJSObjectFromMap(map, NOT_TENURED);
       slot->value_ = object;
+      JSObject::cast(*object)->JSObjectVerify();
       Handle<Object> properties = materializer.FieldAt(value_index);
+      JSObject::cast(*object)->JSObjectVerify();
+      JSObject::cast(*properties)->JSObjectVerify();
       Handle<Object> elements = materializer.FieldAt(value_index);
+      JSObject::cast(*object)->JSObjectVerify();
+      JSObject::cast(*properties)->JSObjectVerify();
       object->set_properties(FixedArray::cast(*properties));
       object->set_elements(FixedArrayBase::cast(*elements));
+      JSObject::cast(*object)->JSObjectVerify();
+      JSObject::cast(*properties)->JSObjectVerify();
+      JSObject::cast(*elements)->JSObjectVerify();
       int in_object_properties = map->GetInObjectProperties();
       for (int i = 0; i < in_object_properties; ++i) {
         Handle<Object> value = materializer.FieldAt(value_index);

Comment 7 by gov...@chromium.org, Jul 11 2017

A friendly reminder that M61 branch is coming soon on 07/20! Your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix ASAP to trunk. This way we branch M61 from a high quality trunk. Thank you.
Project Member

Comment 8 by ClusterFuzz, Jul 14 2017

ClusterFuzz has detected this issue as fixed in range 46637:46638.

Detailed report: https://clusterfuzz.com/testcase?key=6211017381249024

Fuzzer: inferno_js_fuzzer
Job Type: linux_asan_d8_dbg
Platform Id: linux

Crash Type: CHECK failure
Crash Address: 
Crash State:
  actual_unused_property_fields > map()->unused_property_fields() in objects-debug
  v8::internal::JSObject::JSObjectVerify
  v8::internal::Object::ObjectVerify
  
Sanitizer: address (ASAN)

Regressed: V8: 46477:46478
Fixed: V8: 46637:46638

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6211017381249024


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

Comment 9 by ClusterFuzz, Jul 14 2017

Labels: ClusterFuzz-Verified
Status: Verified (was: Assigned)
ClusterFuzz testcase 6211017381249024 is verified as fixed, so closing issue.

If this is incorrect, please add ClusterFuzz-Wrong label and re-open the issue.
Project Member

Comment 10 by sheriffbot@chromium.org, Jul 14 2017

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Labels: -ReleaseBlock-Stable
 Issue 761944  has been merged into this issue.
 Issue 763028  has been merged into this issue.
Labels: ClusterFuzz-Wrong
Status: Assigned (was: Verified)
We still get reports for this, which then get automatically closed. Seems to be flaky.
Project Member

Comment 15 by sheriffbot@chromium.org, Sep 8 2017

Labels: -Security_Impact-Head Security_Impact-Stable
mstarzinger: Uh oh! This issue still open and hasn't been updated in the last 62 days. This is a serious vulnerability, and we want to ensure that there's progress. Could you please leave an update with the current status and any potential blockers?

If you're not the right owner for this issue, could you please remove yourself as soon as possible or help us find the right one?

If the issue is fixed or you can't reproduce it, please close the bug. If you've started working on a fix, please set the status to Started.

Thanks for your time! To disable nags, add the Disable-Nags label.

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

Comment 16 by sheriffbot@chromium.org, Sep 8 2017

Labels: Deadline-Exceeded
We commit ourselves to a 60 day deadline for fixing for high severity vulnerabilities, and have exceeded it here. If you're unable to look into this soon, could you please find another owner or remove yourself so that this gets back into the security triage queue?

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

Comment 17 by ClusterFuzz, Sep 12 2017

Labels: OS-Mac
 Issue 765924  has been merged into this issue.
Labels: -ClusterFuzz-Wrong
We have made a bunch of changes on ClusterFuzz side, so resetting ClusterFuzz-Wrong label.
Project Member

Comment 20 by ClusterFuzz, Sep 20 2017

Detailed report: https://clusterfuzz.com/testcase?key=6640687079751680

Fuzzer: inferno_js_fuzzer
Job Type: linux_asan_d8_dbg
Platform Id: linux

Crash Type: CHECK failure
Crash Address: 
Crash State:
  actual_unused_property_fields > map()->unused_property_fields() in objects-debug
  v8::internal::JSObject::JSObjectVerify
  v8::internal::Object::ObjectVerify
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=linux_asan_d8_dbg&range=47213:47214

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6640687079751680

See https://github.com/google/clusterfuzz-tools for more information.
Project Member

Comment 21 by sheriffbot@chromium.org, Sep 23 2017

mstarzinger: Uh oh! This issue still open and hasn't been updated in the last 77 days. This is a serious vulnerability, and we want to ensure that there's progress. Could you please leave an update with the current status and any potential blockers?

If you're not the right owner for this issue, could you please remove yourself as soon as possible or help us find the right one?

If the issue is fixed or you can't reproduce it, please close the bug. If you've started working on a fix, please set the status to Started.

Thanks for your time! To disable nags, add the Disable-Nags label.

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

Comment 22 by ClusterFuzz, Sep 25 2017

Detailed report: https://clusterfuzz.com/testcase?key=6030371153248256

Fuzzer: inferno_js_fuzzer
Job Type: linux_asan_d8_dbg
Platform Id: linux

Crash Type: CHECK failure
Crash Address: 
Crash State:
  actual_unused_property_fields > map()->unused_property_fields() in objects-debug
  
Sanitizer: address (ASAN)

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6030371153248256

See https://github.com/google/clusterfuzz-tools for more information.
Project Member

Comment 23 by ClusterFuzz, Sep 29 2017

ClusterFuzz has detected this issue as fixed in range 48202:48203.

Detailed report: https://clusterfuzz.com/testcase?key=6640687079751680

Fuzzer: inferno_js_fuzzer
Job Type: linux_asan_d8_dbg
Platform Id: linux

Crash Type: CHECK failure
Crash Address: 
Crash State:
  actual_unused_property_fields > map()->unused_property_fields() in objects-debug
  v8::internal::JSObject::JSObjectVerify
  v8::internal::Object::ObjectVerify
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=linux_asan_d8_dbg&range=47213:47214
Fixed: https://clusterfuzz.com/revisions?job=linux_asan_d8_dbg&range=48202:48203

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6640687079751680

See https://github.com/google/clusterfuzz-tools for more information.

If you suspect that the result above is incorrect, try re-doing that job on the test case report page.
Cc: tebbi@chromium.org
Project Member

Comment 25 by ClusterFuzz, Oct 1 2017

Components: Internals>Core
Labels: Test-Predator-AutoComponents
Automatically applying components based on information from OWNERS files. If this seems incorrect, please apply the Test-Predator-Wrong-Components label.
Project Member

Comment 26 by sheriffbot@chromium.org, Oct 18 2017

Labels: -M-61 M-62

Comment 27 by vakh@chromium.org, Nov 3 2017

Cc: ishell@chromium.org
ishell@, mstarzinger@ -- friendly ping from the security sheriff. if you are not the right owner for this, please help find them. thanks.
Labels: -Test-Predator-AutoComponents Test-Predator-Auto-Components
Cc: hablich@chromium.org hpayer@chromium.org titzer@chromium.org
Labels: OS-Android OS-Chrome OS-Fuchsia OS-Windows
I assume this would in principle apply to all V8 platforms?

I'd really like to get this bug nailed down; it's one of our oldest High-severity security bugs at the moment. I'm on a bit of a mission, I'm afraid. :)
Owner: ishell@chromium.org
I tried to reproduce this locally with ToT d8 and could not. Not sure why clusterfuzz has not marked this as fixed, since it has a fixed field pointing to a CL by Igor. Assigning to Igor to verify.
I think this bug is still there in some form, but it is highly dependent on GC timing. We are constructing an object graph, but while we are constructing it, the objects will not pass the verifier. This is not a security bug, it is just that the verifier is too strict.

I am working on a new deoptimizer materialization scheme that should address this problem: https://docs.google.com/document/d/1QNT6RoI3lym9J4kUXJm_sxgEg2hZm0bD5ZLuaMUpPN0/edit



Status: Verified (was: Assigned)
I believe that all the known crashes are fixed. I assume that CF doesn't auto-close the bug, as it's been closing this before (and we still have 'ClusterFuzz-Verified' label here).

jarin@, regarding the doc you've mentioned and the issue with the verified being too strict, I think we should file a separate bug for that. How does it sound?
Project Member

Comment 34 by sheriffbot@chromium.org, Feb 24 2018

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