New issue
Advanced search Search tips

Issue 890023 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 28
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 1
Type: Bug



Sign in to add a comment

Crash in chrome_child!blink::FetchManager::Fetch

Reported by pa...@blackowlsec.com, Sep 27

Issue description

VULNERABILITY DETAILS
Write AV in Fetchmanager::Fetch. Testcase crashing on the following line: 
request->SetContext(WebURLRequest::kRequestContextFetch);

https://chromium.googlesource.com/chromium/src.git/+/69.0.3497.100/third_party/blink/renderer/core/fetch/fetch_manager.cc @ 940

VERSION
Chrome Version: 69.0.3497.100 stable 32bit
Operating System: [Win 10 x64]

REPRODUCTION CASE

Minimized testcase and windbg log attached
 
cm_fetch.html
1.1 KB View Download
cm_fetch_windbg.txt
4.0 KB View Download
Cc: ricea@chromium.org
Components: Blink>Network>FetchAPI
Labels: Security_Severity-High Security_Impact-Stable OS-Chrome OS-Linux OS-Mac OS-Windows Pri-1
Owner: yhirano@chromium.org
Status: Assigned (was: Unconfirmed)
Thanks for the report. This crashes the renderer on stable, and also on HEAD on Linux in my testing.

yhirano and ricea, can you please follow this up?
Cc: -ricea@chromium.org yhirano@chromium.org
Owner: ricea@chromium.org
ricea@, can you take a look?

In my environment, ToT crashes in V8ScriptRunner::CallExtra in Body::IsBodyUsedForDcheck. When I disabled the DCHECK the crash went away. So it's possible that the reported crash is one of the crashes you fixed previously.
Pretty sure I fixed this in https://chromium-review.googlesource.com/c/chromium/src/+/1235779, but I'm checking now.
Status: Started (was: Assigned)
Simplified repro:

<script>
  Promise.prototype.constructor = 1;
  fetch('/aaaaaaa.jpg', { method: "POST", body: 1});
</script>

Incidentally, the crash when DCHECK is enabled is a known issue. Unfortunately the DCHECKs can have side-effects in exceptional situations, and there's no way around it except to remove the DCHECKs. This is not a problem for release builds.
Status: Fixed (was: Started)
Project Member

Comment 8 by sheriffbot@chromium.org, Sep 28

Labels: M-69 Target-69
Project Member

Comment 9 by sheriffbot@chromium.org, Sep 28

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Does this need a merge to M70?
#10 My personal view is that we don't. I don't know a way to exploit a write to address 0x80, and the crash rate doesn't look too bad to me: https://crash.corp.google.com/browse?q=expanded_custom_data.ChromeCrashProto.magic_signature_1.name%3D%27blink%3A%3AFetchManager%3A%3AFetch%27

I don't think it justifies a late-beta merge, but I am interested in other opinions.
I'd like to push for a merge in the interests of stability - it looks like a pretty safe patch, and anything that reduces crashes is a good thing.
Labels: Merge-Request-70
Yes, it's a safe merge (as far as any merge can be safe). I'm happy to do it if you want it.
Project Member

Comment 14 by sheriffbot@chromium.org, Oct 1

Labels: -Merge-Request-70 Merge-Review-70 Hotlist-Merge-Review
This bug requires manual review: M70 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: benmason@(Android), kariahda@(iOS), geohsu@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Merge-Review-70 Merge-Approved-70
branch:3538
Labels: reward-topanel
Cc: awhalley@chromium.org
Thanks for going for the merge. :)

awhalley: I think this was fixed prior to the bug being reported (at least, the CL was already written before the bug was reported, but there's insufficient timestamp granularity for me to tell if it landed before the bug was reported) - not sure if that qualifies it for reward-topanel?
Project Member

Comment 19 by bugdroid1@chromium.org, Oct 2

Labels: -merge-approved-70 merge-merged-3538
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5177016f67e94273def90f9c8cede81aeeff2a0d

commit 5177016f67e94273def90f9c8cede81aeeff2a0d
Author: Adam Rice <ricea@chromium.org>
Date: Tue Oct 02 09:24:28 2018

Check ExceptionState after PassRequestData

In blink::GlobalFetchImpl::Fetch(), ExceptionState was not checked after
calling PassRequestData(). Since it can fail and return null, this led
to segmentation faults.

Bail out early if an exception was thrown.

BUG=882841, 890023 
TBR=ricea@chromium.org

(cherry picked from commit 0ca4e6f52c6924bc6789afe356737365224409dd)

Change-Id: I5317560d070df63f97afe78ec9997cfc0ebd92e0
Reviewed-on: https://chromium-review.googlesource.com/1235779
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Adam Rice <ricea@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#594592}
Reviewed-on: https://chromium-review.googlesource.com/1256405
Reviewed-by: Adam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/branch-heads/3538@{#805}
Cr-Branched-From: 79f7c91a2b2a2932cd447fa6f865cb6662fa8fa6-refs/heads/master@{#587811}
[modify] https://crrev.com/5177016f67e94273def90f9c8cede81aeeff2a0d/third_party/blink/renderer/core/fetch/global_fetch.cc

Labels: -Type-Bug-Security -reward-topanel -Security_Impact-Stable -Security_Severity-High reward-0 Type-Bug
Hi pawel@ - the VRP panel look a look at this and deemed it not to be exploitable, I'm afraid.
Project Member

Comment 21 by sheriffbot@chromium.org, Jan 4

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