Custom Cursor Pack

ID: kmjaecainjoaomeebaofnnbobomfigoa

Could be malicious

Supported Languages

๐Ÿ‡ง๐Ÿ‡ฉBengali
๐Ÿ‡ง๐Ÿ‡ทBrazilian Portuguese
๐Ÿ‡ฌ๐Ÿ‡งBritish English
๐Ÿ‡ง๐Ÿ‡ฌBulgarian
๐Ÿ‡ช๐Ÿ‡ธCatalan
๐Ÿ‡จ๐Ÿ‡ณChinese (Simplified)
๐Ÿ‡น๐Ÿ‡ผChinese (Traditional)
๐Ÿ‡ญ๐Ÿ‡ทCroatian
๐Ÿ‡จ๐Ÿ‡ฟCzech
๐Ÿ‡ฉ๐Ÿ‡ฐDanish
๐Ÿ‡ณ๐Ÿ‡ฑDutch
๐Ÿ‡บ๐Ÿ‡ธEnglish
๐Ÿ‡ช๐Ÿ‡ชEstonian
๐Ÿ‡ต๐Ÿ‡ญFilipino
๐Ÿ‡ซ๐Ÿ‡ฎFinnish
๐Ÿ‡ซ๐Ÿ‡ทFrench
๐Ÿ‡ฉ๐Ÿ‡ชGerman
๐Ÿ‡ฌ๐Ÿ‡ทGreek
๐Ÿ‡ฎ๐Ÿ‡ณGujarati
๐Ÿ‡ฎ๐Ÿ‡ณHindi
๐Ÿ‡ญ๐Ÿ‡บHungarian
๐Ÿ‡ฎ๐Ÿ‡ฉIndonesian
๐Ÿ‡ฎ๐Ÿ‡นItalian
๐Ÿ‡ฏ๐Ÿ‡ตJapanese
๐Ÿ‡ฐ๐Ÿ‡ทKorean
๐Ÿ‡ฑ๐Ÿ‡ปLatvian
๐Ÿ‡ฑ๐Ÿ‡นLithuanian
๐Ÿ‡ฒ๐Ÿ‡พMalay
๐Ÿ‡ฎ๐Ÿ‡ณMalayalam
๐Ÿ‡ฎ๐Ÿ‡ณMarathi
๐Ÿ‡ณ๐Ÿ‡ดNorwegian
๐Ÿ‡ต๐Ÿ‡ฑPolish
๐Ÿ‡ต๐Ÿ‡นPortuguese
๐Ÿ‡ท๐Ÿ‡ดRomanian
๐Ÿ‡ท๐Ÿ‡บRussian
๐Ÿ‡ท๐Ÿ‡ธSerbian
๐Ÿ‡ธ๐Ÿ‡ฐSlovak
๐Ÿ‡ธ๐Ÿ‡ฎSlovenian
๐Ÿ‡ช๐Ÿ‡ธSpanish
๐Ÿ‡ธ๐Ÿ‡ชSwedish
๐Ÿ‡ฎ๐Ÿ‡ณTamil
๐Ÿ‡ฎ๐Ÿ‡ณTelugu
๐Ÿ‡น๐Ÿ‡ญThai
๐Ÿ‡น๐Ÿ‡ทTurkish
๐Ÿ‡บ๐Ÿ‡ธUS English
๐Ÿ‡ป๐Ÿ‡ณVietnamese

Extension Info & Metadata

Status
Removed
Version
1.7.7
Size
2.09 MB
Rating
2.7/5
Reviews
3
Users
120,362
Type
Extension
Updated
Feb 9, 2021
Category
7_productivity
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
Becky MasonView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
2
Active
0
Obsolete
2
Listed
2
Unlisted
0
Total Users
120,417

Never use a cursor you don't like again

Custom Cursor Pack changes cursors on web pages opened in the browser. ๐Ÿ™‚ Hundreds of cursors manually selected and categorized ๐Ÿ“ Upload your cursor (use 128x128 image) You can change the cursor back to normal by disabling it. Open extensionโ€™s popup from the toolbar to do it. Please note: the cursor couldnโ€™t be changed if the mouse is over browser elements e.g. toolbar, search box, or context menus. It works if the mouse pointer is over a page.

Item
Type
Severity
Description
*://*/*
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.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:โ€ข 15% increase: Older manifest version lacks modern security controls
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

Any external website that knows the extension ID (publicly available as kmjaecainjoaomeebaofnnbobomfigoa) can call get_config to exfiltrate all local storage or set_config to overwrite any storage key with no origin check, no secret, and no user confirmation. This is a fully open remote-control API. The set_config path allows an attacker-controlled site to write arbitrary values to selected.cursor.path, which is later rendered unsanitized into page CSS via customCursor.js.

bg.js (Line 18463)
chrome.runtime.onMessageExternal.addListener(function(t, e, i) {  if (t.action == "getInstalled") {    return i({      collections: this.collection,      ver: chrome.runtime.getManifest().version,      action: "get_installed_collection"    })  }  if (t.action == "get_config") {    chrome.storage.local.get(null, function(t) {      return i(t)    }.bind(this))  }  if (t.action == "set_config") {    chrome.storage.local.set(t.data);    return i({      status: true    })  }  if (t.action == "set_config_sync") {    chrome.storage.sync.set(t.data);    return i({      status: true    })  }  if (t.action == "get_config_sync") {    return i(this.config_sync)  }}.bind(this))

selected.cursor.path and selected.pointer.path are interpolated directly into a multi-selector CSS block via string replacement and then written to sheet.innerHTML without sanitization. Because set_config (bg.js:18521) lets any external website overwrite selected.cursor.path, an attacker can inject arbitrary CSS into every page the user visits, enabling UI redressing, CSS-based data exfiltration (e.g., input value exfiltration via attribute selectors), and phishing overlays.

js/customCursor.js (Line 214)
tmpCss = tmpCss.replace(/#cursor#/g, selected.cursor.path);tmpCss = tmpCss.replace(/#size#/g, sizeNumber);tmpCss = tmpCss.replace(/#cursorOffsetX#/g, 0);tmpCss = tmpCss.replace(/#cursorOffsetY#/g, 0);tmpCss = tmpCss.replace(/#pointer#/g, selected.pointer.path);tmpCss = tmpCss.replace(/#size#/g, sizeNumber);tmpCss = tmpCss.replace(/#pointerOffsetX#/g, 0);tmpCss = tmpCss.replace(/#pointerOffsetY#/g, 0);sheet.innerHTML = tmpCss;

The 456KB background script bundles the full RxJS reactive-programming library (~10,000 lines) which is never used by the background class or any other extension file. Combined with CSP whitelisting google-analytics.com and googletagmanager.com where no analytics code exists, this pattern is consistent with a prior version that had additional functionality (tracking, exfiltration pipeline) that was stripped after CWS detection, leaving library dead-code and a prepared CSP behind.

bg.js (Line 1)
// Lines 1-16111: jQuery 3.5.1 (~5600 lines) + full RxJS bundle (~10500 lines)// Neither library is referenced anywhere in the background class (lines 18316-18563)// The background class uses only native Chrome APIs and Promises.e.fetch = Mn; // RxJS fetch export โ€” line 16050// ...const listOfCollection = {  ...} // cursor data starts line 16112class background {  ...} // actual extension code at line 18316

By severity

Critical0
High2
Medium1
Low0

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.7.73

Files with findings

2 distinct paths โ€” top paths by unique finding count:

  • bg.js2
  • js/customCursor.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
high
js/customCursor.js (line 214)selected.cursor.path and selected.pointer.path are interpolated directly into a multi-selector CSS block via string replacement and then written to sheet.innerHTML without sanitization. Because set_config (bg.js:18521โ€ฆ
2Unauthorized Data Collection
high
bg.js (line 18463)Any external website that knows the extension ID (publicly available as kmjaecainjoaomeebaofnnbobomfigoa) can call get_config to exfiltrate all local storage or set_config to overwrite any storage key with no origin cโ€ฆ
3Obfuscation
medium
bg.js (line 1)The 456KB background script bundles the full RxJS reactive-programming library (~10,000 lines) which is never used by the background class or any other extension file. Combined with CSP whitelisting google-analytics.cโ€ฆ
URLs
60
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.

github.com/twbs/bootstrap/blob/master/LICENSEhttps://github.com/twbs/bootstrap/blob/master/LICENSE
goo.gl/pxwQGphttps://goo.gl/pxwQGp
popper.js.org-https://popper.js.org
github.com/twbs/bootstrap/issues/24251https://github.com/twbs/bootstrap/issues/24251
www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.htmlhttps://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
jquery.com-http://jquery.com/
sizzlejs.com-http://sizzlejs.com/
jquery.org/licensehttp://jquery.org/license
jsperf.com/thor-indexof-vs-for/5http://jsperf.com/thor-indexof-vs-for/5
www.w3.org/TR/css3-selectors/http://www.w3.org/TR/css3-selectors/#whitespace
Showing 1 to 10 of 60 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
1.7.7
Latest
2.09 MB
Malicious
3
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.