Closed Bug 1920800 (CVE-2024-10463) Opened 1 year ago Closed 1 year ago

Possible early principal change on video stream

Categories

(Core :: Audio/Video: Playback, defect)

defect

Tracking

()

RESOLVED FIXED
132 Branch
Tracking Status
firefox-esr115 132+ fixed
firefox-esr128 132+ fixed
firefox131 --- wontfix
firefox132 + fixed

People

(Reporter: karlt, Assigned: karlt)

Details

(Keywords: csectype-sop, sec-moderate, Whiteboard: [adv-main132+] [adv-esr128.4+] [adv-esr115.17+])

Attachments

(6 files)

When an existing set of images (oldImages) has last frame with ID matching mFrameIDForPendingPrincipalHandle - 1, VideoFrameContainer::SetCurrentFrames() will notify PrincipalHandleChangedForVideoFrameContainer() even when a replacement set of frames (aFrames) contains a frame with the same ID.
This is earlier than the intended "when all FrameIDs prior to aFrameID have been flushed out."

Having replacement frame sets with some of the some frames from the previous set seems plausible because the addition of new frames does not usually directly expire all old frames. Overlapping frame sets are usually expected by VideoFrameContainer and ImageContainer so that the compositor can choose the presentation timing.

This looks like it could provide content access to a cross origin video frame. Perhaps factors such as timestamps on frames might make such access difficult, but content can slow frame rates to give it a better chance.

Keywords: csectype-sop
Severity: -- → S2

This was never called because SetCurrentFrame() callers all pass non-null
aImage, but the logic is retained.

The logic should be equivalent when frame IDs on aImages are contiguously
increasing from IDs on previously set frames.

There are currently no callers passing empty aImages, but the logic in this
case would now be as described in the documentation of
UpdatePrincipalHandleForFrameID():

We will notify mElement that aPrincipalHandle has been applied when all
FrameIDs prior to aFrameID have been flushed out.

Pushed by ktomlinson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/a76ec056139f Remove unnecessary ClearCurrentFrame() r=pehrsons https://hg.mozilla.org/integration/autoland/rev/91eddc0bb6d9 Remove oldImages from check for flushed old principal handle r=pehrsons
Group: media-core-security → core-security-release
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 132 Branch
QA Whiteboard: [post-critsmash-triage]
Flags: qe-verify-

The logic should be equivalent when frame IDs on aImages are contiguously
increasing from IDs on previously set frames.

There are currently no callers passing empty aImages, but the logic in this
case would now be as described in the documentation of
UpdatePrincipalHandleForFrameID():

We will notify mElement that aPrincipalHandle has been applied when all
FrameIDs prior to aFrameID have been flushed out.

Original Revision: https://phabricator.services.mozilla.com/D223922

Attachment #9428728 - Flags: approval-mozilla-esr115?

The logic should be equivalent when frame IDs on aImages are contiguously
increasing from IDs on previously set frames.

There are currently no callers passing empty aImages, but the logic in this
case would now be as described in the documentation of
UpdatePrincipalHandleForFrameID():

We will notify mElement that aPrincipalHandle has been applied when all
FrameIDs prior to aFrameID have been flushed out.

Original Revision: https://phabricator.services.mozilla.com/D223922

Attachment #9428729 - Flags: approval-mozilla-esr128?

esr115 Uplift Approval Request

  • User impact if declined: leak of video content across origins
  • Code covered by automated testing: yes
  • Fix verified in Nightly: yes
  • Needs manual QE test: no
  • Steps to reproduce for manual QE testing: n/a
  • Risk associated with taking this patch: low
  • Explanation of risk level: small patch with local influence, affecting only an unusal situation: video content from more than one domain
  • String changes made/needed: none
  • Is Android affected?: yes

esr128 Uplift Approval Request

  • User impact if declined: leak of video content across origins
  • Code covered by automated testing: yes
  • Fix verified in Nightly: yes
  • Needs manual QE test: no
  • Steps to reproduce for manual QE testing: n/a
  • Risk associated with taking this patch: low
  • Explanation of risk level: small patch with local influence, affecting only an unusal situation: video content from more than one domain
  • String changes made/needed: none
  • Is Android affected?: yes
Attachment #9428729 - Flags: approval-mozilla-esr128? → approval-mozilla-esr128+
Attachment #9428728 - Flags: approval-mozilla-esr115? → approval-mozilla-esr115+
Whiteboard: [adv-main132+] [adv-esr128.4+] [adv-esr115.17+]
Alias: CVE-2024-10463
Group: core-security-release
Pushed by ktomlinson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/0a6ea80fcf22 Test VideoFrameContainer.PrincipalHandleChangedForVideoFrameContainer() timing r=pehrsons
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: