Is Kakobuy+ safe?
Kakobuy+ rewrites Kakobuy page URLs to include the hardcoded stannie affiliate code.
When pages on kakobuy.com load, Kakobuy+ adds or replaces the affcode URL parameter with stannie, including inside hash-based URLs. On item detail pages, it also removes or clicks through Kakobuy warning and risk modals when auto-remove is enabled by default.
Who publishes itStannie - no other listings under this identity
Stannie - no other listings under this identity
What this publisher told the store about itself, and the other listings that told it the same thing.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Content Script Overwrites Kakobuy Affiliate Code With Hardcoded Value
On kakobuy.com, Kakobuy+ checks the URL for an affcode parameter.
If missing or not its hardcoded code, it reloads the page with affcode=stannie substituted in.
Runs on every load and on in-page navigation, overriding other affiliate codes.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-506
- Source
- Dynamic sandbox
You open a kakobuy.com page, with no affcode parameter, or one belonging to a different affiliate.
No click or extension interaction is required; this covers ordinary navigation to the site.
Kakobuy+ reloads the page with affcode=stannie, its own hardcoded affiliate code, set in the URL, replacing whatever affcode value was there before.
The rewrite runs on the extension's own initialization, independent of the 'Auto remover' toggle in the popup.
on page load
You didOpen https://www.kakobuy.com/, no affcode parameter present.
The extension didPage reloads at https://www.kakobuy.com/?affcode=stannie.
~65ms after page load
You didOpen https://www.kakobuy.com/?affcode=someoneelse, a link carrying a different affiliate's code.
The extension didPage reloads at https://www.kakobuy.com/?affcode=stannie, replacing the original affcode value.
content.js is shipped unminified; shown here with the mechanism annotated line by line.
Same code, annotated (content.js ships unminified — no renaming needed)
// Hardcoded affiliate identifier the extension always wants present.const KAKOBUY_REFERRAL = { key: "affcode", value: "stannie" };// Only activates on kakobuy.com.function getReferralCode() { const hostname = window.location.hostname.replace(/^www\./, ""); return hostname === "kakobuy.com" ? KAKOBUY_REFERRAL : null;}// Compares the current URL's affcode against the hardcoded value.// Any mismatch (absent, or a different affiliate's code) triggers a// full-page navigation that rewrites the URL to affcode=stannie.function enforceReferral() { const partnercode = getReferralCode(); if (!partnercode) return false; const url = new URL(window.location.href); // Handles hash-routed URLs (query string inside the #fragment). if (url.hash) { const questionMarkPos = url.hash.indexOf("?"); if (questionMarkPos === -1) { window.location.href = url.origin + url.pathname + url.hash + "?affcode=stannie"; return true; } else { const hash = url.hash.substring(0, questionMarkPos); const searchParams = new URLSearchParams(url.hash.substring(questionMarkPos + 1)); if (searchParams.get("affcode") !== "stannie") { searchParams.set("affcode", "stannie"); window.location.href = url.origin + url.pathname + hash + "?" + searchParams.toString(); return true; } } return false; } // Ordinary query-string URLs: overwrite affcode and reload. if (url.searchParams.get("affcode") !== "stannie") { url.searchParams.set("affcode", "stannie"); window.location.href = url.toString(); return true; } return false;}Top-level navigation request produced by the content script's window.location.href reassignment. No request body is involved, the affiliate code travels in the URL query string itself. Observed during dynamic analysis, reproduced from both a bare kakobuy.com URL and one carrying a different affcode value.
Logs the page's affcode query parameter every time the URL changes, so you can watch Kakobuy+ rewrite it in real time.
- Chrome with Kakobuy+ installed
- DevTools console
// kakobuy-affcode-watch.js// Paste into the DevTools console on a kakobuy.com tab to watch the// affcode query parameter as the page loads and navigates.(function () { let lastHref = location.href; function logAffcode(label) { const url = new URL(location.href); const affcode = url.searchParams.get('affcode'); console.log('[AFFCODE_WATCH] ' + label + ': affcode=' + (affcode ?? '(none)') + ' -- ' + location.href); } logAffcode('initial'); setInterval(() => { if (location.href !== lastHref) { lastHref = location.href; logAffcode('url changed'); } }, 100); console.log('[AFFCODE_WATCH] installed -- navigate to a kakobuy.com URL with no affcode, or a different affcode, to see it get overwritten.');})();- 1Open https://www.kakobuy.com/?affcode=someoneelse (or any kakobuy.com URL with no affcode).
- 2Open DevTools, paste this script right after the page starts loading.
- 3Watch '[AFFCODE_WATCH]' logs; affcode becomes 'stannie' when active.
Where it sends data
Destinations our analysis observed Kakobuy+ 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.
- kakobuy.com
Kakobuy+ sends data to kakobuy.com. One other extension we have analysed sends data here.