Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Potentially excessive permissions per CRXcavator #871

Open
egonil opened this issue Feb 23, 2019 · 2 comments
Open

Potentially excessive permissions per CRXcavator #871

egonil opened this issue Feb 23, 2019 · 2 comments

Comments

@egonil
Copy link

egonil commented Feb 23, 2019

Please complete the following information when submitting a feature request or bug report.

  • Extension version: 7.0.109
  • Browser name & version: Chrome 72.0.3626.109
  • Operating system & version: WIndows 10

https://crxcavator.io/report/klbibkeccnjlkjkiokjodocebajanakg/7.0.109

Permissions need review to see what can be minimized.

@deanoemcke
Copy link
Collaborator

Firstly, I'd like to redirect people to the pinned issue that justifies a lot of the permissions required by this extension: #213

From crxcavator.io:

cookies | Gives your extension access to the chrome.cookies API. | Critical

This is only necessary until everyone has migrated to v7.x (from v6.30). I no longer use cookies but still need permission in v7.x to remove all cookies created prior to v7. Cookies need to be removed due to this bug: #537

This permission can be removed after v7 has been pushed out to 100% of webstore users.

https:/// | Gives your extension access to run on all 'https' sites. | High
http:/// | Gives your extension access to run on all 'http' sites. | High

This is core functionality in order to be able to run content scripts and execute remote js code on ALL websites (as we need them all the best able to suspend). Features that currently rely on this ability are:

  • Form input detection. The extension listens for keypresses inside of form elements to prevent tabs with partially completed forms from suspending (and losing all the typed input).
  • Screen capture. The extension executes a third party library (html2canvas) within the context of the website to capture the contents of the screen and produce an screenshot of what was on the screen before the tab suspended. Note that the chrome.tabCapture API cannot be used here as it only allows us to capture a visible tab.

history | Gives your extension access to the chrome.history API. | High

This permission is only required to 'tidy up' the urls in the session history to remove any suspended tab entries. They are always duplicates of the real urls and just clutter up the history if left in there.
For more information on this behaviour (and it's limitations), refer to this issue: #717

tabs | Gives your extension access to privileged fields of the Tab objects used by several APIs including chrome.tabs and chrome.windows. In many circumstances your extension will not need to declare the "tabs" permission to make use of these APIs. | High

From the chrome documentation: "if you require access to the url, title, or favIconUrl properties of tabs.Tab, you must declare the "tabs" permission in the manifest".

This extension makes heavy use of the url, title, and faviconUrl properties of the Tab objects. This is core functionality.

storage | Gives your extension access to the chrome.storage API. | Medium

unlimitedStorage | Provides an unlimited quota for storing HTML5 client-side data, such as databases and local storage files. Without this permission, the extension or app is limited to 5 MB of local storage. | None

This extension uses the chrome.storage API to enable syncing of settings between computers with the same chrome profile. However, it also requires the local storage permission as it was initially built using the local storage API and it is preferred (by me) due to it's synchronous behaviour. It also requires unlimited storage in order to guarantee that it will be able to record an infinite number of tabs and saved sessions within the session history feature.

contextMenus | Gives your extension access to the chrome.contextMenus API. | None

This is core functionality to enable the right click context menu.

https://greatsuspender.github.io/ | Unknown permission | Unknown

This extension does a ping out to this particular url to see if there is an urgent notice that needs to be displayed to the users. This has never been necessary in the past and can probably be removed from the project if it's considered a risk.

chrome://favicon/* | Unknown permission

This extension relies heavily on chrome's internal favicon cache to source and display placeholder favicons on suspended tabs.

@deanoemcke
Copy link
Collaborator

@egonil I think there are just a couple of takeaways from this:

  1. The cookies permission should be removed in a subsequent release of the extension (v8?).
  2. Potentially remove the history cleanup functionality from the extension if it's judged that the perceived risk of the permission outweighs the benefits of having a cleaner session history.
  3. Potentially remove the external ping to https://greatsuspender.github.io

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants