philc / philc/vimium

Feature Request: Move clipboardRead to optional_permissions

Open
#4,915 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
27k
Forks
2.6k
PR merge metrics
No merged PRs in 30d

Description

clipboardRead is currently a required extension permission for vimium on firefox. This means vimium has completely unrestricted access to the OS clipboard. This differs from chrome where clipboard access is web-permission-gated.

Leaving clipboardRead in the required permissions opens up a very nasty exfiltration vector with no way for the user to opt-out (post-FF147, there's no way to disable the async clipboard via prefs). That's not to say I think vimium is malicious, but there's no way to predict what will get hit by the next supply chain attack (these seem to be happening daily now).

Clipboard access is uniquely dangerous in that running the extension under a separate profile does not protect you. The extension has access to a global OS state, not just whatever is in the browser.

I don't have numbers on this, but anecdotally speaking, an extension requiring clipboard read access seems to be rather unusual. Of the dozen or so extensions I keep my eye on, a few them require clipboardWrite and a few have clipboardRead as optional. Vimium is the only extension I've seen that requires clipboardRead.

And of course clipboardWrite has its own set of problems, but it's not as devastating as clipboardRead.

Personally, I don't paste URLs into vimium, so the read access is just a giant exfil vector that I gain nothing from and can't disable. There is currently no way to disable required extension permissions in firefox. Even the future blocked_permissions policy property won't work properly for this use-case.

Please consider moving clipboardRead to optional_permissions. I'd press for clipboardWrite to be made optional too.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file or test is named in the issue. Start by locating the Firefox extension permission declaration and any clipboard-read permission handling, then verify that clipboard access is optional and remains usable when granted without being required at install time.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
security
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.