Closed Bug 1629361 Opened 5 years ago Closed 5 years ago

Firefox 75 no longer able to load content with Netsupport School present

Categories

(Firefox :: Launcher Process, defect)

75 Branch
Unspecified
Windows
defect

Tracking

()

VERIFIED FIXED
Firefox 77
Tracking Status
firefox-esr68 --- unaffected
firefox74 --- unaffected
firefox75 + wontfix
firefox76 + verified
firefox77 + verified

People

(Reporter: philipp, Assigned: toshi)

References

(Regression)

Details

(Keywords: regression)

Attachments

(1 file)

After the release of Firefox 75 we got a number of reports that Firefox is no longer functional (not able to load content or internal pages and not properly closing), similar to the symptoms of bug 1610790 and bug 1614885:
https://support.mozilla.org/en-US/questions/firefox?owner=all&tagged=bug1629361&show=all

A user has linked this to the presence of the external Netsupport School software on an affected system. I could reproduce that by installing a trial version of the tool, afterwards Firefox turned unfuctional - this problem regressed with the changes from bug 1615308.

Flags: needinfo?(tkikuchi)

I got a local repro. It seems that NSCommonHook64.dll was injected via SetWindowHookEx, which modified an offset to NtOpenFile in firefox.exe's import table for ntdll.dll, thus launching a content process from the browser process failed. There is no perfect solution for this. To disable the launcher process will be a mitigation.

Flags: needinfo?(tkikuchi)

What makes the case worse is we don't automatically disable the launcher process after this happens. As a mitigation, we can disable the launcher process when the browser process fails to start a sandbox process.

One possible fix would be to cache IAT in the browser process before injection via window hook happens, and copy that cache into a sandbox process.

If a third-party application modifies IAT of ntdll.dll in the browser process
after process launch, the browser process fails to launch a sandbox process,
resulting in a situation where a window is opened without any functionality.

This patch is to mitigate that situation by disabling the launcher process
when the browser process fails to launch a sandbox process.

Assignee: nobody → tkikuchi
Status: NEW → ASSIGNED
Pushed by btara@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b808c96379c4 Disable the launcher process when a content process fails to start. r=mhowell
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 77

thank you for the patch - i can confirm that this fixed the issue for me on nightly as well.

could you request uplift to beta, since the problem has some major impact for affected users (and there are a few reports from users on 75 who don't have netsupport so there may be more software out there triggering this condition)?

(In reply to [:philipp] from comment #6)

thank you for the patch - i can confirm that this fixed the issue for me on nightly as well.

could you request uplift to beta, since the problem has some major impact for affected users (and there are a few reports from users on 75 who don't have netsupport so there may be more software out there triggering this condition)?

That's a great news! Thank you for confirming the behavior. It's expected that there are other applications causing the same problem and this patch mitigates it, too. I agree to uplift this to beta.

Comment on attachment 9140448 [details]
Bug 1629361 - Disable the launcher process when a content process fails to start. r=mhowell

Beta/Release Uplift Approval Request

  • User impact if declined: If NetSupport School is installed, Firefox is launched without any functionality like bug 1614885 because all content processes failed to start. The situation persists, meaning next time a user starts Firefox, she will hit the same situation unless she modifies the registry manually.
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): The patch is not a perfect solution but a straightforward mitigation. If the browser process fails to start a sandbox process for some reason, this patch automatically disables the launcher process by updating the registry value so that a user will see this blank-page situation only once.
  • String changes made/needed: None
Attachment #9140448 - Flags: approval-mozilla-beta?
See Also: → 1630281

Comment on attachment 9140448 [details]
Bug 1629361 - Disable the launcher process when a content process fails to start. r=mhowell

Definitely not ideal, but I agree that this is better than the alternative at the moment. Approved for 76.0b5.

Attachment #9140448 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

BTW, is this something we should be recording Telemetry for?

(In reply to Ryan VanderMeulen [:RyanVM] from comment #10)

BTW, is this something we should be recording Telemetry for?

Good point. Ideally we want to collect failures of starting a sandbox process as the launcher process failure ping. That data would indicate how often third-party applications inject code into our processes asymmetrically i.e. injecting into only the browser process without touching the launcher process intentionally or unintentionally. Let's file a tracking bug.

See Also: → 1630444
Flags: qe-verify+

confirmation from affected users that the fix is working as intended on beta:

QA Whiteboard: [qa-triaged]

Setting general status based on the verification of firefox75 and firefox76. Please revert if incorrect. In theory, firefox75 still affected.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: