SMSfromBrowser

ID: mfgpancdbihmofnapdphhffdcfjkoljc

Could be malicious

Supported Languages

🇧🇷Brazilian Portuguese
🇺🇸English
🇫🇷French
🇩🇪German
🇮🇹Italian
🇯🇵Japanese
🇲🇽Latin American Spanish
🇵🇹Portuguese
🇪🇸Spanish

Extension Info & Metadata

Status
Removed
Version
13.958.19.9344
Size
0.39 MB
Rating
2.4/5
Reviews
12
Users
216,171
Type
Extension
Updated
Apr 14, 2021
Category
1_communication
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
http://smsfrombrowser.comView 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
216,171

Send SMS and text messages directly from your computer with this Chrome New Tab Extension.

Get SMSfromBrowser, access PC to mobile messaging and communicate with your friends, plus update your new tab page search to MyWay.com. Comes with daily content to show you news, weather and more in a new Chrome window! Free services accessed from SMSfromBrowser may require payment to access premium features. By installing this extension, you agree to the End User License Agreement and Privacy Policy (https://eula.askapplications.com/eula/) This new tab extension is a product of Ask Applications, Inc. Permissions Requested : "Read and change your data on a number of websites" For our product to work, we require access to the websites we own and manage. "Replace the page you see when opening a new tab" This allows us to show you our product - new tab page with free web search. "Read your browsing history" This allows us to tailor product specific content or offers towards relevant information. "Display notifications" This allows us the option to send you updates or additional product offers once you’ve already enjoyed the free product. "Manage your apps, extensions, and themes" This allows us to help you disable or remove this product and also understand whether we are able to provide the best experience. Release Log: 13.962 : Optimizes the sync of this extension between Chrome profiles.

Item
Type
Severity
Description
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:• 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.
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.
management
Permission
Medium
This permission manages other installed extensions. Rated Medium because it can enable/disable other extensions and modify their settings, with changes being visible to users.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2
alarms
Permission
Low
This permission schedules periodic tasks. Rated Low because it can only trigger events at specified times without access to sensitive data.
notifications
Permission
Low
This permission displays system notifications. Rated Low because it can only show user-visible notifications without accessing system data.
*://anx.tb.ask.com/*
Permission
Unknown
No classification available for this permission.
*://live.tb.ask.com/*
Permission
Unknown
No classification available for this permission.
*://*.smsfrombrowser.com/*
Permission
Unknown
No classification available for this permission.
*://hp.myway.com/*
Permission
Unknown
No classification available for this permission.

This code executes arbitrary JavaScript stored in `_this.remoteScript` directly into tabs at `document_start`. In the same file, `_this.remoteScript` is populated from `extensionConfig.buildVars.babRemoteScriptUrl`, which creates a dormant remote-code-loading path where server-side content can become executable extension-delivered code.

js/babTypeInjectionScript.js (Line 52)
this.initRemoteScript(extensionConfig);return function(tab) {    ask.apps.ul.fireInfoEvent(extensionConfig.buildVars.unifiedLoggingUrl, {        message: "browser-action-clicked",        topic: "browser-action"      }, extensionConfig, "BAB")      .catch(Logger.log);    if (_this.handleSubsequentBabClicks(tab, getConnection))      return;    BabClickHandler.getInjectionDetails(tab, extensionConfig.buildVars.newTabURL)      .then(function(injectDetailsArr) {          var remoteScriptInjectionDetails = {            code: _this.remoteScript,            runAt: "document_start"          };          if (injectDetailsArr.length && injectDetailsArr[0].frameId) {            remoteScriptInjectionDetails.frameId = injectDetailsArr[0].frameId;          }          return Promise.all([            Util.injectScriptsSequentially(tab.id, injectDetailsArr, extensionConfig, {              message: "failed-inject-babContentScript lastError",              topic: "browser-action"            }),            new Promise(function(resolve) {              chrome.tabs.executeScript(tab.id, remoteScriptInjectionDetails, resolve);            })          ]);

This content script can dump every key from `window.localStorage` and send the values back to the extension over a runtime port. Because the manifest injects this script into `https://download.smsfrombrowser.com/blank.jhtml`, it provides a mechanism for the extension to silently harvest data stored on that remote domain.

js/localStorageContentScript.js (Line 7)
var portNamePrefix = "localStorageContentScript";var channel;var commands = {  getLocalStorage: function(data) {    var storage = window.localStorage;    var keys = data && data.keys && data.keys.length ? data.keys : Object.keys(storage);    return Promise.resolve(keys.reduce(function(p, key) {      p[key] = storage.getItem(key);      return p;    }, {}));  }};function init() {  var port = chrome.runtime.connect({    name: Util.generateGuid2(portNamePrefix + "-" + chrome.runtime.id + "-")  });  channel = {    id: port.name,    port: port,    callbacks: new Map()  };  port.onMessage.addListener(onConnectMessage);}ContentScript.init = init;

This injected page script exposes extension identifiers and install metadata to page JavaScript via a `GET_INFO` message flow, and it also plants cookies that mark the extension as installed. That creates a site-visible tracking channel on `.smsfrombrowser.com` pages, allowing the website to detect and correlate installed-extension state with a unique toolbar ID.

js/extensionDetect.js (Line 102)
function getCommands(configData) {  return {    GET_INFO: function(reply) {      reply({        toolbarId: configData.state.toolbarData.toolbarId,        partnerId: configData.state.toolbarData.partnerId,        partnerSubId: configData.state.toolbarData.partnerSubId,        installDate: configData.state.toolbarData.installDate,        toolbarVersion: configData.buildVars.version,        toolbarBuildDate: configData.buildVars.buildDate,      });    }  };}function setInstalledCookies(toolbarId) {  var hourFromNow = new Date(Date.now() + (1 * 60 * 60 * 1000))    .toUTCString();  document.cookie = "mindsparktb_" + toolbarId + "=true; expires=" + hourFromNow + "; path=/";  document.cookie = "mindsparktbsupport_" + toolbarId + "=true; expires=" + hourFromNow + "; path=/";}

The extension builds telemetry payloads containing persistent identifiers such as `toolbarId`, `partnerId`, `partnerSubId`, `coid`, and `userSegment`. Elsewhere in the same file, `fireEvent()` sends this object with `AJAX.get()` to remote logging URLs, making this a structured tracking/exfiltration mechanism rather than incidental debugging.

js/ul.js (Line 7)
function createStandardData(eventName, config) {  return {    anxa: "CAPNative",    anxv: config.buildVars.version,    anxe: eventName,    anxt: config.state.toolbarData.toolbarId,    anxtv: config.buildVars.version,    anxp: config.state.toolbarData.partnerId,    anxsi: config.state.toolbarData.partnerSubId,    anxd: config.buildVars.buildDate,    f: "00400000",    anxr: +new Date(),    coid: config.state.toolbarData.coId || config.buildVars.coId,    userSegment: config.state.toolbarData.userSegment  };}

This code enumerates other installed extensions with `chrome.management.getAll()` and records their IDs, versions, and enabled state when they have monitored permissions such as `newTabPageOverride`. Inventorying competing extensions is a common adware/toolbar behavior and is difficult to justify for the advertised SMS functionality.

js/watchExtensionsHandler.js (Line 27)
chrome.management.getAll(function(extensionInfos) {      var watchExtensions = getEmptyWatchExtensionsObject();      extensionInfos        .filter(function(eInfo) {          return eInfo.type === "extension" &&            eInfo.id !== chrome.runtime.id &&            Util.checkOverlap(eInfo.permissions, WatchExtensionsHandler.permissionsToMonitor);        })        .forEach(function(eInfo) {          WatchExtensionsHandler.permissionsToMonitor            .filter(function(monitorPermission) {              return ~eInfo.permissions.indexOf(monitorPermission);            })            .forEach(function(permission) {              watchExtensions[permission].stackOfExtensions.push({                id: eInfo.id,                version: eInfo.version,                enabled: eInfo.enabled              });            });        });      Object.keys(watchExtensions)

By severity

Critical2
High13
Medium2
Low0

Versions scanned

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

Extension VersionCode Review Findings
13.958.19.4026612
13.958.19.93445

Files with findings

13 distinct paths — top paths by unique finding count:

  • js/extensionDetect.js2
  • js/localStorageContentScript.js2
  • js/ul.js2
  • js/watchExtensionsHandler.js2
  • config/config.json1
  • js/B2BService.js1
  • js/babRemoteConfigProcessor.js1
  • js/babTypeInjectionScript.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Remote Code Loading
critical
js/babRemoteConfigProcessor.js (line 14)After fetching a remote config from a server-controlled URL (`babConfigUrl`), the extension creates a hidden `<iframe>` in the background page whose `src` is set to `babConfig.proxyUrl` — a URL defined entirely by the…
13.958.19.40266
2Tracking
critical
js/extensionDetectWithHash.js (line 55)On every completed navigation, the extension scans ALL frames of ALL tabs using `chrome.webNavigation.getAllFrames` looking for URL hash parameters matching its tracking pattern (`pp=`). When found, it fires a `Toolba…
13.958.19.40266
3Code Injection
high
js/background.js (line 479)The background script dynamically injects `extensionDetect.js` (at `document_start`) and `webTooltabAPIProxy.js` into any tab navigating to `*.smsfrombrowser.com`. These injections are not declared in the manifest und…
13.958.19.40266
4Data Exfiltration
high
js/extensionDetect.js (line 94)This content script, injected into `*.smsfrombrowser.com` pages, listens to `window.postMessage` events and responds to `GET_INFO` requests by exposing the user's internal toolbarId, partnerId, partnerSubId, and insta…
13.958.19.40266
5Other
high
js/dailyContentService.js (line 205)The DailyContentService is scheduled via Chrome alarms to fire every day at 2:00 AM and forcibly open a new browser window pointing to the extension's new-tab page (an ad-serving page at hp.myway.com). This is an adwa…
13.958.19.40266
6Remote Code Loading
high
js/babTypeInjectionScript.js (line 52)This code executes arbitrary JavaScript stored in `_this.remoteScript` directly into tabs at `document_start`. In the same file, `_this.remoteScript` is populated from `extensionConfig.buildVars.babRemoteScriptUrl`, w…
13.958.19.9344
7Tracking
high
js/ul.js (line 23)Every 6 hours (and at startup), the extension fires a `ToolbarActive` GET request to `https://live.tb.ask.com/tr.gif` containing: toolbarId (unique per-user UUID), partnerId, partnerSubId, buildDate, coId, userSegment…
13.958.19.40266
8Tracking
high
js/offerService.js (line 277)The OfferService assembles a rich browser fingerprint — OS, browser name and version, userAgent string, language, locale, navigator.platform, plus unique tracking IDs — and sends it via PUT request to a remotely-confi…
13.958.19.40266
9Tracking
high
js/B2BService.js (line 4)The B2BService fires a covert pixel beacon to `https://tbapi.search.ask.com/tb/analytics` every 8 hours using `new Image().src` (a tracking technique that bypasses normal request inspection), transmitting: unique tool…
13.958.19.40266
10Tracking
high
config/config.json (line 15)The config defines install pixel/conversion URL templates (dlp1/dlp2) that embed the user's partnerId, partnerSubId, coId, toolbarId, countryCode, and campaign data — fired immediately upon install. These are affiliat…
13.958.19.40266
11Tracking
high
js/extensionDetect.js (line 102)This injected page script exposes extension identifiers and install metadata to page JavaScript via a `GET_INFO` message flow, and it also plants cookies that mark the extension as installed. That creates a site-visib…
13.958.19.9344
12Unauthorized Data Collection
high
js/dlp.js (line 229)The extension calls `chrome.cookies.getAll({ domain: '.smsfrombrowser.com' })` to harvest all cookies from its domain and then serializes them to JSON. The collected data (partnerId, toolbarId, installDate, countryCod…
13.958.19.40266
13Unauthorized Data Collection
high
js/watchExtensionsHandler.js (line 1)The extension uses `chrome.management.getAll()` to enumerate all installed extensions, collecting their IDs, versions, and enabled state. It then registers persistent listeners for install, uninstall, enable, and disa…
13.958.19.40266
14Unauthorized Data Collection
high
js/localStorageContentScript.js (line 9)This content script is injected into `download.smsfrombrowser.com/blank.jhtml` and opens a messaging channel back to the background page. On command, it reads either specific keys or ALL keys from `window.localStorage…
13.958.19.40266
15Unauthorized Data Collection
high
js/localStorageContentScript.js (line 7)This content script can dump every key from `window.localStorage` and send the values back to the extension over a runtime port. Because the manifest injects this script into `https://download.smsfrombrowser.com/blank…
13.958.19.9344
16Tracking
medium
js/ul.js (line 7)The extension builds telemetry payloads containing persistent identifiers such as `toolbarId`, `partnerId`, `partnerSubId`, `coid`, and `userSegment`. Elsewhere in the same file, `fireEvent()` sends this object with `…
13.958.19.9344
17Unauthorized Data Collection
medium
js/watchExtensionsHandler.js (line 27)This code enumerates other installed extensions with `chrome.management.getAll()` and records their IDs, versions, and enabled state when they have monitored permissions such as `newTabPageOverride`. Inventorying comp…
13.958.19.9344
URLs
25
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.

download.smsfrombrowser.com/blank.jhtmlhttps://download.smsfrombrowser.com/blank.jhtml
live.tb.ask.com/tr.gifhttps://live.tb.ask.com/tr.gif
anx.tb.ask.com/anx.gifhttps://anx.tb.ask.com/anx.gif
download.smsfrombrowser.com/anemone.jhtmlhttps://download.smsfrombrowser.com/anemone.jhtml
{{hostname}}/install_pixels.jhtmlhttps://{{hostname}}/install_pixels.jhtml?partner={{partnerId}}&sub_id={{partnerSubId}}&coId={{coId}}&tbGuid={{toolbarId}}&s2={{s2}}&s3={{s3}}&s4={{s4}}&s5={{s5}}
{{hostname}}/conversion.htmlhttps://{{hostname}}/conversion.html?ref={{ref}}&cobrand={{cobrand}}&campaign={{campaign}}&track={{dlput}}&si={{partnerSubId}}&s2={{s2}}&s3={{s3}}&s4={{s4}}&s5={{s5}}&coId={{coId}}&country={{countryCode}}&otOptIn={{ot}}&pDomain={{pd}}&vendor={{vd}}&pGroup={{pg}}&nfc={{nfc}}&guid={{toolbarId}}&ver={{ver}}&sig={{sgn}}
ext.ask.com/%7B%7Bsoep%7D%7Dhttps://ext.ask.com/{{soep}}?productName={{pname}}&installDate={{installDate}}&partnerId={{partnerId}}&si={{partnerSubId}}&tbGuid={{toolbarId}}&coId={{coId}}&isAudioEnabled={{ae}}&isRebuttalEnabled={{re}}
hp.myway.com/smsfrombrowser/ttab02chr/index.htmlhttps://hp.myway.com/smsfrombrowser/ttab02chr/index.html?p2=${partnerID}&n=${installDateHex}&ptb=${toolbarID}&si=${partnerSubID}
smsfrombrowser.dl.myway.com/uninstall.jhtmlhttps://smsfrombrowser.dl.myway.com/uninstall.jhtml?c=
download.smsfrombrowser.com/images/download/static/native/notifications/%7B%7BcobrandID%7D%7D/%7B%7BtrackID%7D%7D/logger-config.jsonhttps://download.smsfrombrowser.com/images/download/static/native/notifications/{{cobrandID}}/{{trackID}}/logger-config.json
Showing 1 to 10 of 30 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
13.962.19.39272
Latest
0.10 MB
Malicious
13.958.19.40266
0.10 MB
Malicious
12
13.958.19.9344
0.10 MB
Malicious
5
13.986.19.62920
0.39 MB
Malicious
Showing 1 to 4 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.