Closed Bug 1818679 (CVE-2025-11716) Opened 3 years ago Closed 11 months ago

iframe sandbox on Android allows opening to external protocol (including `intent:`)

Categories

(GeckoView :: General, defect, P2)

Firefox 110
defect

Tracking

(firefox142 wontfix, firefox143 wontfix, firefox144 fixed)

RESOLVED FIXED
144 Branch
Tracking Status
firefox142 --- wontfix
firefox143 --- wontfix
firefox144 --- fixed

People

(Reporter: haxatron1, Assigned: boek)

References

Details

(Keywords: csectype-mitigation-bypass, reporter-external, sec-moderate, Whiteboard: [reporter-external][geckoview:m113][group1][adv-main144+])

Attachments

(4 files)

iframe sandbox requires one of the following to open external protocol. (ref: https://chromestatus.com/feature/5680742077038592)

  • allow-popups
  • allow-top-navigation
  • allow-top-navigation-with-user-activation
  • allow-top-navigation-to-custom-protocols

On Firefox for Android, iframe sandbox requires none. Compare this to Firefox for Desktop where it is correctly blocked.

STR:
Go to external.html and click the link. You will open Phone app.

Expected: Phone app not opened because none of the required attributes are not set.

Flags: sec-bounty?
Group: firefox-core-security → mobile-core-security
Component: Security → General
Product: Firefox → Fenix
Version: unspecified → Firefox 110
Attached file external.html
See Also: → 1735746
See Also: → CVE-2025-8042

We need to investigate this and find out why this is different from desktop (something not implemented? a bug?). We already have several bugs that seem to be related to this, and we need to improve our iframe support. Nominating this for the next sprint

Whiteboard: [reporter-external] [client-bounty-form] [verif?] → [reporter-external] [client-bounty-form] [verif?][geckoview:m113?]

This is essentially the same thing as bug 1791312, but since intents and external protocol handlers are different mechanisms internally it's probably safest to track each separately lest one be forgotten.

Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: sec-moderate

I would say this bug is a dependency of bug 1791312. Reason being that even if intent URLs were to follow the 4 attribute listed, a fallback intent initiates a top-navigation. This effectively means that:

  1. Enabling allow-popups implies that a sandboxed iframe can cause a top navigation if they want to which would eliminate the sandbox flags.

  2. allow-top-navigation-to-custom-protocol now becomes allow-top-navigation by abusing intent fallbacks.

Assignee: nobody → bugzeeeeee

The severity field is not set for this bug.
:cpeterson, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(cpeterson)
Flags: needinfo?(bugzeeeeee)

Dropping to P2 because Irene says she's not actively working on this bug.

Priority: P1 → P2
Flags: sec-bounty? → sec-bounty+

Just to make it clear, intent: is an external protocol. But because android <gestures>, we should explicitly test to make sure it's blocked also once this is fixed.

Summary: iframe sandbox on Android allows opening to external protocol → iframe sandbox on Android allows opening to external protocol (including `intent:`)
Component: Core → General
Assignee: bugzeeeeee → nobody
Status: ASSIGNED → NEW
Whiteboard: [reporter-external] [client-bounty-form] [verif?][geckoview:m113] → [reporter-external] [client-bounty-form] [verif?][geckoview:m113][group1]

Hey Segun, can you schedule this one in? Thanks!

Flags: needinfo?(sfamisa)
Flags: needinfo?(sfamisa)

Forwarding the NI to Jeff

Flags: needinfo?(jboek)

Triaged it into our backlog.

Flags: needinfo?(jboek)
Duplicate of this bug: 1980461
Flags: needinfo?(nika)
Attached file (secure)
Assignee: nobody → jboek
Status: NEW → ASSIGNED

We discussed this on Slack, where I gave some feedback which led to the patch in comment 13. Clearing ni?

Flags: needinfo?(nika)
Attached file (secure)
Group: mobile-core-security → core-security-release
Status: ASSIGNED → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
Target Milestone: --- → 144 Branch
QA Whiteboard: [sec] [qa-triage-done-c145/b144]
Pushed by jboek@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/774961481045 https://hg.mozilla.org/integration/autoland/rev/850c36f752ae Adds tests to confirm onLoadRequest isn't called r=geckoview-reviewers,tcampbell
Pushed by agoloman@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/5a3c801cd646 https://hg.mozilla.org/integration/autoland/rev/d58ab8cdc03c Revert "Bug 1818679 - Adds tests to confirm onLoadRequest isn't called r=geckoview-reviewers,tcampbell" for causing lint failures @NavigationDelegateTest.kt.

Backed out for causing lint failures @NavigationDelegateTest.kt:

Flags: needinfo?(jboek)
Pushed by jboek@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/9050781f98b3 https://hg.mozilla.org/integration/autoland/rev/55dcb5b5074b Adds tests to confirm onLoadRequest isn't called r=geckoview-reviewers,tcampbell
Flags: needinfo?(jboek)
Whiteboard: [reporter-external] [client-bounty-form] [verif?][geckoview:m113][group1] → [reporter-external][geckoview:m113][group1][adv-main144+]
Attached file advisory.txt
Alias: CVE-2025-11716
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: