Medium Breaker

ID: dccgbfmnbbbaeehljeepffepbdeipjpp

Could be malicious

Supported Languages

πŸ‡ΊπŸ‡ΈUS English

Extension Info & Metadata

Status
Removed
Version
1.0
Size
0.13 MB
Rating
4.7/5
Reviews
35
Users
5,000
Type
Extension
Updated
Jan 1, 2024
Category
Productivity Education
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
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
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
5,000

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.)

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:β€’ 10% increase: Early script execution enables pre-emptive content manipulation
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.
activeTab
Permission
Medium
This permission grants temporary access to the current tab. Rated Medium because it can access current page content when invoked, though limited to user-initiated actions.
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.

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.

background.js (Line 41)
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.

manifest.json (Line 23)
{  "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.

inject.js (Line 42)
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.

background.js (Line 28)
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.

inject.css (Line 1)
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap');

By severity

Critical0
High1
Medium3
Low1

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
1.05

Files with findings

4 distinct paths β€” top paths by unique finding count:

  • background.js2
  • inject.css1
  • inject.js1
  • manifest.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Other
high
background.js (line 41)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…
2Code Injection
medium
inject.js (line 42)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 unrelat…
3Privilege Escalation
medium
manifest.json (line 23)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 ifram…
4Unauthorized Data Collection
medium
background.js (line 28)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 jus…
5Tracking
low
inject.css (line 1)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 s…
URLs
5
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.

webcache.googleusercontent.com/searchhttp://webcache.googleusercontent.com/search?q=cache:
cdn-client.medium.com/lite/static/js/main*https://cdn-client.medium.com/lite/static/js/main*
fonts.googleapis.com/css2https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
https:-https://imagemagick.orgοΏ½οΏ½οΏ½tEXtThumb::Document::Pages1οΏ½οΏ½οΏ½/tEXtThumb::Image::Height192@

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
1.0
Latest
0.13 MB
Malicious
5
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.