TavernKeeper Scan Report

mokimoko/SillyTavern-ScenarioCrafter

Commit 51458bb 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 5 low

What this review found

No material or immediate-danger item was identified.

Contextual expected matches (5)

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The scanner saw a network request and a code-execution-like pattern in the same file, but the network call goes to the local SillyTavern server to load lorebook data, and the result is used as text content, never executed as code.

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 a fetch call (line 631) with a code-execution sink in the same representation. The fetch targets the same-origin relative URL '/api/worldinfo/get' using context.getRequestHeaders() for auth headers, which is the standard SillyTavern backend API for loading world info/lorebook data. The response is parsed as JSON and used purely as data (entry content, keys, comments) to build prompt context — it is never passed to eval, Function, or any code execution primitive. The 'generateRaw' calls elsewhere in the file use SillyTavern's built-in LLM generation function, which sends prompts to the user's configured model API and returns text. Both the fetch and generateRaw are expected, proportionate behaviors for a scenario-generation extension whose README explicitly states it pulls in lorebook entries and generates scenarios via the LLM.

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
src/generator.js:631-654

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner flagged this file as potentially obfuscated, but the code is plain, readable JavaScript building a UI modal with no hidden or disguised content.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal on line 1, but the supplied source is fully readable JavaScript: a class definition with clear imports, a constructor initializing state from settings, methods for loading templates, populating character/persona dropdowns, and constructing a jQuery-based modal dialog. No encoded strings, eval, hex escaping, or other obfuscation techniques are present. The code reads host state (characters, personas, chat context) and builds UI elements, which is expected behavior for a scenario-generation extension modal as described in the README. No credential access, external network calls, or concealed execution paths are present.

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.obfuscated-code
File role
production
Source
src/modal.js:1

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension fetches world info book data from the local SillyTavern server to display in a selection popup. This is exactly what the extension is supposed to do, and the data is safely escaped before being shown on screen. There is no dangerous code execution.

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 correlates a fetch call with a perceived code-execution sink. The fetch at line 210 targets '/api/worldinfo/get', the local same-origin SillyTavern server API, sending only a world-book name from the UI select element. The response JSON is parsed and rendered into jQuery template literals, but all user/world-info-controlled values (bookName, title, keys, content) are passed through escapeHtml() before insertion (lines 116, 120, 125-126, 156-160). There is no eval, Function constructor, innerHTML assignment with raw data, or other dynamic code execution sink. The loadWorldBook method first attempts to use SillyTavern's built-in context.loadWorldInfo, falling back to the local API. This is standard, expected behavior for a SillyTavern extension whose stated purpose includes selecting and displaying world info entries. No credentials are transmitted, no external destinations are contacted, and no obfuscation or persistence is present.

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
src/worldinfo-selector.js:182-210

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner flagged this file as potentially obfuscated, but the code is plain, readable JavaScript with no hidden or disguised content.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal on line 1, but the supplied source is fully readable, well-structured JavaScript with clear imports, named functions, comments, and standard SillyTavern extension patterns (jQuery initialization, slash command registration, dynamic imports for settings/modal/generator modules). No encoded strings, eval, hex escaping, string array rotation, or other obfuscation techniques are present. The code performs standard extension initialization: loading a stylesheet, importing dependencies, creating a modal instance, registering slash commands, and adding a UI button to the extensions menu. No concealed execution, credential access, or external network calls are present.

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.obfuscated-code
File role
production
Source
index.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file handles the extension's settings screen: it shows options, remembers your choices, and reads your existing connection profile names so you can pick one. The code is completely open and readable with nothing hidden or disguised, so the automated 'obfuscated code' warning is a false alarm, which even the scanner itself was unsure about.

Technical evidence

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

Contextual assessment: The supplied source is a plainly readable settings module: it defines default extension preferences, builds a configuration panel in the host's extensions drawer through documented DOM insertion, lists the user's existing connection profiles via the host's own slash-command interface, and persists preferences to browser local storage with the host's debounced save helper. There are no encoded strings, packed payloads, dynamic evaluation, hidden execution paths, or other obfuscation constructs anywhere in the file. The obfuscation signal appears to be a false positive on the large, heavily interpolated markup template used to render the settings panel, consistent with the scanner's own low confidence. All data flows are local, user-initiated, and proportionate to the extension's stated purpose of generating and applying roleplay scenarios.

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.obfuscated-code
File role
production
Source
src/settings.js:1

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity