Adblock Dragon

ID: mcmdolplhpeopapnlpbjceoofpgmkahc

Could be malicious

Supported Languages

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

Extension Info & Metadata

Status
Removed
Version
1.6.6
Size
1.04 MB
Rating
4.6/5
Reviews
16
Users
1,996,422
Type
Extension
Updated
Oct 9, 2022
Category
7_productivity
Price
Free
Featured
Yes
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
jeannineescudero9374View 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
1,996,422

Fierce and relentless adblock extension. Best in class protection from ads.

Adblock dragon - Fierce and relentless AdBlock extension. The best in class protection from ads 😎 Features: 🔥 Protects your privacy by blocking tracking systems 🔥 Blocks video ads, banners, and text ads 🔥 Speeds up page loading With this extension, your online time will be a lot more productive!

Item
Type
Severity
Description
privacy
Permission
Critical
This permission allows modification of Chrome's privacy settings. Rated Critical because it can disable security features, modify network configurations, and compromise browser security settings.
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.
<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.
Dangerous Permission Combination
Risk Factor
Critical
This extension can intercept, modify, and block web requests in real-time.
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.
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:• 10% increase: Early script execution enables pre-emptive content manipulation• 15% increase: Older manifest version lacks modern security controls• 10% increase: About:blank access enables potential sandbox escape vectors
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.
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.
About:blank Access
Risk Factor
Medium
This extension can run content scripts in about:blank pages.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2

On startup, the extension downloads an external whitelist from a remote server and merges it into the local whitelist. Because the URL uses plain HTTP, a network attacker could tamper with this response, and the server can remotely disable blocking on arbitrary domains without shipping a new extension update.

js/background.js (Line 2926)
async function mr() {    var qL, QV;    const hH = qn.browser.runtime.getURL("adguard/filters.json"),      Hl = await fetch(hH),      XF = undefined,      VW = (await Hl.json())      .filters.filter((qL => !qL.tags.includes(45) && 10 !== qL.filterId))      .map((qL => qL.filterId)),      mr = await qn.browser.storage.local.get(["whitelist", "totalBlocked"]);    let gH = null !== (qL = mr.whitelist) && void 0 !== qL ? qL : [],      hD = null !== (QV = mr.totalBlocked) && void 0 !== QV ? QV : 0;    const tx = {};    try {      const qL = await fetch(        `http://base-filter.s3-website.us-east-2.amazonaws.com/whitelist/${chrome.runtime.id}/filter.txt`);      if (qL.ok) {        const QV = undefined,          hH = (await qL.text())          .split("\n")          .map((qL => qL.trim()))          .filter((qL => qL.length > 0));        for (const qL of hH) gH.includes(qL) || gH.push(qL)      }    } catch (qL) {}

The content script hooks frame accessors and uses `eval` to inject code into page and iframe execution contexts. This is a powerful code-injection pattern that runs on every matched site at `document_start`, increasing the impact of any logic flaw or abuse in the injected payload.

js/content.js (Line 697)
function mr(hH) {  try {    if (hH && !VW(hH)) {      ol(hH), hH[qL] = Hl;      const XF = `'${qL}', ${QV}, true`;      hH.eval(`(${qn()})(${XF});`), delete hH[qL]    }  } catch (qL) {}}function gH(qL) {  const QV = Object.getOwnPropertyDescriptor(qL.prototype, "contentWindow"),    hH = Object.getOwnPropertyDescriptor(qL.prototype, "contentDocument");  if (!QV) return;  const Hl = Function.prototype.call.bind(QV.get),    qn = Function.prototype.call.bind(hH.get);  QV.get = function() {    const qL = Hl(this);    return mr(qL), qL  }, hH.get = function() {    return mr(Hl(this)), qn(this)  }, Object.defineProperty(qL.prototype, "contentWindow", QV), Object.defineProperty(qL.prototype,    "contentDocument", hH)

The extension generates and persists a unique client ID in `chrome.storage.local`, then sends it to Google Analytics. This creates a durable identifier for the extension installation and enables usage tracking without any visible consent flow in the reviewed code.

js/background.js (Line 2876)
const Hl = qL("uuid");async function qn() {  const qL = await new Promise((qL => {    chrome.storage.local.get(["cid"], (QV => {      qL(QV)    }))  }));  let {    cid: QV  } = qL;  return QV || (QV = (0, Hl.v4)(), chrome.storage.local.set({    cid: QV  })), QV}async function XF(qL) {    const QV = undefined,      hH = {        v: "1",        tid: qL,        cid: await qn(),        t: "pageview",        dp: "/background",        dt: "background",        dh: `chrome-extension://${chrome.runtime.id}`      },      Hl = `https://www.google-analytics.com/collect?${new URLSearchParams(hH).toString()}`;    await fetch(Hl, {      method: "POST",      body: ""    })

This handler records per-request context and explicitly parses both outbound `Cookie` headers and inbound `Set-Cookie` headers. For an extension with `<all_urls>` and `webRequest` access, this gives visibility into authentication/session cookies across arbitrary sites, which is a sensitive collection point even though direct exfiltration was not observed in this snippet.

js/background.js (Line 52148)
return qL.prototype.onBeforeRequest = function(qL, QV) {    this.requestContextStorage.set(qL.requestId, {      rules: QV,      cookies: [],      url: qL.url,      tabId: qL.tabId    })  }, qL.prototype.onBeforeSendHeaders = function(qL) {    if (qL.requestHeaders) {      var QV = this.requestContextStorage.get(qL.requestId);      if (QV) {        var hH = dC(qL.requestHeaders, "Cookie");        if (hH && hH.value) {          var Hl = Vo.parseCookies(hH.value, QV.url);          0 !== Hl.length && (QV.cookies = Hl)        }      }    }  }, qL.prototype.onHeadersReceived = function(qL) {    return XF(this, void 0, void 0, (function() {            var hH, Hl, qn, XF, VW, mr, gH, hD;            return ol(this, (function(ol) {                    switch (ol.label) {                      case 0:                        if (!(hH = this.requestContextStorage.get(qL.requestId))) return [                          2                        ];                        if (qL.responseHeaders) {                          for (Hl = Vo.parseSetCookieHeaders(qL.responseHeaders, hH.url),                            qn = Hl.filter((function(qL) {

By severity

Critical1
High10
Medium6
Low0

Versions scanned

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

Extension VersionCode Review Findings
1.6.64
1.6.58
1.6.45

Files with findings

2 distinct paths — top paths by unique finding count:

  • js/background.js14
  • js/content.js3
S.No.
Category
Severity
File
Summary
Found in Version
1Obfuscation
critical
js/background.js (line 4)This scriptlet reads a value from the `window.ysmm` property (associated with the Adfly ad network), applies a custom XOR-based character rearrangement to deobfuscate it, then base64-decodes the result via `atob()` an…
2Code Injection
high
js/content.js (line 697)The content script hooks frame accessors and uses `eval` to inject code into page and iframe execution contexts. This is a powerful code-injection pattern that runs on every matched site at `document_start`, increasin…
3Credential Theft
high
js/background.js (line 4)A scriptlet reads the full `document.cookie` string on every visited page to identify and delete cookies matching a regex pattern, by writing expired cookie headers with multiple domain/path prefix combinations. While…
4Data Exfiltration
high
js/background.js (line 4)The `sendUrlReport` function POSTs the full URL of pages the user visits to a remote `reportUrl` endpoint via XMLHttpRequest, along with a message type and optional comment. This directly exfiltrates specific browsing…
5Other
high
js/background.js (line 2926)On startup, the extension downloads an external whitelist from a remote server and merges it into the local whitelist. Because the URL uses plain HTTP, a network attacker could tamper with this response, and the serve…
6Tracking
high
js/background.js (line 4)The extension generates a persistent UUID client ID stored in chrome.storage.local and sends it along with the extension's runtime ID to Google Analytics under tracking ID UA-212388634-1 on every background page load.…
7Tracking
high
js/background.js (line 4)The extension generates a persistent UUID ('cid') stored in chrome.storage.local on first run and sends it to Google Analytics (property UA-212388634-1) via a POST request on every background page load. The payload in…
8Unauthorized Data Collection
high
js/background.js (line 4)The analytics module is explicitly invoked with tracking ID UA-212388634-1 immediately when the background service worker starts. This ID does not correspond to any known AdGuard/AdTidy Google Analytics property and a…
9Unauthorized Data Collection
high
js/background.js (line 4)The CB() function monkey-patches both `window.eval` and `window.Function` in the page context with intercepting wrappers that invoke an external callback (hF) logging every invocation before delegating to the original…
10Unauthorized Data Collection
high
js/background.js (line 4)The extension calls its analytics tracker with the Google Analytics property UA-212388634-1 immediately on startup. The extension presents itself as 'Adblock Dragon' but embeds AdGuard's entire filter engine (adblocke…
11Unauthorized Data Collection
high
js/background.js (line 4)A hardcoded API key ('4DDBE80A3DA94D819A00523252FB6380') is embedded and appended to all requests to chrome.adtidy.org including filter update and rule-stats endpoints. The extension also POSTs filter hit statistics (…
12Code Injection
medium
js/content.js (line 1)The content script hooks the contentWindow and contentDocument property getters on HTMLIFrameElement prototypes to intercept every iframe access, then calls eval() on each new iframe's window object to inject the page…
13Network Interception
medium
js/background.js (line 4)A blocking `webRequest.onBeforeRequest` listener is registered against extension-internal URLs that rewrites request query strings with a secret token, canceling unauthorized accesses. While this is nominally a resour…
14Tracking
medium
js/background.js (line 2876)The extension generates and persists a unique client ID in `chrome.storage.local`, then sends it to Google Analytics. This creates a durable identifier for the extension installation and enables usage tracking without…
15Unauthorized Data Collection
medium
js/background.js (line 52148)This handler records per-request context and explicitly parses both outbound `Cookie` headers and inbound `Set-Cookie` headers. For an extension with `<all_urls>` and `webRequest` access, this gives visibility into au…
16Unauthorized Data Collection
medium
js/background.js (line 4)The `sendHitStats` function POSTs filter rule hit statistics — including browser fingerprint, extension version, and which filter list rules triggered per domain — to a remote `ruleStatsUrl` endpoint. Which rules fire…
17Unauthorized Data Collection
medium
js/content.js (line 1)The content script, injected into every page including about:blank frames at document_start, polls document.cookie every 1,000ms across all sites and fires onRuleAppliedCallback with the full cookie name, value, domai…
URLs
262
IPv4
89
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.

easylist.to-https://easylist.to/
easylist.to/easylist/easylist.txthttps://easylist.to/easylist/easylist.txt
github.com/ABPindo/indonesianadblockruleshttps://github.com/ABPindo/indonesianadblockrules
raw.githubusercontent.com/ABPindo/indonesianadblockrules/master/subscriptions/abpindo.txthttps://raw.githubusercontent.com/ABPindo/indonesianadblockrules/master/subscriptions/abpindo.txt
stanev.org/abp/https://stanev.org/abp/
stanev.org/abp/adblock_bg.txthttps://stanev.org/abp/adblock_bg.txt
abpchina.org/forum/http://abpchina.org/forum/
easylist-downloads.adblockplus.org/easylistchina.txthttps://easylist-downloads.adblockplus.org/easylistchina.txt
github.com/tomasko126/easylistczechandslovakhttps://github.com/tomasko126/easylistczechandslovak
raw.githubusercontent.com/tomasko126/easylistczechandslovak/master/filters.txthttps://raw.githubusercontent.com/tomasko126/easylistczechandslovak/master/filters.txt
Showing 1 to 10 of 270 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

2.0.80.31
IPv4
-
2.0.4.39
IPv4
-
2.0.0.32
IPv4
-
2.0.97.73
IPv4
-
2.0.2.4
IPv4
-
2.0.97.70
IPv4
-
2.0.6.79
IPv4
-
2.0.3.81
IPv4
-
2.0.97.72
IPv4
-
2.0.1.69
IPv4
-
2.0.0.47
IPv4
-
2.0.97.71
IPv4
-
2.0.0.80
IPv4
-
2.0.82.85
IPv4
-
2.0.0.7
IPv4
-
2.0.9.4
IPv4
-
2.0.0.77
IPv4
-
2.0.80.20
IPv4
-
2.0.80.23
IPv4
-
1.0.8.15
IPv4
-
2.0.0.34
IPv4
-
2.0.1.48
IPv4
-
2.0.8.80
IPv4
-
2.0.1.19
IPv4
-
2.0.80.87
IPv4
-
2.0.96.96
IPv4
-
2.0.13.16
IPv4
-
2.0.4.53
IPv4
-
2.0.14.13
IPv4
-
2.0.4.61
IPv4
-
2.0.3.40
IPv4
-
2.0.22.7
IPv4
-
2.0.4.38
IPv4
-
2.0.4.34
IPv4
-
2.0.0.25
IPv4
-
2.0.0.28
IPv4
-
2.0.4.32
IPv4
-
2.0.1.6
IPv4
-
2.0.2.1
IPv4
-
2.0.0.27
IPv4
-
2.0.21.1
IPv4
-
2.0.6.40
IPv4
-
2.0.0.57
IPv4
-
2.0.1.9
IPv4
-
2.0.0.76
IPv4
-
1.0.22.12
IPv4
-
2.0.3.47
IPv4
-
2.0.2.30
IPv4
-
2.0.0.26
IPv4
-
2.0.83.34
IPv4
-
1.0.2.22
IPv4
-
2.0.12.19
IPv4
-
2.0.7.82
IPv4
-
2.0.1.35
IPv4
-
2.0.93.78
IPv4
-
2.0.2.60
IPv4
-
2.0.5.74
IPv4
-
2.0.1.92
IPv4
-
2.0.1.49
IPv4
-
2.0.24.70
IPv4
-
2.0.30.27
IPv4
-
2.1.0.24
IPv4
-
2.0.26.53
IPv4
-
2.0.30.5
IPv4
-
2.0.1.31
IPv4
-
2.0.61.29
IPv4
-
2.0.39.66
IPv4
-
2.2.4.75
IPv4
-
2.0.31.69
IPv4
-
2.0.49.91
IPv4
-
2.0.0.93
IPv4
-
2.0.23.19
IPv4
-
2.0.13.44
IPv4
-
2.0.2.55
IPv4
-
2.0.11.70
IPv4
-
93.88.74.236
IPv4
-
46.30.46.35
IPv4
-
5.182.211.129
IPv4
-
109.163.231.44
IPv4
-
173.249.49.204
IPv4
-
217.16.188.246
IPv4
-
157.245.202.123
IPv4
-
93.115.24.210
IPv4
-
139.99.120.222
IPv4
-
185.224.130.67
IPv4
-
103.194.171.75
IPv4
-
194.163.183.129
IPv4
-
1.2.3.4
IPv4
-
0.0.0.0
IPv4
-
1:2:3:4:5:6:7:8
IPv6
-
Showing 1 to 90 of 90 rows
Rows per page:
Showing 1 to 3 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.