Crash in [@ CxxThrowException | MpDetoursHookAll]
Categories
(External Software Affecting Firefox :: Other, defect)
Tracking
(firefox-esr128 fixed, firefox135 wontfix, firefox136 fixed, firefox137 fixed)
People
(Reporter: gsvelto, Assigned: yannis)
Details
(Keywords: crash)
Crash Data
Attachments
(3 files)
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-beta+
|
Details | Review |
|
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
Crash report: https://crash-stats.mozilla.org/report/index/37858fa9-0525-4fae-b5ac-8ad400241210
Reason:
Unhandled C++ Exception
Top 8 frames:
0 KERNELBASE.dll RaiseException
1 MpDetours.dll CxxThrowException
2 MpDetours.dll MpDetoursHookAll(bool)
3 MpDetours.dll MpDetoursHookThreadProc(void*)
4 kernel32.dll BaseThreadInitThunk
5 mozglue.dll mozilla::interceptor::FuncHook<mozilla::interceptor::WindowsDllInterceptor<mo... toolkit/xre/dllservices/mozglue/nsWindowsDllInterceptor.h:150
5 mozglue.dll patched_BaseThreadInitThunk(int, void*, void*) toolkit/xre/dllservices/mozglue/WindowsDllBlocklist.cpp:562
6 ntdll.dll RtlUserThreadStart
This innocuous-looking crash on Socorro is the highest volume non-main process crash in the crash ping data, with 1951 crashes affecting 1287 users over a week on versions 133-135 of Firefox.
Comment 1•1 year ago
|
||
The severity field is not set for this bug.
:gstoll, could you have a look please?
For more information, please visit BugBot documentation.
Updated•1 year ago
|
Comment 2•1 year ago
|
||
Last error was ERROR_DYNAMIC_CODE_BLOCKED
We only have a handful of socorro crashes here, but there are currently ~3700 crashes listed with ~2100 clients in the last 7 days -- the #2 crasher after OOM small! This also implies people hit it more than once (and may well switch browsers afterwards). What can we do to look into this?
Comment 3•1 year ago
|
||
MpDetours appears to be a Microsoft Windows Defender dll
Updated•1 year ago
|
Updated•1 year ago
|
Comment 4•1 year ago
|
||
The high crash volume was already identified in the first comment. I'm not sure why it was marked S3, Greg?
Comment 5•1 year ago
•
|
||
Pouring through the crash ping data, this is socket process only, >50% of the crash volume for that process.
1 56.7% CxxThrowException | MpDetoursHookAll
the #2 crasher after OOM small! This also implies people hit it more than once (and may well switch browsers afterwards)
See above - not sure how disruptive this actually is! Yay for separating things out into processes.
Comment 6•1 year ago
|
||
Sorry, I must have missed that comment. I'll take a look.
| Assignee | ||
Comment 7•1 year ago
•
|
||
Analyzing MpDetoursHook.dll's MpDetoursHookAll shows two conditions under which we can end up in this CxxThrowException code path:
(1) reaching MpDetoursHookAll while another thread is already running it;
(2) if a call to VirtualProtect(..., PAGE_EXECUTE_READWRITE, ...) fails.
(1) does not match with what we see in the crash reports. For example we don't have multiple threads running MpDetoursHook.dll in the crash dumps. However (2) makes a lot of sense.
In security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp, we can see that MITIGATION_DYNAMIC_CODE_DISABLE is used in socket, RDD and utility processes. This matches precisely with the process types we find on crash-stats. The mitigation will make the call in (2) fail, by design. Also matches with comment 2.
I'll write to our contacts our Microsoft to ask if they could check if the mitigation is active and fail silently rather than raise an exception in this case.
Comment 8•1 year ago
|
||
I'm not sure this is related to Windows Defender - all the crash reports I see now on crash-stats have QIPCAP64.dll loaded, whose publisher is Forcepoint LLC.
| Assignee | ||
Comment 9•1 year ago
•
|
||
Looking at the 32 crashes that reached crash-stats on this signature in the last six months gives these numbers of occurences for third-party DLLs compared to MpDetours.dll:
amapphook.dll: 1 (Ivanti, Inc.)
amldrappinit.dll: 1 (Ivanti, Inc.)
igd10iumd64.dll: 1 (IntelVPGSigning2021)
igdgmm64.dll: 1 (IntelVPGSigning2021)
pghook.dll: 2 (BeyondTrust Corporation)
qipcap64.dll: 4 (Forcepoint LLC)
cyinjct.dll: 5 (Palo Alto Networks (Netherlands) B.V.)
cyvera.dll: 5 (Palo Alto Networks (Netherlands) B.V.)
cyvrtrap.dll: 5 (Palo Alto Networks (Netherlands) B.V.)
ntnativeapi.dll: 5 (Palo Alto Networks (Netherlands) B.V.)
mpdetours.dll: 32
| Assignee | ||
Comment 10•1 year ago
|
||
Updated•1 year ago
|
Comment 11•1 year ago
|
||
Comment 12•1 year ago
|
||
| bugherder | ||
| Assignee | ||
Updated•1 year ago
|
| Assignee | ||
Comment 13•1 year ago
•
|
||
| Assignee | ||
Comment 14•1 year ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D236890
Updated•1 year ago
|
Comment 15•1 year ago
|
||
beta Uplift Approval Request
- User impact if declined: Repeated crashes of socket/rdd/utility processes for some Windows Defender users
- Code covered by automated testing: no
- Fix verified in Nightly: no
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: Unclear
- Risk associated with taking this patch: Low
- Explanation of risk level: The patch disables a security mitigation if we detect injection of the faulty DLL. This should only impact the affected users and can only improve the situation.
- String changes made/needed: None
- Is Android affected?: no
Comment 16•1 year ago
|
||
I'm thinking this probably doesn't need to be rushed into next week's Fx135 planned dot release, but LMK if you feel strongly otherwise. Also, I'm guessing we'll probably want to take this on ESR128 also?
Updated•1 year ago
|
Updated•1 year ago
|
Comment 17•1 year ago
|
||
| uplift | ||
Comment 18•1 year ago
|
||
(In reply to Ryan VanderMeulen [:RyanVM] from comment #16)
| Assignee | ||
Comment 19•1 year ago
|
||
Beta uplift should be enough. I'll push a request for ESR.
| Assignee | ||
Comment 20•1 year ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D236890
Updated•1 year ago
|
Comment 21•1 year ago
|
||
esr128 Uplift Approval Request
- User impact if declined: Repeated crashes of socket/rdd/utility processes for some Windows Defender users
- Code covered by automated testing: no
- Fix verified in Nightly: no
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: Unclear
- Risk associated with taking this patch: Low
- Explanation of risk level: The patch disables a security mitigation if we detect injection of the faulty DLL. This should only impact the affected users and can only improve the situation.
- String changes made/needed: None
- Is Android affected?: no
Updated•1 year ago
|
Comment 22•1 year ago
|
||
| uplift | ||
Updated•1 year ago
|
Updated•1 year ago
|
| Assignee | ||
Comment 23•1 year ago
•
|
||
Early crash ping telemetry shows this crash is now only <1% of the socket process crash volume, suggesting that our patch has almost completely mitigated the issue. Reopening with lower severity still for tracking purposes, since it is present despite low volume and we are hoping that Microsoft will acknowledge and fix this issue.
Comment 24•1 year ago
|
||
Based on the topcrash criteria, the crash signature linked to this bug is not a topcrash signature anymore.
For more information, please visit BugBot documentation.
Description
•