Is Monosearch safe?

Medium risk

Monosearch reads Amazon product and seller data from pages you view and forwards it to the vendor's mnsearch.com and mnrate.com backends.

On Amazon pages, the content script extracts ASINs, prices, seller IDs and identification numbers and relays them through the background worker to mnsearch.com and mnrate.com for its reselling-research feature. It also fetches a remote configuration file (recommendsite.json) from mnsearch.com and injects a server-chosen link as a recommendation banner into pages. The extension requests access to all http and https sites even though its active logic only runs on Amazon.

inbaysev7.0.9Chrome Web Store
47Risk
Who publishes it

インベイズ株式会社 - 1 other listing from the same operator, none carrying a finding

What this publisher told the store about itself, and the other listings that told it the same thing.

Publisher
inbayse
Declared legal entity
インベイズ株式会社
Registered address
千代田町境原2489-1, 神埼市, 佐賀県 842-0056, JP
Registered contact
吉村貴志

Same store account

1 other listing published from this account, 20k+ users between them, none of them carrying a finding.

Shared hosts - 3 hostnames

Hostnames hardcoded in this extension that few other listings call. That can mean one operator behind both, and it can equally mean a small shared vendor, so it is context rather than a conclusion. Hosts that many listings call are left out: they are services, not connections.

barcode-coder.com
Also called by 5 other listings, including CAIPA POC 2.0
cecill.info
Also called by 5 other listings, including CAIPA POC 2.0
mnrate.com
Also called by 6 other listings, including アマストリーム会員様専用ツール 3, ショッピングリサーチャー, キーワードゲッター

AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.

Publishers can request a review.

Findings

Remote recommendation config injects page links

MediumunwantedCWE-829Dynamic sandbox

Monosearch requests a recommendation config from mnsearch.com, then picks a URL from the recommend list and renders it as a clickable banner on shopping pages.

What actually happens

You did this

You browse a supported shopping page while the recommendation feature is enabled.

The extension did this

The extension fetches a recommendation list and places one server-provided URL into a clickable page banner.

Captured request

GEThttps://mnsearch.com/media/recommendsite.json

200 OK observed during dynamic analysis; the recorded evidence says the response contained recommendation URL entries.

Fields used from the recommendation configuration

  • Recommendation URL
    https://netsedori.com/archives/5304

    This is the destination that can open when you click the recommendation image shown on the page.

  • Recommendation title
    ミントの電脳せどりブログ

    This gives context for the recommendation entry but does not identify you by itself.

  • Recommendation date
    2018/11/14

    This describes the configured recommendation entry and can be changed by the configuration publisher.

The code that does this

The request, selection, and banner rendering code paths

Readable version

Background maps the recommendation API type to the mnsearch.com JSON endpoint

js/background.js
static get json() {  return {    API: {      recommend: "https://mnsearch.com/media/recommendsite.json",      advertisement_spot: "https://mnsearch.com/media/advertisement_spot_parameter.json"    }  }}class bt extends ht {  constructor(t) {    super(t)  }  exec(t, e, a) {    return this.sendGetSellerData(t, a)  }  sendGetSellerData(t, e) {    let a = G.json.API,      i = t.jsonAPI.type;    return this.param = {      url: a[i]    }, this.send({}, e), !0  }}

Content script asks for recommendation JSON and chooses one configured URL

js/contents_script.js
class fr extends Ma {  constructor() {    super()  }  request() {    return new Promise(((e, t) => {      chrome.runtime.sendMessage({        jsonAPI: {          type: "recommend"        }      }, (t => {        e(t)      }))    }))  }}async start(e) {  this._eventView.sender = e => {};  let t = await this._advancedSettingModel.get();  try {    let e = await this._monosarchJSONDataModel.request();    this._targetURL = this.choiceTargetURL(e)  } catch (e) {}  let a = await this._monosarchAdvJSONDataModel.request();  this._advURLs = a, this.startAdv(t)}startAdv(e) {  this._view.targetURL = this._targetURL, this._view.advURLs = this._advURLs, this._view.setMonoSearchAdvertisementEnableFlag(e.monoSearchAdvertisementEnableFlag), this._view.start()}choiceTargetURL(e) {  let t = e.recommend.length;  return t ? e.recommend[Math.floor(Math.random() * t)].url : ""}

The selected URL becomes the image link in the banner data

js/contents_script.js
createRecommendBiggerBanner(e = "detail_product_under", t = "msExProAdvertisementTitle", a = "") {  let i = this.randRecommendBiggerBanner(this._targetURL);  return i.url = this._targetURL, At.createBiggerBanner({    _SHOW_HIDE_CLAZZ: this._SHOW_HIDE_CLAZZ,    adBannerPrefix: e,    msg: t,    clazzName: a,    openCloseTypeClazzName: this.getOpenCloseTypeClazzName(),    bannerData: i  })}randRecommendBiggerBanner(e) {  Math.floor(100 * Math.random());  let t = this._RECOMMEND_BANNER.HASHI_001,    a = chrome.i18n.getMessage("msExProAdvertisementTitle");  return {    path: t,    bannerType: 100,    hrefAtImage: e,    hrefAtComment: this._PRO_URL,    bannerTitle: a  }}

External hosts involved in this behavior

    • mnsearch.com

    Provides the recommendation configuration that supplies URL entries used by the page banner.

    • netsedori.com
    • keigo10.com
    • reiji-fukuyama.com

    One current recommendation URL value returned by the configuration endpoint during enrichment.

What it can do

Permissions this extension asks for, as declared in version 7.0.7. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to. The current listed version is 7.0.9, which we have not unpacked yet.

  • Read and change your data on every site you visit

    http://*/*

  • Read and change your data on every secure site you visit

    https://*/*

  • Add items to the right-click menu

    contextMenus

  • Show you desktop notifications

    notifications

  • Store data in your browser

    storage

Where it sends data

Destinations our analysis observed Monosearch contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.

  • mnrate.com

    Monosearch sends data to mnrate.com. No other extension we have analyzed sends data here.

  • mnsearch.com

    Monosearch sends data to mnsearch.com. No other extension we have analyzed sends data here.

Updated 2 November 2026eadklkgmejdhldgchbmegmljdkchcdbd