A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
The scanner flagged this code because it contains both a network call and something that looks like it could execute code. However, the network call only contacts the local SillyTavern app to save character card data, and there is no actual code-execution mechanism in the shown code. This is normal extension behavior.
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 rule javascript.download-to-execution correlates a network retrieval primitive with a code execution sink in the same file. The shown code (lines 1912-3604) contains fetch('/api/characters/merge-attributes', ...) which calls the local SillyTavern server API to persist character card table data — a standard, same-origin local API call matching the extension's stated purpose of managing character and chat data. No dynamic code execution sinks (eval, new Function, setTimeout with string, dynamic script injection, etc.) are present in the supplied code. The innerHTML assignments use values from application state (costumes, items) which is DOM rendering, not code execution. The large line range (1692 lines) and broad scanner correlation do not demonstrate a download-to-execution data flow. The fetch destination is local, the data flow does not reach any execution sink, and the behavior is proportionate to the extension's purpose.
innerHTML interpolates state-derived values without escaping
low risk · medium confidence
Some display values from the app state are inserted directly into HTML. In the rare case that these values contain special HTML characters, they might not display correctly or could cause minor rendering issues.
Technical assessment
In updateStatusDisplay, innerHTML is assigned using template literals that interpolate values from application state (e.g., char names, costume descriptions, item holders and locations). These values originate from AI-generated or user-entered content stored in chat metadata. While SillyTavern renders within a single origin and this is a common community extension pattern, direct innerHTML interpolation of state-derived strings without escaping could theoretically allow DOM injection if the content contains HTML markup. This is not a demonstrated attack path in the supplied evidence and is not the scanner's download-to-execution concern, but it is a minor hardening opportunity.
Impact: low · Exploitability: unlikely
Developer action: Consider using textContent or sanitizing values before inserting into innerHTML, especially for values that may originate from AI-generated content, to prevent potential DOM-based issues in edge cases.