TavernKeeper Scan Report

prolix-oc/SillyTavern-SimTracker

Commit 2ab0c81 Reviewed

1 material concern identified.

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

0 immediate danger 1 material 3 low

What this review found

No material or immediate-danger item was identified.

Expected scanner matches (3)

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The flagged pattern is used to remove plus signs from numeric tracker values before parsing JSON or YAML. It matches the documented data-cleaning purpose and does not show data theft or harmful execution.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.

Contextual assessment: The regular expression is applied by cleanupPlusSignsInContent to caller-supplied tracker content and replaces signed numeric literals with unsigned forms. It is fixed, visible, and used locally during the documented JSON/YAML parsing flow. Although the expression contains nested matching constructs and could warrant performance testing with adversarially large input, the supplied evidence does not demonstrate catastrophic backtracking, attacker-controlled repeated execution, or consequential denial of service.

Impact: none · Exploitability: unlikely

Developer action: none

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged line is ordinary handling of streamed responses from the language-model service. It identifies response records that begin with the standard streaming-data prefix so the extension can display generated tracker information.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: The supplied context shows parsing of server-sent event lines after an LLM request. The code removes the event prefix, parses the resulting JSON, and extracts content fields from several documented provider response shapes. This is consistent with the extension's stated secondary-LLM and tracker-generation purpose. The evidence shows no destination, credential access, covert execution, persistence, or exfiltration at the flagged line. The scanner signal appears to be a generic literal-pattern match rather than evidence of a suspicious link or malicious data flow.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
Rule
javascript.xray.shady-link
File role
production
Source
secondaryLLM.js:388

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

The extension intentionally runs user-provided template code to transform tracker data. This is powerful and could be dangerous if untrusted content can control the template, but the supplied evidence does not show secret theft, external communication, or hidden execution.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The function constructs a JavaScript function from currentTemplateLogic and invokes it with the tracker data. The surrounding purpose explicitly includes customizable templates and bundled template logic, making dynamic execution functionally consistent with the stated feature. The excerpt does not establish the source, persistence, or attacker control of currentTemplateLogic, nor access to credentials or network exfiltration.

Impact: medium · Exploitability: plausible

Developer action: Document the trust boundary for custom template logic, warn users that it executes as JavaScript in the extension context, and restrict or remove it if templates can be supplied by untrusted chat content or remote sources.

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
renderer.js:635

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity