TavernKeeper Scan Report

SenriYuki/SillyTavern-Horae

Commit 7a88598 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 6 low

What this review found

No material or immediate-danger item was identified.

Minor cautions

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

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.

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
core/horaeManager.js:1326

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

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.

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
core/vectorManager.js:2059

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

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.

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
index.js:6633

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

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.

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
index.js:1
Contextual expected matches (1)

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

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.

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
index.js:1912-3604

Related contextual observations

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.

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity