Closed Bug 1793676 (CVE-2022-45416) Opened 2 years ago Closed 2 years ago

Potential keystroke side-channel leakage

Categories

(Core :: DOM: UI Events & Focus Handling, defect)

defect

Tracking

()

RESOLVED FIXED
107 Branch
Tracking Status
firefox-esr102 107+ fixed
firefox106 --- wontfix
firefox107 + fixed

People

(Reporter: mccr8, Assigned: nika)

References

()

Details

(Keywords: csectype-disclosure, sec-moderate, Whiteboard: [pixel-stealing][post-critsmash-triage][adv-main107+][adv-esr102.5+])

Attachments

(2 files)

I noticed a recently-public Chromium security issue involving possible cross-process leaking of information about keystrokes. The basic issue is something like, keyboard events have strings like "KeyA" associated with them that are at fixed, known, and widely-spread addresses. This means that using Prime+Probe kind of cache attacks you can maybe figure out which keys are being pressed.

Nika thinks we could be affected by the same issue, because the top level event table contains pointers to strings which the linker could put wherever, but we could also fix this by doing what the GK atoms stuff does that globs all of the strings together in a giant table. Chrome worked around it by dynamically generating the strings at runtime.

It sounds like a Chromium person thought a packed string table isn't sufficient: "this seems inevitable even with a closely packed string table, since the granulraity of the attack is ~cache-lines?".

I'm not sure what the rating for this should be. It looks like Chrome rated it Security_Severity-Medium.

Nika said she might have time to implement the packed table approach.

Flags: needinfo?(nika)

They're dynamically generating them per-content-process after any sort of forkserver behavior, I assume. Otherwise I would think the content processes would share stringd at the same address and that just adds the step "Find the location of the strings in memory" to the attack, as an attacker reading process memory is within the threat-model post-Spectre.

This isn't really pixel stealing, but that tag has kind of become a catchall for timing attacks.

Whiteboard: [pixel-stealing]
Assignee: nobody → nika
Status: NEW → ASSIGNED
Group: dom-core-security → core-security-release
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 107 Branch
Flags: needinfo?(nika)

Please nominate this for ESR102 approval when you get a chance. It grafts cleanly.

Flags: needinfo?(nika)

Comment on attachment 9298651 [details]
Bug 1793676 - Dynamically generate DOM code names for some continuous runs of codes, r=mccr8!

ESR Uplift Approval Request

  • If this is not a sec:{high,crit} bug, please state case for ESR consideration: Easy uplift for potential sec bug fixed by chromium
  • User impact if declined: potential side-channel for keystrokes
  • Fix Landed on Version: 107
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Simple change which grafts cleanly
Flags: needinfo?(nika)
Attachment #9298651 - Flags: approval-mozilla-esr102?

Comment on attachment 9298651 [details]
Bug 1793676 - Dynamically generate DOM code names for some continuous runs of codes, r=mccr8!

Approved for 102.5esr.

Attachment #9298651 - Flags: approval-mozilla-esr102? → approval-mozilla-esr102+
Flags: qe-verify-
Whiteboard: [pixel-stealing] → [pixel-stealing][post-critsmash-triage]
Whiteboard: [pixel-stealing][post-critsmash-triage] → [pixel-stealing][post-critsmash-triage][adv-main107+]
Whiteboard: [pixel-stealing][post-critsmash-triage][adv-main107+] → [pixel-stealing][post-critsmash-triage][adv-main107+][adv-esr102.5+]
Alias: CVE-2022-45416
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: