EditThisCookie

ID: fngmhnnpilhplaeedifhccceomclgfbg

Could be malicious

Supported Languages

๐Ÿ‡ธ๐Ÿ‡ฆArabic
๐Ÿ‡ง๐Ÿ‡ทBrazilian Portuguese
๐Ÿ‡จ๐Ÿ‡ณChinese (Simplified)
๐Ÿ‡น๐Ÿ‡ผChinese (Traditional)
๐Ÿ‡จ๐Ÿ‡ฟCzech
๐Ÿ‡ฉ๐Ÿ‡ฐDanish
๐Ÿ‡ณ๐Ÿ‡ฑDutch
๐Ÿ‡บ๐Ÿ‡ธEnglish
๐Ÿ‡ช๐Ÿ‡ชEstonian
๐Ÿ‡ซ๐Ÿ‡ฎFinnish
๐Ÿ‡ซ๐Ÿ‡ทFrench
๐Ÿ‡ฉ๐Ÿ‡ชGerman
๐Ÿ‡ฌ๐Ÿ‡ทGreek
๐Ÿ‡ฎ๐Ÿ‡ฑHebrew
๐Ÿ‡ญ๐Ÿ‡บHungarian
๐Ÿ‡ฎ๐Ÿ‡ฉIndonesian
๐Ÿ‡ฎ๐Ÿ‡นItalian
๐Ÿ‡ฏ๐Ÿ‡ตJapanese
๐Ÿ‡ฐ๐Ÿ‡ทKorean
๐Ÿ‡ฑ๐Ÿ‡นLithuanian
๐Ÿ‡ฒ๐Ÿ‡พMalay
๐Ÿ‡ณ๐Ÿ‡ดNorwegian
๐Ÿ‡ฎ๐Ÿ‡ทPersian
๐Ÿ‡ต๐Ÿ‡ฑPolish
๐Ÿ‡ต๐Ÿ‡นPortuguese
๐Ÿ‡ท๐Ÿ‡ดRomanian
๐Ÿ‡ท๐Ÿ‡บRussian
๐Ÿ‡ท๐Ÿ‡ธSerbian
๐Ÿ‡ธ๐Ÿ‡ฐSlovak
๐Ÿ‡ช๐Ÿ‡ธSpanish
๐Ÿ‡ธ๐Ÿ‡ชSwedish
๐Ÿ‡ฎ๐Ÿ‡ณTamil
๐Ÿ‡น๐Ÿ‡ทTurkish
๐Ÿ‡บ๐Ÿ‡ฆUkrainian
๐Ÿ‡ป๐Ÿ‡ณVietnamese

Extension Info & Metadata

Status
Removed
Version
1.6.1
Size
1.35 MB
Rating
4.4/5
Reviews
11,442
Users
2,000,000
Type
Extension
Updated
Aug 14, 2024
Category
Productivity Developer
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
https://editthiscookie.comView Profile
Country
GB
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
Yes
Mailbox exists
Yes
Address
Ridgdale Street London E32TW GB
Website
Visit
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
2,000,000

EditThisCookie is a cookie manager. You can add, delete, edit, search, protect and block cookies!

The first and best cookie manager for Google Chrome. โ˜… Edit, delete, create cookies โ˜… Make them read-only โ˜… Block them (create filters) โ˜… Export to JSON, Netscape cookie file (perfect for wget and curl), Perl::LPW โ˜… Import from JSON โ˜… Limit the maximum expiration date of any cookie โ˜… Improve the performance, remove old ones โ˜… Import a cookies.txt file

Item
Type
Severity
Description
<all_urls>
Permission
Critical
This permission grants access to all websites without restriction. Rated High because it can access any web content, monitor all web activity, and potentially steal sensitive data across all sites.
webRequest
Permission
Critical
This permission enables the extension to monitor and analyze all web requests made by the browser. Rated Critical because it can observe all network traffic including sensitive data, track browsing behavior, and gather authentication tokens.
webRequestBlocking
Permission
Critical
This permission allows the extension to intercept, modify, or block any web request in real-time before it reaches its destination. Rated Critical because it can modify sensitive data (like passwords, credit cards) before encryption, redirect traffic to malicious sites, or block security updates.
Dangerous Permission Combination
Risk Factor
Critical
This extension can intercept, modify, and block web requests in real-time.
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.
clipboardWrite
Permission
High
This permission allows modification of clipboard content. Rated High because it can inject malicious content into the clipboard, modify copied passwords, and manipulate copied data.
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.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2
contextMenus
Permission
Low
This permission adds items to browser context menus. Rated Medium because it only modifies right-click menus without access to page content.
notifications
Permission
Low
This permission displays system notifications. Rated Low because it can only show user-visible notifications without accessing system data.

A blocking webRequest listener intercepts all HTTP responses across every URL (<all_urls>) and can strip Set-Cookie response headers before they reach the browser. The blocking + extraHeaders flags grant the ability to suppress cookie-setting for any domain, which could be abused to prevent security cookies (e.g., re-authentication tokens, CSRF tokens) from being applied. Variables headersToForward, headersChanged, and cH are also implicitly global (no var/let/const), creating unintended shared state.

js/background.js (Line 111)
chrome.webRequest.onHeadersReceived.addListener(  function(details) {    if (details.responseHeaders !== undefined) {      headersToForward = [];      headersChanged = false;      for (var i = 0; i < details.responseHeaders.length; i++) {        cH = details.responseHeaders[i];        if (cH.name.toUpperCase() == "SET-COOKIE") {          fields = cH.value.split(';');          var cookieName = undefined;          var cookieDomain = undefined;          var cookieValue = undefined;          if (fields.length > 0) {            cookieName = fields[0].split('=')[0]            cookieValue = fields[0].split('=')[1]          }          for (var x = 1; x < fields.length; x++) {            if (fields[x].split('=')[0].trim() == "domain") {              cookieDomain = fields[x].split('=')[1];              break;            }          }          if (cookieName !== undefined && cookieDomain !== undefined && cookieValue !== undefined) {            for (var x = 0; x < data.filters.length; x++) {              var currentFilter = data.filters[x];              if (!filterMatchesCookie(currentFilter, cookieName, cookieDomain, cookieValue)) {                headersToForward.push(cH);              } else {                headersChanged = true;              }            }          }        }      }    }    if (headersChanged) {      return {        responseHeaders: headersToForward      };    } else {      return {};    }  }, {    urls: ["<all_urls>"]  },  ["blocking", "responseHeaders", "extraHeaders"]);

Google Analytics is loaded dynamically in the background page โ€” a context with no UI and no user-initiated pageviews โ€” and fires a 'Heartbeat' event every 4 minutes as a persistent beacon confirming the extension is active. This constitutes unauthorized background telemetry: users are continuously tracked without consent, and GA data includes the browser's IP address and UA string. Loading ga.js in the background also runs alongside chrome.cookies.onChanged, creating a proximity risk for correlating cookie events with GA sessions.

js/ga.js (Line 1)
var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-33054271-5']);_gaq.push(['_setSessionCookieTimeout', 0]);_gaq.push(['_trackPageview']);(function() {  var ga = document.createElement('script');  ga.type = 'text/javascript';  ga.async = true;  ga.src = 'https://ssl.google-analytics.com/ga.js';  var s = document.getElementsByTagName('script')[0];  s.parentNode.insertBefore(ga, s);})();setInterval(function() {  _gaq.push(['_trackEvent', 'Heartbeat', 'Heartbeat']);}, 4 * 60 * 1000);

The GA analytics script is fetched and executed at runtime from an external server by dynamically injecting a script tag into the background page. The actual code executed is not contained within the extension package and could be changed server-side at any time. This is remote code loading in the background context โ€” the most privileged extension context โ€” where it has access to chrome.cookies and chrome.webRequest.

js/ga.js (Line 6)
(function() {  var ga = document.createElement('script');  ga.type = 'text/javascript';  ga.async = true;  ga.src = 'https://ssl.google-analytics.com/ga.js';  var s = document.getElementsByTagName('script')[0];  s.parentNode.insertBefore(ga, s);})();

When a block rule is added, chrome.cookies.getAll({}) is called with an empty filter, which retrieves every cookie from every domain in every cookie store. This is a broad credential sweep โ€” every session token, auth cookie, and tracking cookie for every website the user has visited is enumerated. While the stated intent is to delete matching cookies, the wide enumeration creates an unnecessary attack surface and could be combined with the background GA context to leak cookie inventory data.

js/utils.js (Line 18)
function addBlockRule(rule) {  var dfilters = data.filters;  for (var x = 0; x < dfilters.length; x++) {    ...  }  dfilters[dfilters.length] = rule;  data.filters = dfilters;  filterURL = {};  ...  chrome.cookies.getAll({}, function(cookieL) {    for (var x = 0; x < cookieL.length; x++) {      var cCookie = cookieL[x];      if (filterMatchesCookie(filterURL, cCookie.name, cCookie.domain, cCookie.value)) {        var cUrl = (cCookie.secure) ? "https://" : "http://" + cCookie.domain + cCookie.path;        deleteCookie(cUrl, cCookie.name, cCookie.storeId, cCookie)      }    }  });}

The select content handler uses eval() to parse a JSON string returned from a server-controlled loadurl endpoint. Any server response or attacker-influenced content reaching this code path is executed as arbitrary JavaScript. This is a code injection vulnerability that can be triggered if the loadurl is pointed at an attacker-controlled URL or if a MITM intercepts the response.

lib/jquery.jeditable.js (Line 368)
content: function(string, settings, original) {    /* IE borks if we do not store select in separate variable. */    var select = jQuery('select', this);    if (String == string.constructor) {      eval("var json = " + string);      for (var key in json) {        if ('selected' == key) {          continue;        }        var option = $('<option>').val(key).append(json[key]);        select.append(option);      }

When a cookie field form is submitted via jEditable, it POSTs cookie data (including name, value, domain) to settings.target and writes the raw server response to self.innerHTML without sanitization. The target URL is caller-controlled, meaning cookie data could be exfiltrated to an arbitrary endpoint, and the unsanitized innerHTML write constitutes a stored XSS sink.

lib/jquery.jeditable.js (Line 266)
/* show the saving indicator */jQuery(self).html(settings.indicator);jQuery.post(settings.target, submitdata, function(str) {  self.innerHTML = str;  self.editing = false;  callback.apply(self, [self.innerHTML, settings]);});

A persistent message channel is established between the devtools panel and the background page on load, immediately requesting all cookies for the inspected tab. The devtools panel operates in a privileged context with access to chrome.devtools.inspectedWindow.tabId, enabling silent reads of cookies for any tab being inspected. This creates a persistent pipeline that routes all cookie data through the background page, which co-hosts the GA heartbeat beacon.

devtools/panel.js (Line 4)
var backgroundPageConnection = chrome.runtime.connect({  name: "devtools-page"});backgroundPageConnection.onMessage.addListener(function(message) {  if (message.action === "getall") {    createTable(message);  } else if (message.action === "refresh") {    location.reload(true);  }});function start() {  var arguments = getUrlVars();  if (arguments.url !== undefined) {    createList("https://google.com");    return;  }  var tabId = chrome.devtools.inspectedWindow.tabId;  backgroundPageConnection.postMessage({    action: "getall",    tabId: tabId  });}

A global chrome.cookies.onChanged listener fires on every cookie change across all browsing contexts, reading the cookie name, domain, and value for each event. While ostensibly for a read-only cookie protection feature, this gives the background page persistent visibility into every cookie modification event (including session and authentication cookies) for every site the user visits. Combined with the GA heartbeat loaded in the same background page, this creates a co-location risk where real-time cookie events run alongside an active external reporting channel.

js/background.js (Line 46)
chrome.cookies.onChanged.addListener(function(changeInfo) {      var removed = changeInfo.removed;      var cookie = changeInfo.cookie;      var cause = changeInfo.cause;      var name = cookie.name;      var domain = cookie.domain;      var value = cookie.value;      if (cause === "expired" || cause === "evicted")        return;      for (var i = 0; i < data.readOnly.length; i++) {        var currentRORule = data.readOnly[i];        if (compareCookies(cookie, currentRORule)) {          if (removed) {            chrome.cookies.get({              'url': "http" + ((currentRORule.secure) ? "s" : "") + "://" + currentRORule.domain + currentRORule.path,              'name': currentRORule.name,              'storeId': currentRORule.storeId            }, function(currentCookie) {              if (compareCookies(currentCookie, currentRORule))                return;              var newCookie = cookieForCreationFromFullCookie(currentRORule);              chrome.cookies.set(newCookie);              ++data.nCookiesProtected;            });          }          return;        }      }

A heartbeat event fires every 4 minutes from the background page to Google Analytics, continuously reporting to a third-party server that the user's browser is open and the extension is active. This leaks behavioral/presence data without user awareness or consent, and the regular interval makes it function as a persistent tracking beacon rather than ordinary analytics.

js/ga.js (Line 12)
setInterval(function() {  _gaq.push(['_trackEvent', 'Heartbeat', 'Heartbeat']);}, 4 * 60 * 1000);

The options page reads the 'page' parameter directly from the URL query string via getUrlVars() and uses it unsanitized to construct a redirect target via location.href. This is an open redirect vulnerability โ€” a malicious page could craft a URL pointing to the options page with an arbitrary 'page' parameter to redirect the user to an unintended location within the chrome-extension:// origin.

js/options_main_page.js (Line 1)
var panel = JSON.parse(localStorage.getItem("option_panel"));var arguments = getUrlVars();var element;if (panel === "null" || panel === null || panel === undefined) {  element = "support";} else {  element = panel;}if (arguments.page !== undefined) {  element = arguments.page;}location.href = "/options_pages/" + element + ".html";

The panel directly calls chrome.cookies.getAll() for any URL, retrieving all cookies associated with that origin including session tokens and auth cookies. Retrieved cookies are stored in module-level variables (tabURL, cookieList) that persist for the lifetime of the devtools panel and are accessible to any code sharing that scope.

devtools/panel.js (Line 34)
function createList(url) {  tabURL = url;  chrome.cookies.getAll({    url: tabURL  }, function(cks) {    createTable({      url: tabURL,      cks: cks    });  });}

The options page opens URLs to editthiscookie.com over plain HTTP (not HTTPS), exposing users to MITM attacks on those navigations. The id attribute from DOM elements is also directly interpolated into a navigation path, which could allow path traversal if the id value is not strictly constrained by the HTML.

options_pages/options_page_chooser.js (Line 6)
function setPageCooserEvents() {  $(".chooser").click(function() {    var panel = $(this).attr("id");    if ($(this).hasClass("selected"))      return;    var id = $(this).attr("id");    if (id == "getting_started") {      openExtPage("http://www.editthiscookie.com/start/");      return;    } else if (id == "help") {      openExtPage("http://www.editthiscookie.com/faq/");      return;    }    ls.set("option_panel", panel);    location.href = "/options_pages/" + id + ".html";  });}

The localizePage function uses jQuery's .html() to inject translated strings and i18n_argument attribute values into the DOM without sanitization. If any translated message string or attribute value contains HTML markup or JavaScript, it will be parsed and executed by the browser, creating a DOM-based XSS path within the extension's privileged pages.

lib/i18n_translator.js (Line 7)
function localizePage() {  //translate a page into the users language  $('[i18n]:not(.i18n-replaced)').each(function() {    //Append text to element content    $(this).html($(this).html() + translate($(this).attr('i18n'), $(this).attr('i18n_argument')));    $(this).addClass('i18n-replaced');  });

User-supplied filter strings (domain, name, value) are passed directly to new RegExp() without sanitization, creating a ReDoS (Regular Expression Denial of Service) vulnerability. A pathological regex in a cookie value or filter rule could freeze the extension's background page. This function is also called inside the blocking webRequest listener, meaning a freeze there would stall all network responses.

js/utils.js (Line 106)
function filterMatchesCookie(rule, name, domain, value) {  var ruleDomainReg = new RegExp(rule.domain);  var ruleNameReg = new RegExp(rule.name);  var ruleValueReg = new RegExp(rule.value);  if (rule.domain !== undefined && domain.match(ruleDomainReg) === null) {    return false;  }  if (rule.name !== undefined && name.match(ruleNameReg) === null) {    return false;  }  if (rule.value !== undefined && value.match(ruleValueReg) === null) {    return false;  }  return true;}

The cookie serialization functions (json, semicolonPairs, Netscape format) use an implicitly global cookie variable (no var/let/const), meaning the last-processed full cookie object โ€” including its value, httpOnly flag, and expirationDate โ€” is accessible from any script sharing the same background page scope after serialization completes.

js/cookie_helpers.js (Line 140)
"json": function(cookies, url) {  var string = "";  string += "[\n";  for (var i = 0; i < cookies.length; i++) {    cookie = cookies[i];    cookie.id = i + 1;    string += JSON.stringify(cookie, null, 4);    if (i < cookies.length - 1)      string += ",\n";  }  string += "\n]";  return string;},

The help button in the popup links to an external HTTP (not HTTPS) URL opened from the privileged extension context. Plain HTTP navigations from extensions are susceptible to MITM interception and could be used to serve phishing content or malicious scripts to a user who trusts the extension.

popup.html (Line 271)
<div id="submitDiv">  <i id="submitButton" class="fa fa-check" i18n_title="Alert_submitAll"></i>  <a id="helpButton" i18n="help" href="http://www.editthiscookie.com/start/" target="_blank">  </a></div>

The support page references getlocalization.com over plain HTTP. This third-party service appears defunct and the domain may have been re-registered by an unknown party. Links opened via chrome.tabs.create to plain HTTP URLs from a privileged extension context are vulnerable to MITM substitution.

options_pages/support.html (Line 45)
<div class="linkify" lnk="http://www.getlocalization.com/editthiscookie/">  <div class="section-title" i18n="translation"></div>  <i style="color: #8820BD; font-size: 4em; margin-top:5px; margin-right:5px;" class="fa fa-comment fa-fw"></i>  <span i18n="translationIntro"></span></div>

By severity

Critical0
High18
Medium15
Low5

Versions scanned

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

Extension VersionCode Review Findings
1.6.24
1.6.117
1.614
1.5.03

Files with findings

14 distinct paths โ€” top paths by unique finding count:

  • js/ga.js9
  • js/background.js8
  • js/utils.js3
  • devtools/background-devtools.js2
  • devtools/panel.js2
  • js/cookie_helpers.js2
  • js/options_main_page.js2
  • lib/i18n_translator.js2
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
high
lib/jquery.jeditable.js (line 368)The select content handler uses eval() to parse a JSON string returned from a server-controlled loadurl endpoint. Any server response or attacker-influenced content reaching this code path is executed as arbitrary Javโ€ฆ
2Credential Theft
high
js/utils.js (line 18)When a block rule is added, chrome.cookies.getAll({}) is called with an empty filter, which retrieves every cookie from every domain in every cookie store. This is a broad credential sweep โ€” every session token, auth โ€ฆ
3Credential Theft
high
devtools/background-devtools.js (line 36)The background devtools page retrieves all cookies for an inspected tab URL and relays the full cookie array โ€” including session tokens, HttpOnly cookies, and secure cookies โ€” via a port message to the devtools panel โ€ฆ
4Credential Theft
high
devtools/background-devtools.js (line 13)The background page accepts arbitrary cookie modification commands from the devtools panel via message passing โ€” deleting existing cookies and setting new ones for any URL โ€” with no authentication or origin check beyoโ€ฆ
5Credential Theft
high
options_pages/user_preferences.js (line 222)The function calls `chrome.cookies.getAll({})` with an empty filter, which retrieves ALL cookies across ALL domains in the browser, then iterates and modifies every cookie's expiration date. This is the broadest possiโ€ฆ
6Data Exfiltration
high
lib/jquery.jeditable.js (line 266)When a cookie field form is submitted via jEditable, it POSTs cookie data (including name, value, domain) to settings.target and writes the raw server response to self.innerHTML without sanitization. The target URL isโ€ฆ
7Network Interception
high
js/background.js (line 111)The extension installs a blocking webRequest listener on all URLs (<all_urls>) with extraHeaders access, meaning it intercepts every single HTTP and HTTPS response the browser receives across all websites. The listeneโ€ฆ
8Network Interception
high
js/background.js (line 111)A blocking webRequest listener intercepts all HTTP responses across every URL (<all_urls>) and can strip Set-Cookie response headers before they reach the browser. The blocking + extraHeaders flags grant the ability tโ€ฆ
9Network Interception
high
js/background.js (line 111)A blocking `webRequest.onHeadersReceived` listener intercepts ALL HTTP responses across all URLs and reads raw `Set-Cookie` header values โ€” including cookie names, values, and domains โ€” before the browser processes thโ€ฆ
10Network Interception
high
js/background.js (line 158)The `webRequest` listener is registered with `blocking` + `extraHeaders` on `<all_urls>`, granting access to otherwise-protected headers including `Set-Cookie` for every HTTP/HTTPS request in the browser. The `extraHeโ€ฆ
11Remote Code Loading
high
js/ga.js (line 6)The background page dynamically loads and executes a remote JavaScript file from ssl.google-analytics.com at runtime. The background page runs with elevated Chrome extension privileges including access to chrome.cookiโ€ฆ
12Remote Code Loading
high
js/ga.js (line 6)The GA analytics script is fetched and executed at runtime from an external server by dynamically injecting a script tag into the background page. The actual code executed is not contained within the extension packageโ€ฆ
13Remote Code Loading
high
js/ga.js (line 1)The extension dynamically injects an external script from `https://ssl.google-analytics.com/ga.js` into the popup page at runtime using `document.createElement('script')`. This constitutes remote code loading โ€” any coโ€ฆ
14Remote Code Loading
high
popup.html (line 19)The popup HTML loads `ga.js` which dynamically fetches and executes a remote Google Analytics script in the same execution context as the popup, which has access to `chrome.cookies`, `<all_urls>`, and all other privilโ€ฆ
15Remote Code Loading
high
js/ga.js (line 1)The extension dynamically injects a remote script from Google Analytics into its background context. Remote script loading is a high-risk pattern in extensions because the fetched code executes inside a privileged extโ€ฆ
16Tracking
high
js/ga.js (line 1)This file is loaded as the last entry in the background page script array (manifest.json lines 23-31), meaning it runs persistently in a privileged extension context with access to the cookies API. It dynamically injeโ€ฆ
17Unauthorized Data Collection
high
js/ga.js (line 1)Google Analytics is loaded dynamically in the background page โ€” a context with no UI and no user-initiated pageviews โ€” and fires a 'Heartbeat' event every 4 minutes as a persistent beacon confirming the extension is aโ€ฆ
18Unauthorized Data Collection
high
devtools/panel.js (line 4)A persistent message channel is established between the devtools panel and the background page on load, immediately requesting all cookies for the inspected tab. The devtools panel operates in a privileged context witโ€ฆ
19Code Injection
medium
lib/i18n_translator.js (line 7)The localizePage function uses jQuery's .html() to inject translated strings and i18n_argument attribute values into the DOM without sanitization. If any translated message string or attribute value contains HTML markโ€ฆ
20Code Injection
medium
js/options_main_page.js (line 1)The `element` variable is set directly from the `page` URL query parameter or from `localStorage` without any whitelist validation before being concatenated into `location.href`. An attacker who can control the URL paโ€ฆ
21Code Injection
medium
lib/i18n_translator.js (line 7)The `localizePage` function inserts translated strings via jQuery's `.html()` setter โ€” equivalent to `innerHTML` assignment โ€” without sanitization. If a locale message file were tampered with (the extension bundles 40โ€ฆ
22Credential Theft
medium
js/popup.js (line 309)The `importCookies` function accepts arbitrary JSON text pasted by the user and directly calls `chrome.cookies.set()` on each parsed cookie object without domain validation or sanitization. A crafted JSON payload coulโ€ฆ
23Other
medium
js/options_main_page.js (line 1)The options page reads the 'page' parameter directly from the URL query string via getUrlVars() and uses it unsanitized to construct a redirect target via location.href. This is an open redirect vulnerability โ€” a maliโ€ฆ
24Other
medium
options_pages/options_page_chooser.js (line 6)The options page opens URLs to editthiscookie.com over plain HTTP (not HTTPS), exposing users to MITM attacks on those navigations. The id attribute from DOM elements is also directly interpolated into a navigation paโ€ฆ
25Other
medium
js/utils.js (line 106)User-supplied filter strings (domain, name, value) are passed directly to new RegExp() without sanitization, creating a ReDoS (Regular Expression Denial of Service) vulnerability. A pathological regex in a cookie valuโ€ฆ
26Other
medium
js/utils.js (line 106)User-supplied filter rule strings (domain, name, value) are passed directly into `new RegExp()` without sanitization or escaping. This function is called inside the blocking `webRequest` handler, so a catastrophicallyโ€ฆ
27Tracking
medium
js/ga.js (line 12)A heartbeat event fires every 4 minutes from the background page to Google Analytics, continuously reporting to a third-party server that the user's browser is open and the extension is active. This leaks behavioral/pโ€ฆ
28Tracking
medium
js/ga.js (line 1)The extension silently tracks every popup open as a page view and fires a heartbeat telemetry event every 4 minutes to Google Analytics account `UA-33054271-5`, allowing the extension operator to monitor the precise uโ€ฆ
29Tracking
medium
js/ga.js (line 1)This code enables telemetry by sending a pageview and a recurring 'Heartbeat' event every 4 minutes to a Google Analytics property. It does not appear to send cookie contents directly, but it does implement persistentโ€ฆ
30Unauthorized Data Collection
medium
js/background.js (line 46)The background page registers a persistent listener on chrome.cookies.onChanged that fires for every cookie set or removed across all websites the user visits. On each event, it extracts the cookie name, domain, and fโ€ฆ
31Unauthorized Data Collection
medium
js/background.js (line 46)A global chrome.cookies.onChanged listener fires on every cookie change across all browsing contexts, reading the cookie name, domain, and value for each event. While ostensibly for a read-only cookie protection featuโ€ฆ
32Unauthorized Data Collection
medium
devtools/panel.js (line 34)The panel directly calls chrome.cookies.getAll() for any URL, retrieving all cookies associated with that origin including session tokens and auth cookies. Retrieved cookies are stored in module-level variables (tabURโ€ฆ
33Unauthorized Data Collection
medium
js/background.js (line 46)The `chrome.cookies.onChanged` listener captures the name, domain, and value of every cookie change event across all domains in real time. The extension has unrestricted access to all cookie values โ€” including sessionโ€ฆ
34Credential Theft
low
js/cookie_helpers.js (line 140)The cookie serialization functions (json, semicolonPairs, Netscape format) use an implicitly global cookie variable (no var/let/const), meaning the last-processed full cookie object โ€” including its value, httpOnly flaโ€ฆ
35Credential Theft
low
js/cookie_helpers.js (line 140)The `cookiesToString` functions serialize full cookie objects โ€” including name, value, domain, path, secure flag, httpOnly flag, and expiration โ€” into clipboard-ready strings. The variable `cookie` is assigned withoutโ€ฆ
36Other
low
popup.html (line 271)The help button in the popup links to an external HTTP (not HTTPS) URL opened from the privileged extension context. Plain HTTP navigations from extensions are susceptible to MITM interception and could be used to serโ€ฆ
37Other
low
options_pages/support.html (line 45)The support page references getlocalization.com over plain HTTP. This third-party service appears defunct and the domain may have been re-registered by an unknown party. Links opened via chrome.tabs.create to plain HTโ€ฆ
38Phishing
low
js/background.js (line 21)On install and update, the extension opens external pages over plain HTTP rather than HTTPS. That is not direct malware behavior by itself, but it is a suspicious legacy pattern because the destination content could bโ€ฆ
URLs
47
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.

fontawesome.io-http://fontawesome.io
fontawesome.io/licensehttp://fontawesome.io/license
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
jqueryui.com-http://jqueryui.com
jqueryui.com/themeroller/http://jqueryui.com/themeroller/?scope=&folderName=smoothness&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=2e83ff&fcHighlight=363636&borderColorHighlight=fcefa1&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=fbf9ee&iconColorActive=454545&fcActive=212121&borderColorActive=aaaaaa&bgImgOpacityActive=65&bgTextureActive=glass&bgColorActive=ffffff&iconColorHover=454545&fcHover=212121&borderColorHover=999999&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=dadada&iconColorDefault=888888&fcDefault=555555&borderColorDefault=d3d3d3&bgImgOpacityDefault=75&bgTextureDefault=glass&bgColorDefault=e6e6e6&iconColorContent=222222&fcContent=222222&borderColorContent=aaaaaa&bgImgOpacityContent=75&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=222222&fcHeader=222222&borderColorHeader=aaaaaa&bgImgOpacityHeader=75&bgTextureHeader=highlight_soft&bgColorHeader=cccccc&cornerRadius=4px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif
pixelmatrixdesign.com/uniform/http://pixelmatrixdesign.com/uniform/
pixelmatrixdesign.com/uniform/themer.htmlhttp://pixelmatrixdesign.com/uniform/themer.html
google.com-https://google.com
fsf.org-http://fsf.org/
Showing 1 to 10 of 50 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Showing 1 to 6 of 10 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.