Is Cashbe: Serviço de Cashback safe?
Cashbe can disable other installed extensions, listed by a remote config, when a cashback offer is activated.
The extension downloads a list of extension IDs from cashbe.com.br and turns off any matching installed extensions while cashback is being activated, then re-enables them afterward. If the user opts in to analytics, it also reads search-result pages (query, titles, links, snippets) that match affiliate merchants and sends them to analytics.troywell.org.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Cashback extension can disable other extensions from a server ID list
Code analysis shows the extension fetches a list of extension IDs from cashbe.com.br and calls the management API to turn off any that are enabled, around cashback activation.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-506
- Source
- Static analysis
You activate cashback on a merchant site.
The extension compares your enabled extension IDs with a server list and can turn off matches.
- Any-time ID listconfig.data.anyTime
Server-supplied IDs matched against your enabled extensions at startup and activation.
- Activation-time ID listconfig.data.activationTime
Server-supplied IDs matched when you activate cashback.
- Enabled extension IDschrome.management.getAll() filtered by enabled
IDs of extensions currently enabled in your browser profile.
- Enabled flagfalse
false when matches are turned off; true re-enables them after activation.
Server list intersection leads to chrome.management.setEnabled
Class Se ('thanos') constructor
deobfuscated/bg/bundle.js i(this, t), this.name = "thanos", this.data = {}, this.browser = e.browser, this.state = !1, this.allExt = [], this.ignoreId = "", this.init() } var e, n, a, s, u; return o(t, [{ key: "init", ...controller() intersects config lists with installed IDs
deobfuscated/bg/bundle.js if (this.state) { t.next = 5; break } return t.abrupt("return"); case 5: return i = (0, v.intersection)((0, v.get)(null === (n = this.configs) || void 0 === n ? void 0 : n.data, r, []), this.allExt), t.next = 8, (0, v.each)(i, (function(t) { a.toggleExtension(t, e) })); case 8: case "end": return t.stop() } }), t, this)toggleExtension and checkState
deobfuscated/bg/bundle.js }, { key: "toggleExtension", value: function(t) { var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; try { if (t === this.ignoreId) return; chrome.management.setEnabled(t, e) } catch (t) {} } }, { key: "checkState", value: (e = r(d().mark((function t() { var e, n; return d().wrap((function(t) { for (;;) switch (t.prev = t.next) { case 0: return t.next = 2, kt("caa.core.settings"); case 2: e = t.sent, n = (0, v.get)(e["caa.core.settings"], "isProtected"), this.state = "yabrowser" !== this.browser && "firefox" !== this.browser && !!chrome.management && n; case 5: case "end":- cashbe.com.br
Serves /api/configs/thanos, whose anyTime and activationTime lists are compared with enabled extension IDs.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
Where it sends data
Destinations our analysis observed Cashbe: Serviço de Cashback 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.
- analytics.troywell.org
Cashbe: Serviço de Cashback sends data to analytics.troywell.org. No other extension we have analysed sends data here.
- cashbe.com.br
Cashbe: Serviço de Cashback sends data to cashbe.com.br. No other extension we have analysed sends data here.