Security Alert: Confirmed Malware
Medium Breaker
ID: dccgbfmnbbbaeehljeepffepbdeipjpp
Supported Languages
Extension Info & Metadata
Publisher Contextual Analysis
- Author
- Debaditya BanerjiView Profile
- Country
- IN
- MX records exist
- Yes
- Domain exists
- Yes
- Is disposable
- No
- Is role-based
- No
- Mailbox exists
- Yes
- Address
- Nandan Kanan, Rahara, Khardah Kolkata, West Bengal 700118 IN
JailBreak Medium Articles for Free!!! Unlock Medium Articles and Seamlessly access premium content on Medium without any barriers.
π Medium Breaker: Break Past Your Limitsπ Picture this β you stumble upon a captivating Medium article, you read and read and ---- a paywall blocks your path. It feels FRUSTRATING, we know. Fear not! Our Chrome extension gracefully steps in, unlocking premium content without a hitch. It's like having a backstage pass to the world of knowledge. So, why settle for limits when you can break free with Medium Breaker? Dive into a universe of unbounded stories and let your curiosity roam! What we currently offer: π Read Beyond Limits: Break free from paywalls and unlock the full potential of Medium articles at the click of a button! π« No Medium Login Required: Break any article without the need to log in to Medium. Unlock the world of knowledge hassle-free! π Seamless UI Experience: Read the articles without compromising any UI features. We value that medium's user Interface is attractive, settling for any other UI will hinder the reading experience. So you get the article in the exact environment of medium. π Global Access: Connect with content from around the world without limitations. Embrace a borderless reading experience. Ready to embark on a limitless reading adventure? Install FreeFlow Medium Access now and let the words flow freely! ππ How it works? Just 3 steps: Install, Find and BREAK!!! Install: Install the extension from chrome Web Store. Find: Find any medium articles with member-only tag and paywalled. Break: Right Click on any part of the page, click "Break this article" and BOOM your article is broken out of paywall! Don't believe? Why not see for yourself? (**Some articles, especially those published just a few hours ago or the day before, may not be breakable immediately. In such cases, wait for a few hours and then retry.)
The extension's primary function is paywall circumvention: it hijacks the user's active tab and redirects it to Google's web cache of the current Medium URL, then dynamically installs a declarativeNetRequest rule that blocks Medium's CDN JavaScript bundle (`cdn-client.medium.com/lite/static/js/main*`). Blocking this script prevents Medium's paywall enforcement code from executing on the cached page. This is deliberate, unauthorized content access in violation of Medium's Terms of Service.
chrome.contextMenus.onClicked.addListener(async function(info, tab) { if (info.menuItemId === "myContextMenuOption" && !(tab.url.includes("webcache.googleusercontent.com"))) { let url = "http://webcache.googleusercontent.com/search?q=cache:" + tab.url; chrome.tabs.update({ url: url }); let id = Math.floor(generateUniqueId()); console.log(id) await chrome.declarativeNetRequest.updateDynamicRules({ addRules: [{ id: id, priority: 1, action: { type: "block" }, condition: { urlFilter: "https://cdn-client.medium.com/lite/static/js/main*", }, }, ], }); ids.push(id); }});The content script is declared with `run_at: document_start` and `all_frames: true`, which grants it execution access at the very earliest point in page lifecycle, before any DOM is ready, across every frame and iframe within the entire webcache.googleusercontent.com origin. This broader-than-necessary access grants the extension a privileged position to intercept and manipulate content in all subframes of any Google Cache page, not just the targeted Medium articles.
{ "content_scripts": [ { "matches": [ "*://webcache.googleusercontent.com/*" ], "js": [ "inject.js" ], "css": [ "inject.css" ], "run_at": "document_start", "all_frames": true } ]}The content script uses a highly specific CSS selector to locate Medium's logo SVG element inside the cached page and replaces its path data with a very long, custom SVG path. This DOM manipulation is entirely unrelated to the extension's stated paywall-bypass purpose and serves no obvious functional need. Replacing visual elements like logos on injected pages is a technique used in phishing and UI spoofing attacks to make a page appear different from what users expect; here it obscures that the content is served from Google's cache.
const logoPath = document.querySelector( '#root>div>div.l.c>div>div:nth-child(2)>div>a>svg>path');if (logoPath) { logoPath.setAttribute( 'd', 'M 594.79 308.2 c 0 163.76 -131.85 296.52 -194.79 134.8 S 5.8 472 29 330 S 137.65 11.69 300.29 11.69 s 294.5 132.75 294.5 296.51 M 917.86 308.2 c 0 154.16 -65.93 279.12...' );}The extension listens to every tab update event (`chrome.tabs.onUpdated`) across all tabs in order to manage its dynamic network blocking rules. This listener fires on every navigation across all browser tabs, not just Medium tabs, giving the extension persistent visibility into the user's tab activity and URL changes. While the logic only removes rules when not on a webcache URL, the broad event listener scope is wider than necessary and constitutes ongoing unauthorized monitoring of tab navigation.
chrome.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => { if (!(tab.url.includes("webcache.googleusercontent"))) { let rules = await chrome.declarativeNetRequest.getDynamicRules(); let rulesArr = [] for (let i of rules) { rulesArr.push(i.id) } await chrome.declarativeNetRequest.updateDynamicRules({ removeRuleIds: rulesArr, }); }});The injected stylesheet loads a Google Font from an external origin (`fonts.googleapis.com`) every time the content script activates on a Google Cache page. This causes the browser to send a request to Google's font servers that includes the Referer header with the cached page URL, allowing Google to observe the user's browsing of cached Medium content. While Google Fonts is common on public websites, loading it from a content script injected on a third-party domain is an unnecessary external dependency that constitutes passive tracking.
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap');By severity
Versions scanned
Showing 1 of 1 scanned version with more than one unique finding. Counts are unique findings that include each version.
| Extension Version | Code Review Findings |
|---|---|
| 1.0 | 5 |
Files with findings
4 distinct paths β top paths by unique finding count:
- background.js2
- inject.css1
- inject.js1
- manifest.json1
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.
Gain full insight into all external connections.
Upgrade for full visibility.
Browse and explore files within this extension package
Gain full insight into all external connections.
Upgrade for full visibility.