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

Issue 668884 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

Crash in storeColor

Project Member Reported by ClusterFuzz, Nov 27 2016

Issue description

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

Fuzzer: inferno_twister_custom_bundle
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: UNKNOWN
Crash Address: 0x603000040000
Crash State:
  storeColor
  glgProcessColor
  __glgProcessPixelsWithProcessor_block_invoke
  
Recommended Security Severity: Medium

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

Minimized Testcase (21.94 Kb): https://cluster-fuzz.appspot.com/download/AMIfv96K7VJgvVBbft910jqgZz3kA_bah4nwVfVcW5WPpc2_IS0KaBmARwSX3leHAseO3L_gI1wMbhmdMuPYEZ1KpKFU-5Nw_XTgt5BBI1PZ78i0m5XQc3k-HHeBnePHT41ioH1TmMJ5u3ioLpltPy5shuxCMCtZZEu9c7G6IlBfP2iulQ2zS0Y?testcase_id=5112085437743104

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, Nov 27 2016

Labels: M-56
Project Member

Comment 2 by sheriffbot@chromium.org, Nov 27 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, Nov 27 2016

Labels: Pri-1
Components: Internals>GPU>Internals
Owner: siev...@chromium.org
Status: Assigned (was: Untriaged)
Hi sievers, this appears to be in the auto-generated GL bindings you checked in a while ago, but I'm not sure why this is only coming up now. Do you mind taking a look?
Owner: zmo@chromium.org
Reassigning. Do you mind taking a look at this?

Comment 6 by zmo@chromium.org, Nov 30 2016

Cc: yunchao...@intel.com
Adding yunchao.

Since you can't access the test case, here you are:

var wtu = WebGLTestUtils;
var width = 8;
var height = 8;
var gl = wtu.create3DContext("example", undefined, 2);
if (!gl) {
} else {
    blit_region_test();
}
function blit_region_test() {
    var tex1 = gl.createTexture();
    gl.bindTexture(gl.TEXTURE_2D, tex1);
    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
    var fb1 = gl.createFramebuffer();
    gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fb1);
    gl.framebufferTexture2D(gl.READ_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex1, 0);
    if ((gl.READ_FRAMEBUFFER != gl.FRAMEBUFFER_COMPLETE) ||
gl.DRAW_FRAMEBUFFER != gl.FRAMEBUFFER_COMPLETE) {
    }
    var max = 0x7fffffff;
    gl.blitFramebuffer(0, 0, width, height, 0, 0, max, max, gl.COLOR_BUFFER_BIT, gl.NEAREST);
}

This apparently caused driver malfunctioning in some drivers, so we will need to put up a defense against it.
Thanks for the code snippet, @zmo. I will take a look these two days. 
Project Member

Comment 8 by sheriffbot@chromium.org, Dec 2 2016

Labels: -Security_Impact-Head Security_Impact-Beta
Hi Zhenyao and all, I can not reproduce the sample code by zmo@ on Mac Intel. In addition, if the sample code by zmo@ conforms to the original crashed case, then the original test case has been covered by WebGL 2 conformance test blitframebuffer-size-overflow.html. Then the Chromium bots should catch that faiure. 
Labels: -ReleaseBlock-Beta ReleaseBlock-Stable
Per #9 moving this to RBS while we investigate.
Project Member

Comment 11 by sheriffbot@chromium.org, Dec 15 2016

zmo: Uh oh! This issue still open and hasn't been updated in the last 14 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 12 by sheriffbot@chromium.org, Dec 29 2016

zmo: Uh oh! This issue still open and hasn't been updated in the last 28 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

Comment 13 by zmo@chromium.org, Jan 9 2017

Cc: vmi...@chromium.org

Comment 14 by zmo@chromium.org, Jan 9 2017

Cc: kainino@chromium.org kbr@chromium.org
Labels: -Pri-1 -ReleaseBlock-Stable Pri-3
I don't think this is a release blocker because we don't see such crashes on real Mac drivers.

We could defend against such blit by putting an artificial upper limit to the coordinates, but that's not spec compliant.

Ken, Kai, what's your take on this?

Comment 15 by kbr@chromium.org, Jan 9 2017

Labels: -Pri-3 Pri-2
Not a release blocker, but we should add a workaround. Is this reproducible?

Can we limit the maximum value to the value of the queryable parameter GL_MAX_VIEWPORT_DIMS?

Comment 16 by zmo@chromium.org, Jan 9 2017

In theory you can Blit from (100k, 100k) to (50k, 50k), it's the same as blit from (w, h) to (w/2, h/2), where w, h is the actual fbo's size. I think we can put any large number as a high bound (and also negative low bound), and any developer to go beyond that being punished is OK.

Comment 17 by kbr@chromium.org, Jan 9 2017

Yes, generating INVALID_OPERATION as an implementation detail sounds fine to me too.

Project Member

Comment 18 by sheriffbot@chromium.org, Jan 10 2017

Labels: ReleaseBlock-Stable
zmo@ - I'm afraid this is a security issue so the fact it's not being seen isn't relevant; if this could be exploited then attacker would contrive to trigger it. We mark security regressions as release blockers; comments 4 suggests that this has been around awhile, does it exist in stable?

Comment 20 by zmo@chromium.org, Jan 13 2017

Yeah BlitFramebuffer has been exposed through an extension to the GPU process for a long time.  That said, now we expose the API through WebGL2 to end users, making it more accessible.

I can put up the defense as kbr suggested.  I still don't think it's a threat in real world though.  The crash came from the software renderer, not a real driver.

Comment 21 by kbr@chromium.org, Jan 14 2017

awhalley@: more to the point: there are plenty of ways to crash Chrome's GPU process, including allocating tons of GPU resources. A GPU process crash is not inherently a security risk. Because of denial of service defenses that are already in Chrome, it will cause a WebGL context loss event, and prevent the domain from being able to run WebGL content until the user manually allows it again.

Labels: -M-56 -ReleaseBlock-Stable M-57
Thanks for the details!  Removing Release Block and moving to M57. Cheers!

Comment 23 by zmo@chromium.org, Jan 19 2017

Blocking: 682490
Project Member

Comment 24 by sheriffbot@chromium.org, Feb 3 2017

Labels: ReleaseBlock-Stable

Comment 25 by zmo@chromium.org, Feb 6 2017

Labels: -ReleaseBlock-Stable -M-57
As explained above, this should not be a Release blocker.
Project Member

Comment 26 by sheriffbot@chromium.org, Feb 7 2017

Labels: M-57
Project Member

Comment 27 by sheriffbot@chromium.org, Feb 7 2017

Labels: ReleaseBlock-Stable
Project Member

Comment 28 by sheriffbot@chromium.org, Feb 8 2017

Labels: M-57
A friendly reminder that M57 Stable is launch is coming soon! Your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and get it merged into the release branch ASAP so it gets enough baking time in Beta (before Stable promotion). Thank you!

Labels: -ReleaseBlock-Stable -M-57 M-58
Project Member

Comment 31 by sheriffbot@chromium.org, Mar 17 2017

Labels: ReleaseBlock-Stable
Blocking: -682490
Labels: -Security_Impact-Beta -ReleaseBlock-Stable Security_Impact-Stable
Reading the thread, it's not clear if we consider this a security bug. Is there an invalid memory access here, or are we crashing in a controlled fashion?

Comment 35 by zmo@chromium.org, Apr 20 2017

Crash came from driver, not from us.  I don't think this is a security threat - crashing the driver / GPU process doesn't cause a vulnerability in Chrome.
Labels: -Type-Bug-Security -Restrict-View-SecurityTeam -Security_Impact-Stable -Security_Severity-Medium Type-Bug
Looking more carefully at the test case, agreed that this isn't security relevant. 
Project Member

Comment 37 by ClusterFuzz, May 26 2017

ClusterFuzz has detected this issue as fixed in range 474922:474938.

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

Fuzzer: inferno_twister_custom_bundle
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Bus
Crash Address: 0x603000040000
Crash State:
  storeColor
  glgProcessColor
  __glgProcessPixelsWithProcessor_block_invoke
  
Sanitizer: address (ASAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=434476:434480
Fixed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=474922:474938

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


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 38 by ClusterFuzz, May 27 2017

ClusterFuzz has detected this issue as fixed in range 474922:474938.

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

Fuzzer: inferno_twister_custom_bundle
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Bus
Crash Address: 0x603000040000
Crash State:
  storeColor
  glgProcessColor
  __glgProcessPixelsWithProcessor_block_invoke
  
Sanitizer: address (ASAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=434476:434480
Fixed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=474922:474938

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


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 39 by ClusterFuzz, May 27 2017

ClusterFuzz has detected this issue as fixed in range 474922:474938.

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

Fuzzer: inferno_twister_custom_bundle
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Bus
Crash Address: 0x603000040000
Crash State:
  storeColor
  glgProcessColor
  __glgProcessPixelsWithProcessor_block_invoke
  
Sanitizer: address (ASAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=434476:434480
Fixed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=474922:474938

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


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 40 by ClusterFuzz, May 27 2017

ClusterFuzz has detected this issue as fixed in range 474922:474938.

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

Fuzzer: inferno_twister_custom_bundle
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Bus
Crash Address: 0x603000040000
Crash State:
  storeColor
  glgProcessColor
  __glgProcessPixelsWithProcessor_block_invoke
  
Sanitizer: address (ASAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=434476:434480
Fixed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=474922:474938

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


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 41 by ClusterFuzz, May 28 2017

ClusterFuzz has detected this issue as fixed in range 474922:474938.

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

Fuzzer: inferno_twister_custom_bundle
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Bus
Crash Address: 0x603000040000
Crash State:
  storeColor
  glgProcessColor
  __glgProcessPixelsWithProcessor_block_invoke
  
Sanitizer: address (ASAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=434476:434480
Fixed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=474922:474938

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


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 42 by ClusterFuzz, May 28 2017

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

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

Sign in to add a comment