Google Optimize A/B variant switcher

ID: gphfjjjpbimgfjobcjgfccahepoofkhl

Could be malicious

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Removed
Version
1.0
Size
0.16 MB
Rating
4.0/5
Reviews
1
Users
4,752
Type
Extension
Updated
Jun 29, 2018
Category
11_web-development
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
Hostnet bvView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
4,752

Switch variants of Google Optimize A/B test experiments seamlessly

Allows users to quickly switch between variations of web pages using Google Optimize A/B experiments.

Item
Type
Severity
Description
cookies
Permission
High
This permission provides full access to read and modify browser cookies. Rated High because it can steal session tokens, modify authentication cookies, and compromise accounts across websites.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 15% increase: Older manifest version lacks modern security controls
tabs
Permission
Medium
This permission enables tab management and monitoring. Rated Medium because it can track open tabs, access tab metadata, and monitor user browsing patterns.
activeTab
Permission
Medium
This permission grants temporary access to the current tab. Rated Medium because it can access current page content when invoked, though limited to user-initiated actions.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2
http://*/
Permission
Unknown
No classification available for this permission.
https://*/
Permission
Unknown
No classification available for this permission.

The `renderForm` method injects values from `this.id`, `this.alias`, `this.expiry`, and `this.flowId` (all derived from cookie data) directly into `targetElement.innerHTML` using template literals without any sanitization or escaping. If a malicious `_gaexp` cookie value contains HTML or script tags, this could lead to DOM-based XSS within the extension popup context. Extension popup pages run with elevated privileges, making XSS here potentially more impactful than on a regular web page.

plugin.js (Line 159)
renderForm(targetElement) {  targetElement.innerHTML += `            <tr data-id="${this.id}" id="${this.rowId}">                <td><input type="text" class="form-control input-alias" value="${this.alias}" placeholder="Experiment alias"></td>                <td><input type="text" class="form-control input-id" value="${this.id}"></td>                <td><input type="number" class="form-control input-expiry" value="${this.expiry}" min="0" max="99999"></td>                <td><input type="number" class="form-control input-flow-id" value="${this.flowId}" min="0" max="1000"></td>                <td><button class="btn btn-default"><i class="icon icon-trash"></i></button></td>            </tr>        `;}

The extension reads the `_gaexp` cookie from the currently active tab using `chrome.cookies.get`. While the stated purpose is to display Google Optimize experiment data, accessing cookies via the Chrome cookies API with broad tab URL access represents a credential/cookie access pattern that could be misused. The deprecated `chrome.tabs.getSelected` API is used here, which also unnecessarily accesses tab metadata.

plugin.js (Line 1)
chrome.tabs.getSelected(null, function(tab) {  chrome.cookies.get({    url: tab.url,    name: '_gaexp'  }, (optimizeCookie) => {    if (!optimizeCookie) {      console.log('No Google Optimize cookie found.');      return;    }    new GoogleOptimize(tab.url, optimizeCookie, tab);  });});

The background script silently monitors every tab activation and update event, calling `chrome.cookies.get` for each tab to check for the `_gaexp` cookie. While the intent is to show/hide the page action, this means the extension is continuously reading cookie data from every tab the user visits or updates, not just when the user explicitly invokes the extension. This constitutes passive, ongoing monitoring of browsing activity and cookie access across all tabs.

background.js (Line 1)
function doCheck(tabId) {  chrome.tabs.get(tabId, (tab) => {    chrome.cookies.get({      url: tab.url,      name: '_gaexp'    }, (optimizeCookie) => {      if (optimizeCookie) {        chrome.pageAction.show(tabId);      } else {        chrome.pageAction.hide(tabId);      }    });  });}chrome.tabs.onActivated.addListener((activeInfo) => doCheck(activeInfo.tabId));chrome.tabs.onUpdated.addListener((tabId) => doCheck(tabId));

By severity

Critical0
High0
Medium1
Low2

Versions scanned

Showing 1 of 1 scanned version with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
1.03

Files with findings

2 distinct paths — top paths by unique finding count:

  • plugin.js2
  • background.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
medium
plugin.js (line 159)The `renderForm` method injects values from `this.id`, `this.alias`, `this.expiry`, and `this.flowId` (all derived from cookie data) directly into `targetElement.innerHTML` using template literals without any sanitiza…
2Credential Theft
low
plugin.js (line 1)The extension reads the `_gaexp` cookie from the currently active tab using `chrome.cookies.get`. While the stated purpose is to display Google Optimize experiment data, accessing cookies via the Chrome cookies API wi…
3Unauthorized Data Collection
low
background.js (line 1)The background script silently monitors every tab activation and update event, calling `chrome.cookies.get` for each tab to check for the `_gaexp` cookie. While the intent is to show/hide the page action, this means t…
URLs
8
IPv4
0
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

github.com/connors/proton/blob/master/LICENSEhttps://github.com/connors/proton/blob/master/LICENSE
fontello.comcopyright-http://fontello.comCopyright
www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtdhttp://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd
www.w3.org/2000/svghttp://www.w3.org/2000/svg
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
*-http://*/
*-https://*/
www.hostnet.nl-https://www.hostnet.nl/

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
1.0
Latest
0.16 MB
Malicious
3
Showing 1 to 1 of 10 rows
Rows per page:

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.