Preppy Cursor ★ Custom Cursor for Chrome™

Preppy Cursor ★ Custom Cursor for Chrome™

ID: dobjkkoopofegeinkiepblgidnigchoo

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Active
Version
1.01.08
Size
0.88 MB
Rating
3.0/5
Reviews
3
Users
491
Type
Extension
Updated
Nov 30, 2025
Category
Just for fun
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Trusted
Author
https://owhit.comView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Website
Visit
Total Extensions
143
Active
79
Obsolete
9
Listed
143
Unlisted
0
Total Users
62,014
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4

Cute and colorful preppy cursors! 40+ icons to match your aesthetic vibe

Add a splash of color and charm to your browser with the Preppy Cursor collection! 💅🌈 From hearts and smiley faces to bows, lightning bolts, flowers, and butterflies – this pack brings 40+ aesthetic cursors to match your vibe. 🔸 Features 🎀 40+ Stylish Preppy Cursors – Cute, colorful, and full of personality. ✨ Trendy Designs – Inspired by TikTok, Y2K, and pastel aesthetics. 🖱️ Easy Switching – Choose your favorite cursor with just a click. 🎨 Resizable Options – Customize the size to your liking. ⚡ Smooth Browsing – Lightweight and fast performance. 💖 Favorites Tab – Save the ones that match your mood. 💅 Perfect For 🎨 Aesthetic lovers and TikTok fans. 🌸 Anyone who loves vibrant, girly, and playful styles. 💻 Customization fans who want a cute and fun browsing experience.

Item
Type
Severity
Description
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 10% increase: Early script execution enables pre-emptive content manipulation
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.
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.

On install, the extension immediately opens a tab navigating to yowgames.com with UTM parameters that fingerprint the event as an extension install. The uninstall URL similarly reports uninstall events back to yowgames.com. Together these form a behavioral telemetry system tracking user install/uninstall actions without disclosure.

cursorbackground.js (Line 2)
chrome.runtime.onInstalled.addListener(function(details) {  if (details.reason === "install") {    chrome.storage.local.set({      switch_status: "true",      default_cursor: "",      pointer_cursor: "",      default_cursor_result: "",      pointer_cursor_result: "",      default_curSize: "48",      pointer_curSize: "48",      favorites: []    });    // Kurulum sonrası hoş geldiniz sayfasını aç    chrome.tabs.create({      url: "https://yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/?utm_source=install&utm_medium=link&utm_campaign=bg&utm_content=install"    });  }});// Uzantı kaldırıldığında çalışacakchrome.runtime.setUninstallURL(  "https://yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/?utm_source=Uninstall&utm_medium=link&utm_campaign=bg&utm_content=Uninstall");

The content script is injected at `document_start` into every frame (including iframes) on every HTTP/HTTPS URL. `document_start` fires before any page DOM or scripts exist, giving the extension the earliest possible execution foothold. While some cursor extensions require this, injecting into all_frames universally is more aggressive than necessary for cursor styling.

manifest.json (Line 13)
{  "content_scripts": [    {      "all_frames": true,      "js": [        "cursorcontent.js"      ],      "matches": [        "*://*/*"      ],      "run_at": "document_start"    }  ]}

The style element ID is `demonslayer-impact-cursor-style`, which does not match this extension's branding ('Preppy Cursor'), strongly suggesting the code was cloned from a different cursor extension. Additionally, `data.default_cursor_result` and `data.pointer_cursor_result` from storage are interpolated directly into CSS without validation that they are safe data URLs; if storage were compromised by another vector, this could enable CSS injection into every visited page.

cursorcontent.js (Line 19)
// Yeni stil oluşturcursorStyle = document.createElement('style');cursorStyle.id = 'demonslayer-impact-cursor-style';cursorStyle.textContent = `    * {      cursor: url(${data.default_cursor_result}), auto !important;    }    a, button, input[type="submit"], input[type="button"], .btn, [role="button"],     [type="button"], [type="reset"], [type="submit"], [type="checkbox"], [type="radio"],    select, option, .clickable, .pointer, [onclick], [data-action], [data-click], [data-toggle] {      cursor: url(${data.pointer_cursor_result || data.default_cursor_result}), pointer !important;    }  `;// Stili sayfaya ekledocument.head.appendChild(cursorStyle);

A MutationObserver monitors the entire document tree (`subtree: true`) specifically watching for dynamically injected IFRAME or FRAME elements. While the stated purpose is to re-apply the cursor style, this pattern provides persistent visibility into iframe injection events across all visited pages, which goes beyond what cursor styling requires.

cursorcontent.js (Line 79)
// Sayfadaki dinamik değişiklikleri izle ve cursor'u tekrar uygulaconst observer = new MutationObserver(function(mutations) {  // Sadece önemli DOM değişikliklerinde cursor'u tekrar uygula  if (mutations.some(mutation =>      mutation.type === 'childList' &&      (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) &&      Array.from(mutation.addedNodes)      .some(node => node.nodeName === 'IFRAME' || node.nodeName === 'FRAME')    )) {    if (cursorData) {      applyCursor(cursorData);    }  }});// DOM değişikliklerini izlemeye başlaobserver.observe(document.documentElement, {  childList: true,  subtree: true});

The popup loads a Google Fonts stylesheet via a third-party CDN request each time the popup is opened. This request reveals the user's IP address and timing to Google without explicit disclosure, constituting a minor privacy-leaking tracking call from within the extension popup.

cursorpopup.html (Line 13)
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">

By severity

Critical0
High0
Medium3
Low2

Versions scanned

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

Extension VersionCode Review Findings
1.01.085

Files with findings

4 distinct paths — top paths by unique finding count:

  • cursorcontent.js2
  • cursorbackground.js1
  • cursorpopup.html1
  • manifest.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
medium
cursorcontent.js (line 19)The style element ID is `demonslayer-impact-cursor-style`, which does not match this extension's branding ('Preppy Cursor'), strongly suggesting the code was cloned from a different cursor extension. Additionally, `da…
1.01.08
2Other
medium
manifest.json (line 13)The content script is injected at `document_start` into every frame (including iframes) on every HTTP/HTTPS URL. `document_start` fires before any page DOM or scripts exist, giving the extension the earliest possible …
1.01.08
3Tracking
medium
cursorbackground.js (line 2)On install, the extension immediately opens a tab navigating to yowgames.com with UTM parameters that fingerprint the event as an extension install. The uninstall URL similarly reports uninstall events back to yowgame…
1.01.08
4Tracking
low
cursorpopup.html (line 13)The popup loads a Google Fonts stylesheet via a third-party CDN request each time the popup is opened. This request reveals the user's IP address and timing to Google without explicit disclosure, constituting a minor …
1.01.08
5Unauthorized Data Collection
low
cursorcontent.js (line 79)A MutationObserver monitors the entire document tree (`subtree: true`) specifically watching for dynamically injected IFRAME or FRAME elements. While the stated purpose is to re-apply the cursor style, this pattern pr…
1.01.08
URLs
12
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.

yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/https://yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/?utm_source=install&utm_medium=link&utm_campaign=bg&utm_content=install
yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/https://yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/?utm_source=Uninstall&utm_medium=link&utm_campaign=bg&utm_content=Uninstall
chrome.google.com/webstore/detail/$%7BextensionId%7D/reviews%60;https://chrome.google.com/webstore/detail/${extensionId}/reviews`;
fonts.googleapis.com/css2https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap
yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/https://yowgames.com/preppy-cursor-%e2%98%85-custom-cursor-for-chrome/?utm_source=getcursors&utm_medium=link&utm_campaign=bg&utm_content=getcursors
www.w3.org/1999/02/22-rdf-syntax-nshttp://www.w3.org/1999/02/22-rdf-syntax-ns#
ns.attribution.com/ads/1.0/http://ns.attribution.com/ads/1.0/
purl.org/dc/elements/1.1/http://purl.org/dc/elements/1.1/
ns.adobe.com/pdf/1.3/http://ns.adobe.com/pdf/1.3/
ns.adobe.com/xap/1.0/http://ns.adobe.com/xap/1.0/
Showing 1 to 10 of 20 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.01.08
Latest
0.88 MB
Malicious
5
1.01.07
0.88 MB
Malicious
Showing 1 to 2 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.