protonscr

Current version of CEF used on Steam-for-Linux does not include Spectre mitigation

steamclosed Web Component
ValveSoftware/steam-for-linux#5378 · opened 2018-02-08 by paulovilli · updated 2020-06-13 · 3 comments · github
Ppaulovilli 2018-02-08 github

System Information:
Hardware: Phenom-II x4 + AMD HD7770
Steam client version (build number or date): jan 25 2018 at 21:25:07 / 1516948201 / API v018
Distribution (e.g. Ubuntu): Linux Mint Cinnamon Edition 18.3
Linux Kernel: 4.13.0-32 (Ubuntu Kernel HWE, as provided by Linux Mint Update Manager)
Opted into Steam client beta?: Yes
Steam installed from Linux Mint's Software Manager repository
Have you checked for system updates?: Yes
Using only opensource GPU driver
Using closed source AMD microcode (amd64-microcode) version 2.20160316.1
No related PPAs installed

What I expected:
Spectre mitigations enabled, including recent enough version of CEF (libcef) being included on Steam (at the very least on Beta).

According to https://www.chromium.org/Home/chromium-security/ssca

Chrome has disabled SharedArrayBuffer on Chrome 63 starting on Jan 5th, and will modify the behavior of other APIs such as performance.now, to help reduce the efficacy of speculative side-channel attacks [...]

Chrome's JavaScript engine, V8, will include mitigations starting with Chrome 64, which will be released on or around January 23rd 2018. Future Chrome releases will include additional mitigations and hardening measures which will further reduce the impact of this class of attack [...]

According to https://bitbucket.org/chromiumembedded/cef/issues/2360/sharedarraybuffer-enabled-so-cef-3112-3282

[...] the early mitigation for Spectre is to disable SharedArrayBuffer.
To test whether this has been done, load the one-line file
<script>window.alert(window.SharedArrayBuffer)</script>
into cefclient (a file: url works). If the alert says "unknown", it's disabled.

[...] an update to 64.0.3282.119 is currently in progress

What happened:
On Steam overlay, chrome://version informs this:

CEF 3.3202.1726.g2cc13f0
Chromium 62.0.3202.94

The test for "SharedArrayBuffer" status shows it as enabled, with dialog box showing:

function SharedArrayBuffer() {[native code]}
instead of expected "unknown" or "undefined" (as shown on Chromium 64.0.3282.119 on my PC using the same test file)

Steps for reproducing this issue:

  1. Create new text file, paste <script>window.alert(window.SharedArrayBuffer)</script> in it and save as "test.html" on user home folder
  2. Open Steam, enable Steam overlay, open any game, press "shift+tab" and go to the web browser
  3. Access the url "chrome://version"
  4. Compare to versions informed as safe on linked CEF issue and Chromium Security advisory
  5. Open "file:///home/user/test.html"
  6. Dialog box will open with message:

function SharedArrayBuffer() {[native code]}

Hh1z1 2018-02-10 github

Is Valve tracking existing CVE's that remain unpatched? Last time I checked there were several.

Kkisak-valve maintainer 2020-05-29 github

Hello @paulovilli, CEF in Steam has been updated several times since this issue report. Closing as outdated.

Ppaulovilli 2020-06-13 github

Hello @kisak-valve

The issue has been considered resolved on Chromium 68 so SharedArrayBuffer feature was reenabled.

References:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
https://bugs.chromium.org/p/chromium/issues/detail?id=821270

This means the test described on the original issue will currently return "function SharedArrayBuffer() {[native code]}" but CEF will still be safe to use, as long as the version is new enough.

Unfortunately, I can't use "chrome://version" to determine which version of CEF is actually currently in use, but a "test.html" file containing "" returns Chrome 79 as part of the user agent string, which should be safe if that string isn't set incorrectly.

Nothing extracted yet.