New issue
Advanced search Search tips

Issue 764248 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug-Security



Sign in to add a comment

Crash in content::RenderWidgetHostInputEventRouter::RouteMouseWheelEvent

Project Member Reported by ClusterFuzz, Sep 12 2017

Issue description

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

Fuzzer: tokenfuzz_pdf_april16
Job Type: linux_ubsan_chrome
Platform Id: linux

Crash Type: UNKNOWN
Crash Address: 0xfffffb65f5ec3f44
Crash State:
  content::RenderWidgetHostInputEventRouter::RouteMouseWheelEvent
  content::MouseWheelPhaseHandler::SendSyntheticWheelEventWithPhaseEnded
  _ZN4base8internal13FunctorTraitsIMN7content22MouseWheelPhaseHandlerEFvN5blink18W
  
Sanitizer: undefined (UBSAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=linux_ubsan_chrome&range=497463:497486

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

Additional requirements: Requires Gestures

Issue filed automatically.

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

Comment 1 by sheriffbot@chromium.org, Sep 12 2017

Labels: M-62
Project Member

Comment 2 by sheriffbot@chromium.org, Sep 12 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, Sep 12 2017

Labels: Pri-1
Project Member

Comment 4 by sheriffbot@chromium.org, Sep 13 2017

Labels: -Security_Impact-Head Security_Impact-Beta

Comment 5 by mea...@chromium.org, Sep 14 2017

Components: Internals>Plugins>PDF
Owner: thestig@chromium.org
Status: Assigned (was: Untriaged)
thestig: This looks like a pdfium bug, can you please take a look? Thanks.
Cc: thestig@chromium.org kenrb@chromium.org sahel@chromium.org lfg@chromium.org
Components: Internals>Input
Owner: ----
Status: Untriaged (was: Assigned)
This is pretty far away from PDF code. +input folks.

Comment 7 by kenrb@chromium.org, Sep 14 2017

Cc: -sahel@chromium.org
Labels: -Security_Impact-Beta -ReleaseBlock-Stable Security_Impact-None
Owner: sahel@chromium.org
Status: Assigned (was: Untriaged)
The regression range includes sahel@ enabling scroll latching for test configurations. If this only repros with scroll latching enabled then it isn't a release blocker.

Comment 8 by kenrb@chromium.org, Sep 14 2017

Components: -Internals>Plugins>PDF
Cc: -thestig@chromium.org

Comment 10 by sahel@chromium.org, Sep 14 2017

MouseWheelPhaseHandler::SendSyntheticWheelEventWithPhaseEnded is only called when wheel scroll latching is enabled, so the change in test configuration has caused the crash.

Investigating more to see why the crash happens when latching is enabled..

Comment 11 by sahel@chromium.org, Sep 20 2017

Cc: wjmaclean@chromium.org mcnee@chromium.org
This may have only been reported on Linux, but it almost certainly affects other platforms too; anywhere that we are using wheel latching.

Comment 13 by kenrb@chromium.org, Sep 20 2017

That is often the case with Cluster-Fuzz reports. I believe UBSAN only runs on Linux, and we usually add the other platforms after the bug cause is clear.
Project Member

Comment 14 by bugdroid1@chromium.org, Sep 21 2017

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

commit 8e0187e5048b9b2795ff4b764f00f8b8b1864334
Author: Sahel Sharify <sahel@chromium.org>
Date: Thu Sep 21 04:41:49 2017

Wheel target resets when it is equal to the destroyed view.

When wheel scroll latching is enabled, wheel events are routed to the
same target during a scrolling sequence. On devices that don't have
phase info (currently every device other than mac) the wheel end event
is generated and sent based on a timer timeout 100ms after the last
wheel event. It's possible that during the 100ms the wheel target gets
destroyed and trying to send the wheel end event to the destroyed target
causes a crash (Produced by the clusterfuzz testcase in the bug).

This change resets the wheel target when it's equal to the view which is
being destroyed. The following test fails without applying this change.

Bug:  764248 
Test: SitePerProcessMouseWheelBrowserTest.InputEventRouterWheelTargetTest
Change-Id: Iadd5158db5a41af751c4a52a58a2ebfb571d826a
Reviewed-on: https://chromium-review.googlesource.com/668667
Commit-Queue: Sahel Sharifymoghaddam <sahel@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Timothy Dresser <tdresser@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503353}
[modify] https://crrev.com/8e0187e5048b9b2795ff4b764f00f8b8b1864334/content/browser/renderer_host/render_widget_host_input_event_router.cc
[modify] https://crrev.com/8e0187e5048b9b2795ff4b764f00f8b8b1864334/content/browser/renderer_host/render_widget_host_input_event_router.h
[modify] https://crrev.com/8e0187e5048b9b2795ff4b764f00f8b8b1864334/content/browser/site_per_process_browsertest.cc

Comment 15 by sahel@chromium.org, Sep 27 2017

Status: Fixed (was: Assigned)
Project Member

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

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

Comment 17 by sheriffbot@chromium.org, Jan 4 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