Is SparxSolver safe?

Medium risk

SparxSolver is medium risk. Every service worker wake opens an offscreen document that registers your browser with a third party AI compute network and sends a hardware fingerprint. We captured a live registration request; neither the listing nor the UI mention it.

Najm Ajmalv5.3.5Chrome Web Store
45Risk
Who publishes it

Najm Ajmal - no other listings under this identity

What this publisher told the store about itself, and the other listings that told it the same thing.

Publisher
Najm Ajmal

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

Publishers can request a review.

Findings

SparxSolver turns your browser into an AI compute node without asking first

Every service worker wake opens an offscreen document that registers your browser with a third party AI compute network and sends a hardware fingerprint.

We captured a live registration request; neither the listing nor the UI mention it.

Severity
Medium unwanted
Type
Unexpected
CWE
CWE-359
Source
Dynamic sandbox
What actually happens
You did this

You install, update, or restart the browser, which wakes the extension's background service worker.

The extension did this

background.js opens a chrome.offscreen document that loads a bundled SDK, fingerprints your device, and registers it with a third party AI compute network with no consent prompt.

The code that does this

background.js: unconditional call, no opt-in gate

Readable version

The top level initializer that fires on every wake

background.js
// 2. Main Top-Level Initialization (Fires instantly on every single wake-up)(async () => {  // Initialize Mellowtel  try {    mellowtel = new Mellowtel(MELLOWTEL_CONFIG_KEY);    await mellowtel.initBackground();    console.log('๐Ÿ›ก๏ธ Mellowtel: Background initialized successfully.');  } catch (error) {    console.error('โŒ Mellowtel: Initialization failed:', error);  }  // Force ZeroGPU setup immediately  await setupZeroGpuOffscreen();})();

offscreen.js loads the ZeroGPU SDK with a hardcoded key

offscreen.js
import { initZeroGpuOffscreen } from "./vendor/zerogpu/zerogpu-offscreen.js";console.log("ZeroGPU Offscreen initialization sequence started!");initZeroGpuOffscreen({  edgeOperatorKey: "<redacted, hardcoded vendor SDK key shipped in the extension>",  enableConsoleLogs: false,});
Fields sent to devices.zerogpu.ai/register
  • Device ID
    b7e2f9a0-4c31-4e2a-9f6d-1a2b3c4d5e6f

    A UUID the SDK generates and stores in your browser so ZeroGPU can recognize this device across sessions.

  • GPU renderer
    ANGLE (Apple, Apple M2, OpenGL 4.1)

    Your graphics card name, read through WebGL, used to decide which AI models this device can run.

  • CPU cores & RAM
    cpuCores: 8, memoryGb: 8

    Your processor core count and device memory, used to size the compute job assigned to this device.

  • Screen & battery
    1512x982 @2x, battery 87% charging

    Your screen resolution, pixel ratio, and battery charge and charging state.

  • Network & timezone
    wifi, 10.6 Mbps down, Australia/Sydney

    Your connection type and speed plus your timezone, sent with every registration.

Captured request
POSThttps://devices.zerogpu.ai/register

Response assigns a WebSocket URL (wsUrl) the offscreen document connects to for server assigned inference jobs.

Headers
Content-Type
application/json
x-edge-operator-key
<redacted, hardcoded vendor SDK key>
Body
{  "deviceId": "b7e2f9a0-4c31-4e2a-9f6d-1a2b3c4d5e6f",  "sdkVersion": "0.1.6+9f0db3f",  "device": {    "sdkDeviceId": "b7e2f9a0-4c31-4e2a-9f6d-1a2b3c4d5e6f",    "platform": "macos-web",    "deviceType": "desktop",    "cpuCores": 8,    "memoryGb": 8,    "gpuRenderer": "ANGLE (Apple, Apple M2, OpenGL 4.1)",    "screen": {      "width": 1512,      "height": 982,      "pixelRatio": 2    },    "battery": {      "level": 0.87,      "charging": true    },    "connection": {      "type": "wifi",      "downlink": 10.6,      "rtt": 40    },    "timezone": "Australia/Sydney",    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"  }}
Where the fingerprint and compute job traffic go
    • devices.zerogpu.ai

    Receives the device fingerprint and issues a WebSocket URL used to assign remote AI inference jobs to this device's CPU/GPU.

    • wsUrl (server assigned WebSocket)

    The endpoint the offscreen document connects to after registration, used to receive and execute inference jobs.

Not observed active in testing

The SDK also has code for navigator.geolocation and getUserMedia camera capture, gated by server response flags rather than shipped code. Both were off in our session; the operator could enable them remotely without a new release.

Updated 30 September 2026mnhidfdmcdhjlmdopehepplijapmcapc