Null-dereference READ in extensions::ExtensionFunctionDispatcher::UIThreadWorkerResponseCallbackWrapper:: |
||||
Issue descriptionDetailed report: https://clusterfuzz.com/testcase?key=6025695146016768 Fuzzer: ipc_fuzzer_gen Job Type: linux_asan_chrome_ipc Platform Id: linux Crash Type: Null-dereference READ Crash Address: 0x000000000000 Crash State: extensions::ExtensionFunctionDispatcher::UIThreadWorkerResponseCallbackWrapper:: extensions::ExtensionFunctionDispatcher::Dispatch bool IPC::MessageT<ExtensionHostMsg_RequestWorker_Meta, std::__1::tuple<Extensio Sanitizer: address (ASAN) Regressed: https://clusterfuzz.com/revisions?job=linux_asan_chrome_ipc&range=488146:488166 Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6025695146016768 Issue filed automatically. See https://github.com/google/clusterfuzz-tools for more information.
,
Jul 21 2017
Looks to me like content::RenderProcessHost::FromID(render_process_id_) is returning null. I'm not familiar enough with this code to know under what conditions that would happen. Passing to lazyboy.
,
Jul 21 2017
My assumption that render_process_id_ will point to a live RenderProcessHost when we receive a message from BrowserFilter is certainly wrong. e.g. I see a lots of !render_process_host bailouts in ExtensionMessageFilter: https://cs.chromium.org/chromium/src/extensions/browser/extension_message_filter.cc?rcl=4af5a8646e7a71978cf5e00dd62c4ab8926eaf10&l=158 So !render_prcess_host can definitely happen, I'll add the null check. From the fuzzer name (linux_asan_chrome_ipc), it seems like it is fuzzing ipcs, so I don't really know how in practice we can reproduce this. That would make it impossible to write a test. Oh well. /cc karandeepb@ for visibility (I'll send him the code review).
,
Jul 25 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bd742967b7968f79667539b6c40c52082feba5ad commit bd742967b7968f79667539b6c40c52082feba5ad Author: Istiaque Ahmed <lazyboy@chromium.org> Date: Tue Jul 25 04:38:48 2017 Add a null check while retrieving RPH in UIThreadWorkerResponseCallbackWrapper. It seems BrowserMessageFilter can receive IPC after the render process associated with it becomes inavlid. Since we depend on the RenderProcessHost in UIThreadWorkerResponseCallbackWrapper, add a null check and bailout in ExtensionFunctionDispatcher before creating a UIThreadWorkerResponseCallbackWrapper instance. No tests were added for the lack of reproducibility. Bug: 747105 Change-Id: I5838b7b7c35e1790dc843a4d4ff4f32a99312606 Reviewed-on: https://chromium-review.googlesource.com/581882 Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org> Reviewed-by: Karan Bhatia <karandeepb@chromium.org> Cr-Commit-Position: refs/heads/master@{#489231} [modify] https://crrev.com/bd742967b7968f79667539b6c40c52082feba5ad/extensions/browser/extension_function_dispatcher.cc
,
Jul 27 2017
Though I couldn't repro this locally, marking hoping clusterfuzz will detect the fix... |
||||
►
Sign in to add a comment |
||||
Comment 1 by msrchandra@chromium.org
, Jul 21 2017Labels: Test-Predator-Correct-CLs
Owner: sky@chromium.org
Status: Assigned (was: Untriaged)