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.7Chrome Web Store
45Risk

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

Publishers can request a review.

Findings

SeverityMEDIUM
ClassUNWANTED
TypeUnexpected
CWECWE-829
SourceAI SANDBOX

Remote recommendation config injects page links

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.

The link destination can change whenever the server updates the config.

01EvidenceCAUSE EFFECT
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.

02EvidenceNETWORK CAPTURE
Captured request
GEThttps://mnsearch.com/media/recommendsite.json
200 OK observed during dynamic analysis; the recorded evidence says the response contained recommendation URL entries.
03EvidenceFIELD TABLE
Fields used from the recommendation configuration
FieldValueWhy it matters
Recommendation URL
https://netsedori.com/archives/5304This 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/14This describes the configured recommendation entry and can be changed by the configuration publisher.
04EvidenceCODE COMPARE
The code that does this

The request, selection, and banner rendering code paths

What it actually does
Background maps the recommendation API type to the mnsearch.com JSON endpointjs/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 URLjs/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 datajs/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
  }
}
05EvidenceTHIRD PARTY LIST
External hosts involved in this behavior
  • mnsearch.com

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

  • netsedori.com

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

  • keigo10.com

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

  • reiji-fukuyama.com

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

Data recipients

mnsearch.commnrate.com
Updated 17 September 2026eadklkgmejdhldgchbmegmljdkchcdbd