Closed Bug 1811559 Opened 3 years ago Closed 3 years ago

EmitWasmPreBarrierCall doesn't handle valueOffset correctly

Categories

(Core :: JavaScript: WebAssembly, defect, P1)

defect

Tracking

()

RESOLVED FIXED
111 Branch
Tracking Status
firefox-esr102 --- unaffected
firefox109 --- unaffected
firefox110 --- unaffected
firefox111 --- fixed

People

(Reporter: rhunt, Assigned: rhunt)

References

(Regression)

Details

(Keywords: csectype-uaf, regression, sec-high, Whiteboard: [adv-main111-])

Attachments

(1 file)

EmitWasmPreBarrierCall calls the pre-write barrier passing an implicit valueAddr to it. The change in bug 1810090 caused a valueOffset immediate to be added to the function, which is not added to the valueAddr before invoking the pre-write barrier.

Nearly every caller of EmitWasmPreBarrierCall passes valueOffset = 0, except for two:

  1. GC object write (preffed-off by default)
  2. Ref-typed stack results for return values, which is not behind any preference. [1]

Marking this security sensitive due to (2).

[1] https://searchfox.org/mozilla-central/rev/eb00c7365e72ac422acd97f6eee3c26926b786cd/js/src/wasm/WasmIonCompile.cpp#2306

EmitPreWriteBarrierCall had an offset parameter added but didn't use
it.

Group: javascript-core-security → core-security-release
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 111 Branch
Flags: qe-verify-
Whiteboard: [adv-main111+r]
Keywords: regression
Regressed by: 1810090
Whiteboard: [adv-main111+r]
Whiteboard: [adv-main111-]
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: