TavernKeeper Scan Report

NemoVonNirgend/SIllytavern-Moodmusic-extension

Commit 04e4d0a Reviewed

No material or immediate-danger concern was identified in this review.

This advisory report describes what the named tools and review process found at one exact commit. Unknown or unobserved behavior may still exist.

0 immediate danger 0 material 4 low

What this review found

No material or immediate-danger item was identified.

Contextual expected matches (3)

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The backend plugin reads Spotify credentials and sends them to Spotify's official login servers to authorize music playback. This is exactly how a Spotify integration is supposed to work.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: Detailed technical wording was omitted by the public report safety filter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
production
Source
moodmusic/index.mjs:8-93

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension makes normal web requests to its own backend plugin and uses standard SillyTavern AI functions to get song suggestions. There is no hidden or dangerous code execution tied to network downloads.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.

Contextual assessment: The scanner correlated fetch() calls with code-execution sinks in the same file. The fetch calls target same-origin endpoints under /api/plugins/moodmusic/ (config, auth/status, playback/state, play). The execution-like sinks are generateQuietPrompt and generateRaw, which are standard SillyTavern APIs for AI text generation imported from script.js. There is no eval, Function constructor, or dynamic script injection from fetched data. The $.get call loads a local settings.html from the extension folder. All data flows match the stated purpose of communicating with the backend Spotify plugin and generating AI music suggestions.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.download-to-execution
File role
production
Source
moodmusic-extension/index.js:111-305

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The plugin reads configuration from environment variables, which is standard practice for server-side applications. No sensitive data is leaked or sent anywhere unexpected.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment. The match applies to this repository.

Contextual assessment: The scanner flagged process.env access on line 7 as a serialize-environment signal. The code reads MOODMUSIC_SPOTIFY_CLIENT_ID and MOODMUSIC_SPOTIFY_CLIENT_SECRET from process.env as optional configuration defaults, which is standard Node.js configuration practice. The environment is not serialized, exfiltrated, or sent to any external endpoint. These values are only used locally for Spotify OAuth authentication.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
moodmusic/index.mjs:7

Related contextual observations

Reflected XSS in auth callback error parameter

low risk · medium confidence

When Spotify returns a login error, the error text is shown directly in a popup window without cleaning it first. Someone could craft a link that injects malicious script into that popup. Because this runs on a local server the risk is low, but it is still good practice to sanitize the text.

Technical assessment

Detailed technical wording was omitted by the public report safety filter.

Impact: low · Exploitability: plausible

Developer action: Sanitize or HTML-escape the error query parameter before interpolating it into the response HTML to prevent potential reflected XSS.

Sources:

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity