mobile browser emulator

ID: lbofcampnkjmiomohpbaihdcbjhbfepf

Could be malicious

Extension Info & Metadata

Status
Removed
Version
1.3.4
Size
0.03 MB
Rating
3.7/5
Reviews
319
Users
200,489
Type
Extension
Updated
Nov 30, 2018
Category
11_web_development
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
tools.diorama.chView Profile
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
200,489

Test mobile and responsive web pages on your desktop

Select the most common mobile screen resolutions with a single mouse click. The page of the active tab will open in a separate window. Main features: - works with local files too - selected screen resolutions with a click - open all defined screen resolutions - pixel correct window size *) - auto scaling of windows to fit screen - same scrollbars as in mobile devices - use of a mobile user agent - option to show real screen sizes *) all Windows versions, Linux and Mac OS Click on 'help' for instructions on how to use

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.
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.
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.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2

The extension enumerates and permanently deletes ALL cookies for the target domain, including session tokens, authentication cookies, and stored credentials. This function is called both when opening and closing a mobile emulation window (lines 77 and 124), meaning the user's authenticated session on the target site is silently destroyed twice per use without any explicit warning about data loss.

background.js (Line 220)
function remove_allCookies(dmn) {  chrome.cookies.getAll({    url: dmn  }, function(cookies) {    var path;    for (var i = 0; i < cookies.length; i++) {      path = "http" + (cookies[i].secure ? "s" : "") + "://" + cookies[i].domain + cookies[i].path;      chrome.cookies.remove({        url: path,        name: cookies[i].name      });    }  });}

The extension registers a blocking webRequest listener on all URLs to intercept and modify outgoing HTTP request headers for every request made by the emulated tab. In addition to replacing the User-Agent, it silently appends a `Cache-Control: no-cache` header to all requests. The use of `webRequestBlocking` with `<all_urls>` gives full read/write access to all HTTP request headers sent by the tab, including authorization tokens and cookies transmitted in headers.

background.js (Line 201)
chrome.webRequest.onBeforeSendHeaders.addListener(function(details) {  var rh = details.requestHeaders;  blockingResponse = {};  for (var i = 0; i < rh.length; i++) {    if (rh[i].name == "User-Agent") {      rh[i].value = uA[dev];      break;    }  }  var nc = new Object();  nc.name = "Cache-Control";  nc.value = "no-cache";  rh.push(nc);  blockingResponse.requestHeaders = rh;  return blockingResponse;}, {  urls: ["<all_urls>"],  tabId: t}, ["requestHeaders", "blocking"]);

This script is injected into every emulated page and uses the deprecated `navigator.__defineGetter__` API to permanently override the page's native `navigator.userAgent` property. The injected script text is constructed by concatenating the `nua` variable (set by a prior executeScript call in background.js line 99), creating an indirect code injection chain. The use of `setTimeout("get_head()",5)` passes a string to setTimeout, which is equivalent to eval and executes arbitrary code as a string.

ua.js (Line 1)
var el = document.createElement("script");el.type = "text/javascript";el.text = "navigator.__defineGetter__(\"userAgent\",function(){return \"" + nua + "\"})";get_head();function get_head() {  var tag = document.getElementsByTagName("head")[0];  if (!tag) setTimeout("get_head()", 5);  else tag.appendChild(el);}

The extension injects multiple scripts and CSS into all pages the user navigates to inside emulation windows using `document_start` timing (before the page loads). The injected code strings `"var nua='"+mobua+"'"` and `"var info='"+info+"'"` use string concatenation rather than safe parameter passing — if `mobua` or `info` contained a single quote or semicolon, arbitrary code could execute in the page context. This pattern of injecting globally-scoped variables into all pages is a classic code injection risk.

background.js (Line 99)
chrome.tabs.executeScript(t, {  runAt: start,  code: "var nua='" + mobua + "'"});chrome.tabs.executeScript(t, {  runAt: start,  file: "ua.js"});if (request.mbeBars) {  chrome.tabs.insertCSS(t, {    runAt: end,    file: "bars.css"  });  chrome.tabs.executeScript(t, {    runAt: end,    file: "bars.js"  });  if (request.mbeBars) chrome.tabs.executeScript(t, {    runAt: "document_idle",    code: "show_bars(" + param[2] + ")"  });}chrome.tabs.insertCSS(t, {  runAt: start,  file: "screen.css"});chrome.tabs.executeScript(t, {  runAt: start,  code: "var info='" + info + "'"});chrome.tabs.executeScript(t, {  runAt: end,  file: "screen.js"});

The extension loads an external page (`http://tools.diorama.ch/mbe_block.html`) over unencrypted HTTP when detecting certain streaming service URLs in the active tab. Loading external content over plain HTTP allows a network-level attacker (MITM) to inject arbitrary HTML/JavaScript into the popup shown to the user. The hardcoded blocklist targeting specific high-value streaming domains (Netflix, Spotify) is also suspicious — this pattern is sometimes used to avoid security scrutiny from high-profile sites while still intercepting other traffic.

mbe.js (Line 186)
function check_blockedUrls(u) {  if (/netflix\.|spotify\.|sonyentertainmentnetwork\.|blim\./.test(u)) {    urlBlock = true;    chrome.windows.create({        url: "http://tools.diorama.ch/mbe_block.html",        type: 'popup',        width: 460,        height: 285,        top: 100,        left: (screen.availWidth - 460) / 2,        focused: focus      },      function() {}    )  } else urlBlock = false;}

The extension injects CSS directly into the user's original source tab (the page they were browsing) to visually dim it, and simultaneously deletes all cookies for that domain. While the opacity change is cosmetic, the extension is modifying content on any page the user visits by injecting CSS without clear user consent for the content modification aspect. Combined with the cookie deletion occurring on both window open and close, the user's authenticated session state is destroyed on the pages they are actively visiting.

background.js (Line 74)
if (tabOpen == 0) {  srcTab = request.mbeTab.id;  chrome.tabs.insertCSS(srcTab, {    code: "body{opacity:0.2}"  });  remove_allCookies(url);}...if (tabOpen == 0) {  chrome.tabs.insertCSS(srcTab, {    code: "body{opacity:1}"  });  remove_allCookies(url);  clearTab = false;}

By severity

Critical0
High1
Medium4
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.3.46

Files with findings

3 distinct paths — top paths by unique finding count:

  • background.js4
  • mbe.js1
  • ua.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Unauthorized Data Collection
high
background.js (line 220)The extension enumerates and permanently deletes ALL cookies for the target domain, including session tokens, authentication cookies, and stored credentials. This function is called both when opening and closing a mob…
2Code Injection
medium
ua.js (line 1)This script is injected into every emulated page and uses the deprecated `navigator.__defineGetter__` API to permanently override the page's native `navigator.userAgent` property. The injected script text is construct…
3Code Injection
medium
background.js (line 99)The extension injects multiple scripts and CSS into all pages the user navigates to inside emulation windows using `document_start` timing (before the page loads). The injected code strings `"var nua='"+mobua+"'"` and…
4Network Interception
medium
background.js (line 201)The extension registers a blocking webRequest listener on all URLs to intercept and modify outgoing HTTP request headers for every request made by the emulated tab. In addition to replacing the User-Agent, it silently…
5Remote Code Loading
medium
mbe.js (line 186)The extension loads an external page (`http://tools.diorama.ch/mbe_block.html`) over unencrypted HTTP when detecting certain streaming service URLs in the active tab. Loading external content over plain HTTP allows a …
6Code Injection
low
background.js (line 74)The extension injects CSS directly into the user's original source tab (the page they were browsing) to visually dim it, and simultaneously deletes all cookies for that domain. While the opacity change is cosmetic, th…
URLs
6
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.

tools.diorama.ch/mbe.htmlhttp://tools.diorama.ch/mbe.html
tools.diorama.ch/mbe_de.htmlhttp://tools.diorama.ch/mbe_de.html
tools.diorama.ch/mbe_test.htmlhttp://tools.diorama.ch/mbe_test.html
tools.diorama.ch/mbe_en.htmlhttp://tools.diorama.ch/mbe_en.html
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
tools.diorama.ch/mbe_block.htmlhttp://tools.diorama.ch/mbe_block.html

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
1.3.4
Latest
0.03 MB
Malicious
6
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.