samuelmaddock/metastream

Improve browser security

samuelmaddock opened this issue · 3 comments

Metastream is built using Muon, a fork of Electron for building secure browsers. Muon is being developed by Brave and will soon be abandoned in favor of their own Chromium fork.

While forking Chromium would be ideal for this project, I don't have the resources to do so. This leaves the option of switching back to using Electron.

Electron has recently made some good progress in keeping up-to-date with Chromium (electron/electron#13756) and improving sandboxing support (various). It will need to be evaluated if we can get the same level of security using Electron now, assuming they eventually catch up with Chromium.

One roadblock for using Electron is the lack of a Chrome Extensions API (electron/electron#1498). Metastream's media synchronization is built on top of Muon's extensions API, although it might be possible to implement using a preload script. This also means adding extensions like uBlock Origin would no longer be possible.


General

Update: https://blog.samuelmaddock.com/posts/google-widevine-blocked-my-browser/

Electron contributions roadmap

  • Fix Chrome extensions in sandboxed renderer. electron/electron#16218
  • Execute content scripts in isolated world. electron/electron#17032
  • Support all_frames content script option. electron/electron#17258
  • Disable window resize when using HTML5 Fullscreen API. electron/electron#17203
  • Use Chromium implementation of extensions in Electron. electron/electron#17440
  • Implement chrome.* APIs to support advanced extensions such as adblockers.
  • Add ipcRenderer API to content scripts to support Metastream media remote extension. Or figure out another way to pass messages between renderer and content scripts.

Electron 4.x.x is in beta now and is using the latest version of chromium (69).

The sandbox renderer doesn't have support for Chrome extensions at all while the normal renderer does. This functionality would need to be added to the sandboxed renderer. There would likely be less chrome.* APIs implemented then what's currently offered by Muon.

While Widevine CDM is supported by Electron, support for Widevine VMP is not—required by netflix, hulu, and more. See electron/electron#12427. castLabs has a fork of electron with support for this. I'd rather not have to rely on it though. I'm going to see if any effort has been made to merge efforts upstream (castlabs/electron-releases#24).

Starting an effort to support Chrome Extensions in the sandboxed renderer of Electron.

Many Chrome APIs will still need to be implemented.

Closing as this will be solved by the issue referenced above.