TavernKeeper Scan Report

MultihogAurelius/SillyTavern-MultihogDnDFramework

Commit d7b7701 Reviewed

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

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 0 material 127 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

This code uses a regular expression that could, in theory, be slow on very weird text, but the way it's actually used only runs on short lines from the game's notes. There's no evidence it can cause any real problem.

Technical evidence

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

Contextual assessment: The regex `PARTY_MEMBER_COMPACT_HEADER_RX` at line 829 is flagged as potentially vulnerable to ReDoS due to its use of `(.+?)` and an alternation ending with `.*` in a context where lines from a memo are tested. However, the memo content is generated by the application's tracker logic and AI responses, not directly from untrusted external input. The line length in practice is short (character sheet entries), making catastrophic backtracking improbable. No attacker-controlled path to trigger excessive backtracking over arbitrary long input is demonstrated. The scanner's static signal does not account for the constrained usage.

Impact: low · Exploitability: unlikely

Developer action: Consider refactoring the regex to avoid potential backtracking by using a more specific pattern, but the current risk is low and not urgent.

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
memo-processor.js:829

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

The code uses a complex pattern to find HP values in AI output. If someone sent a deliberately confusing line, it might slow down the page temporarily, but this is unlikely to happen in normal use and can only affect your own browser.

Technical evidence

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

Contextual assessment: The regex at line 1489 contains nested optional groups and alternations (e.g., `(?:(.+?):\s*)?([+-]?\d[\d,]*|\?+)` with multiple optional suffixes). Under crafted input with many backtracking opportunities, this could cause catastrophic backtracking in the JavaScript regex engine, leading to a client-side UI freeze (self-DoS). However, the input is AI-generated text that the user controls; a user would have to deliberately craft a payload to cause this, and the impact is limited to the user's own browser. No evidence of exploitation exists.

Impact: low · Exploitability: unlikely

Developer action: Consider simplifying the regex or adding possessive quantifiers or atomic groups to prevent catastrophic backtracking. Alternatively, validate input length before matching or use a simpler parse strategy.

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
renderer.js:1489

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

This line contains a pattern that could theoretically cause the program to slow down if fed a very weirdly-crafted line. However, the lines it processes are short and predictable, so this is not a real danger in practice.

Technical evidence

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

Contextual assessment: The regex `/^(.+?):\s*([\d,]+)(?:\/([\d,]+))?\s*HP/i` at line 1354 was flagged by JS-X-Ray as potentially unsafe due to risk of ReDoS (catastrophic backtracking). The regex is used to parse HP values from structured combat memo lines. While the pattern contains a lazy quantifier `.+?` which could theoretically cause backtracking on pathological input, the actual lines processed are short, expected to match the intended format, and are not attacker-controlled. The regex is applied per-line, not in a loop over unbounded user input, making ReDoS highly unlikely in practice. No concrete exploit or harm has been demonstrated.

Impact: low · Exploitability: unlikely

Developer action: Consider adding a length check on the input line or using a non-backtracking alternative like a simple string split, though the current regex is unlikely to cause issues in practice. No urgent change required.

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
portraits.js:1364

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · high confidence

This is a regex used to check if a URL points to a local server, like your own computer. While the regex could theoretically be slow on very long strings, it's not a real security risk because only the user can set the URL, and normal URLs won't cause problems.

Technical evidence

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

Contextual assessment: The regex at line 367 is used to detect localhost or private IP addresses for the purpose of deciding whether to use a CORS proxy. The pattern contains multiple alternatives with quantified digit groups (e.g., `\d+`), but they are anchored and mutually exclusive, making catastrophic backtracking unlikely in practice. No ReDoS attack surface is demonstrated because the regex is only evaluated on user-configured endpoint URLs, not on attacker-controlled input. The scanner signal 'unsafe-regex' is a conservative static analysis alert that does not reflect actual vulnerability in this context.

Impact: low · Exploitability: unlikely

Developer action: Consider using a simpler check such as `new URL(url).hostname` and comparing against known local patterns to reduce regex complexity and eliminate the static alert.

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
llm-client.js:367

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern used to read HP numbers could cause a temporary slowdown if given a very tricky line, but only you can feed such a line, and it would only affect your own device.

Technical evidence

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

Contextual assessment: The regex at line 1482 (`/^(.+?):\s*([+-]?[\d,]+|\?+)(?:\/([\d,]+|\?+))?(?:\s*HP)?\s*[:|,]?\s*(.*)$/i`) has nested quantifiers and alternations that could allow catastrophic backtracking on crafted input. It is used to parse HP data from AI responses. The input source is under the user's control, so an attacker would need to be the user to exploit this. The impact is a client-side UI freeze. No evidence of real exploitation exists.

Impact: low · Exploitability: unlikely

Developer action: Refactor the regex to reduce backtracking: use atomic groups, possessive quantifiers, or a simpler parsing approach. Consider splitting the match into multiple simpler checks.

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
renderer.js:1482

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern used to detect HP values could potentially cause the browser to freeze if a specially crafted line appears, but only you can produce such a line through the AI, and it would only affect your session.

Technical evidence

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

Contextual assessment: The regex at line 1477 (`/^(.+?):\s*([+-]?[\d,]+|\?+)(?:\/([\d,]+|\?+))?\s*HP\s*[:|,]?\s*(.*)$/i`) contains optional groups and quantifiers that may cause catastrophic backtracking under adversarial input. It is used in the same HP parsing logic as the other flagged regexes. Input originates from AI responses, which are user-controlled. Exploitation requires user self-harm; impact is limited to client-side denial of service. No evidence of real exploitation is present.

Impact: low · Exploitability: unlikely

Developer action: Harden the regex by adding anchors and using non-backtracking constructs. Alternatively, replace the regex with string splitting or simpler patterns.

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
renderer.js:1477

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A text-matching rule in the extension's spell parser could be made to run very slowly by a specially crafted message, potentially freezing your browser for a moment. This is unlikely to happen in normal use and cannot steal data or permanently damage anything.

Technical evidence

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

Contextual assessment: A regular expression used to parse spell-level lines contains nested optional groups and character classes that may permit catastrophic backtracking on crafted input. The pattern is applied to assistant-generated text, which an attacker could influence indirectly via character card content. ReDoS would cause a temporary client-side freeze, a recoverable denial of service. No concrete exploit path or actual performance impact is demonstrated in the supplied evidence.

Impact: low · Exploitability: unlikely

Developer action: Review the regex on line 1719 for ReDoS vulnerabilities. Consider using atomic groups, possessive quantifiers, or input length limits to prevent excessive backtracking.

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
renderer.js:1719

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern used to parse hit dice info might cause a minor slowdown if fed a very long, specially crafted string, but this is unlikely in normal use.

Technical evidence

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

Contextual assessment: The regex at line 540 in renderHDPips (/^([^(]+?)\s*(?:\(([\d,]+)\/([\d,]+)\))?$/) is flagged as potentially unsafe (ReDoS). It uses a lazy quantifier and optional groups but is anchored with ^ and $ and contains no nested quantifiers. Crafting a denial-of-service input would require a long string that fails after many backtracks; typical character data is short. The risk of meaningful denial-of-service is low and recoverable.

Impact: low · Exploitability: unlikely

Developer action: Consider adding input length validation or simplifying the regex to eliminate any backtracking risk, though the current risk is low.

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
renderer.js:554

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

The code uses a regular expression to read hit points from character sheets. The pattern is well-structured and unlikely to cause problems, but a security scanner noted it for review. The worst that could happen is a slight slowdown if someone crafts a tricky character line.

Technical evidence

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

Contextual assessment: The regex at line 2690 in extractPartyVitals is used to parse HP lines from memo block content. It is anchored at start and has a linear pattern with non-greedy capture and optional groups. Although a static scanner flagged it as potentially unsafe, the pattern does not exhibit catastrophic backtracking due to clear delimiters (colon, space, 'HP'). The input is limited to single lines from user- or AI-provided state memos, not arbitrary network or file data. Any performance impact from crafted input would be limited to local rendering slowdown, a recoverable denial-of-service scenario with low harm.

Impact: low · 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
renderer.js:2690

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern in the code that checks for defeated enemies could be abused to slow down or freeze the browser if someone crafts tricky text. It's not a serious security hole but should be fixed to be more efficient.

Technical evidence

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

Contextual assessment: The regular expression RESOLVED_STATUS_RX contains a repeated group with nested alternation: (?:(?:\(\([^)]*\)\)|\([^)]*\))\s*)*. This pattern can cause catastrophic backtracking on crafted input that includes many parentheses and fails to match the final literal keywords 'defeated' or 'dead'. The regex is applied to lines from AI responses, which are influenced by user prompts, making a denial-of-service scenario plausible (browser tab hang or freeze). Impact is limited to client-side performance degradation.

Impact: low · Exploitability: plausible

Developer action: Review and simplify the RESOLVED_STATUS_RX pattern to avoid nested repetition with alternation. Consider using a non-backtracking approach or limiting the number of repeated groups, or rewriting to a single match per occurrence.

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
src/state/combat-persistence.js:1

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a version tag like 'v4' for the checkout action. While it's safer to pin to a specific commit hash, this is a minor issue because the workflow only runs tests and doesn't deploy anything.

Technical evidence

Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.

Contextual assessment: The workflow uses actions/checkout@v4, a mutable major version tag. This is a supply chain best-practice concern but in a CI-only test workflow triggered by push/pull_request, the concrete risk of compromise is low. No secrets or deployments are involved.

Impact: low · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
test
Source
.github/workflows/test.yml:11

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · high confidence

Same as the previous candidate – a regex used to identify local network addresses. It's safe in practice and not exploitable through normal use.

Technical evidence

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

Contextual assessment: This is the same regex pattern as candidate 5c69653a, appearing at line 449 in the fetchOpenAIModels function. The analysis and risk are identical: no demonstrated vulnerability, low impact, and very unlikely to be exploited in the client-side context.

Impact: low · Exploitability: unlikely

Developer action: Apply the same simplification as for line 367 to reduce regex complexity and suppress the static alert.

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
llm-client.js:449

zizmor reported excessive-permissions

Minor caution · medium confidence

The workflow job has more permissions than it actually needs. Since it only runs tests and doesn't write anything, this is a minor issue that doesn't pose a real risk.

Technical evidence

Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.

Contextual assessment: The job does not explicitly set permissions, so it inherits default GitHub Actions permissions which may include write access to contents and issues. However, the workflow only checks out code, installs dependencies, and runs tests. It does not modify repository resources or push artifacts. The risk of unauthorized use of excess permissions is negligible in this context.

Impact: low · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
excessive-permissions
File role
test
Source
.github/workflows/test.yml:8-18

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

Another regular expression used to read HP values for team members on the bench. Like the previous one, it is safe in practice and only flagged by a scanner for review. There is no real danger to your account or computer.

Technical evidence

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

Contextual assessment: The regex at line 2758 in extractBenchedRoster parses HP lines for benched party members. It is similar in structure to line 2690: anchored start, non-greedy capture, optional groups. It is applied to single lines from a memo block and does not have catastrophic backtracking due to explicit anchors and delimiters. The static scanner signal has no demonstrated exploit path. The maximum impact is a local performance degradation, which is a recoverable low-severity issue.

Impact: low · 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
renderer.js:2758

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · high confidence

This is a dice-parsing pattern that looks safe. It could in theory cause a slowdown with a very malicious input, but in practice it's well-protected.

Technical evidence

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

Contextual assessment: The regex at line 253 is used to parse a single die-group token (e.g., '2d6kh1'). It is anchored with ^ and $, and the alternation is not overlapping, making catastrophic backtracking highly improbable. The scanner signal likely arises from the presence of capturing groups and optional nested quantifiers, but these do not create a practical ReDoS risk because the input token is short and the regex is bounded.

Impact: low · 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
narrative-hooks.js:310

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern used to identify currency amounts in your character sheet might be tricked into taking a very long time to process, which could cause the page to hang briefly. This is a performance issue, not a security breach.

Technical evidence

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

Contextual assessment: A regular expression for detecting bare currency amounts uses multiple alternations and repeated quantified groups that could cause catastrophic backtracking on adversarial input. The regex is applied to character sheet lines that ultimately originate from LLM responses. A ReDoS attack would result in temporary client-side unresponsiveness. No evidence of actual exploitation or measurable performance degradation is provided.

Impact: low · Exploitability: unlikely

Developer action: Review the BARE_CURRENCY_RX regex on line 1772 and refactor it to avoid nested quantifiers and backtracking. Consider using a simpler parse approach or limiting input length.

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
renderer.js:1772

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern used to read old-style XP entries in your character sheet might be slightly inefficient and could, in theory, cause a temporary slowdown if given a very unusual input. This is a minor coding concern, not a real threat.

Technical evidence

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

Contextual assessment: A regular expression that parses legacy XP format lines contains an optional non-capturing group with nested optional elements. While less complex than the other flagged patterns, it still introduces a small ReDoS risk. The regex is applied to assistant-generated text. No attacker-controlled input path or actual performance degradation is shown in the evidence.

Impact: low · Exploitability: unlikely

Developer action: Simplify the regex on line 1689 to reduce backtracking potential. Ensure that any user-controlled text processed by this regex has a reasonable length limit.

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
renderer.js:1689

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A pattern for reading spell groups might be slow on unusual input, but normal character data is short enough that this is not a practical concern.

Technical evidence

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

Contextual assessment: The regex at line 554 in renderSpellGroups (/^(Level\s*\d+|Cantrips?)\s*(?:\((\d+)\/(\d+)[^)]*\))?\s*(?::\s*(.+))?$/i) has alternation and nested optional groups. While potentially backtracking on long non-matching input, anchors and typical short spell group strings keep the risk low. A successful ReDoS attack would require attacker-controlled character data exceeding reasonable length, resulting only in a local, recoverable browser slowdown.

Impact: low · Exploitability: unlikely

Developer action: Consider rewriting the regex to avoid the nested optional groups (e.g., using a more linear approach) to eliminate any theoretical backtracking risk.

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
renderer.js:540

zizmor reported unpinned-uses

Minor caution · high confidence

The setup-node action is referenced with a mutable version tag. It's a minor weakness because the workflow only runs tests and doesn't handle sensitive data.

Technical evidence

Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.

Contextual assessment: The workflow uses actions/setup-node@v4, a mutable major version tag. As with the checkout action, this is a supply chain best-practice concern. The workflow is CI-only with no secrets or sensitive operations, so the risk is low.

Impact: low · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
test
Source
.github/workflows/test.yml:12

JavaScript analysis reported javascript.xray.shady-link

Minor caution · high confidence

There is a typo in a URL-checking rule that could prevent some valid image links from being accepted. This is a bug, not a security problem.

Technical evidence

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

Contextual assessment: At line 3489, a regex validation for image URLs is malformed: /^https?:\/\/i.test(capturedUrl) incorrectly requires the URL to contain 'i.test' after the scheme. This breaks the intent of allowing arbitrary http/https URLs, but does not introduce a security vulnerability because the URL is user-provided and only used as an image source in the application. No exfiltration or injection risk is present.

Impact: low · Exploitability: unlikely

Developer action: Fix the regex to correctly match any http or https URL, e.g., /^https?:\/\//i.test(capturedUrl).

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

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

This is the same pattern used again a few lines later, with the same safe-behavior explanation. It's not a real security issue.

Technical evidence

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

Contextual assessment: The same regex as line 1354 appears at line 1364, used in a nearly identical context within the `getEnemyEntities` function to parse combat lines. The same ReDoS concern applies, but again the input is limited to short structured lines from the memo, not arbitrary attacker-controlled data. No demonstrated exposure or concrete harm.

Impact: low · Exploitability: unlikely

Developer action: Consider consolidating the regex into a shared constant or applying the same length-check recommendation as for line 1354. No urgent change required.

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
portraits.js:1354

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A regular expression used to extract XML tag names could cause the browser to freeze if given specially crafted text. An attacker would need to trick you into pasting malicious content into the section editor, which is unlikely in normal use.

Technical evidence

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

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

Impact: low · Exploitability: unlikely

Developer action: Review the cited evidence and confirm the intended behavior.

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
game-systems.js:843

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · high confidence

This dice formula parser might get stuck if you type a very tricky pattern, but it would just freeze your browser tab temporarily. Not a major danger.

Technical evidence

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

Contextual assessment: The tokenization regex at line 310 is more complex with an alternation between a die-group pattern and a plain integer pattern, and it contains nested quantifiers (e.g., `(?:[+-]\d+)*`). While the regex is not globally anchored, it is applied to a whitespace-cleaned formula. A crafted input could cause catastrophic backtracking, resulting in a client-side tab freeze or crash. This constitutes a minor performance weakness because the impact is limited to self-inflicted local denial of service (browser hang). No evidence of exploitation exists, and the input is usually user-provided or LLM-generated, making remote exploitation unlikely.

Impact: low · Exploitability: plausible

Developer action: Consider replacing the complex regex with a simpler tokenization approach (e.g., iterating character-by-character or using a proper parser) to avoid potential ReDoS issues. Alternatively, add input length limits and timeout guards.

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
narrative-hooks.js:253
Expected scanner matches (95)

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This line sets a default URL for connecting to a local AI service running on your computer. It's like pre-filling a text box with a typical address. No data is sent anywhere just by doing this.

Technical evidence

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

Contextual assessment: The 'shady-link' signal flags a string literal at line 188 that is a default URL for an Ollama connection field. This line sets the value of an HTML input to a user-configurable setting defaulting to a localhost address. No network request is made by this assignment; it is only populating a UI form field. The URL is for local Ollama service, which is a legitimate local AI backend. There is no evidence of data exfiltration, remote connection, or attacker-controlled destination. The signal is a false positive for a benign localhost default.

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
src/features/chat/chat-state-loader.js:188

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The security scanner thought this file might be obfuscated, but when we looked at the actual code, it's normal, readable JavaScript. Nothing hidden.

Technical evidence

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

Contextual assessment: The scanner flagged a low-confidence obfuscation signal on line 1, but the complete file source is readable, well-structured JavaScript with standard imports, comments, and named exports. No actual obfuscation, encoding, or concealment is present. The signal is a false positive.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code includes a default address for a local AI service running on your own computer. This is normal and safe; it's not sending your data anywhere else.

Technical evidence

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

Contextual assessment: The scanner flagged a hardcoded HTTP URL at line 3238, which is the default value for the Ollama service URL in an AI settings object. The URL points to localhost:11434, the standard address for a local Ollama instance. The extension allows users to configure a custom Ollama URL via settings, and this default is harmless and expected for local model support. No user data is sent to an external server; the connection is to the user's own machine. There is no malicious intent or data exfiltration.

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
src/ui/panel/panel-builder.js:3238

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged 'link' is just a made-up data URL used in a test to check that the extension correctly handles images in chat history. It's not an actual link to a website, so there is no security concern.

Technical evidence

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

Contextual assessment: The scanner flagged a static data URL ('data:image/png;base64,abc') used in a test file to simulate multimodal assistant content. The URL is a local base64-encoded image, not an external network endpoint, and appears only in a unit test that verifies the extension's prompt history filtering preserves image parts. There is no network request or data exfiltration; the string is hardcoded test data. This signal is a false positive.

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
test
Source
tests/cyoa-prompt-history.test.js:39

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

Detailed wording was omitted by the public report safety filter.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
src/state/defaults.js:520

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting telling the extension where to find a local AI model on your own computer. It's like having a default printer set to 'localhost' – nothing leaves your machine unless you change the address.

Technical evidence

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

Contextual assessment: The flagged URL at line 143 is a default setting for the character creation Ollama connection. It points to localhost:11434, which is the standard local address for an Ollama API server. This is a configuration default, not a runtime network call. The project legitimately supports connecting to a local Ollama instance for AI roleplay. No evidence of data exfiltration, malicious destination, or concealed behavior. The 'shady-link' scanner signal is a false positive in this context.

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
src/state/defaults.js:143

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This is a harmless test that checks how settings are organized. The regex used to find div tags is safe and cannot be used by an attacker because it only runs on the extension's own files during testing.

Technical evidence

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

Contextual assessment: The regex on line 8 matches HTML div opening and closing tags. The pattern does not contain nested quantifiers or overlapping alternations that would cause catastrophic backtracking. Even if a ReDoS risk existed, the regex is applied to a static file read from the extension's own settings.html during a test, not to attacker-supplied input. No exploitation path exists.

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
test
Source
tests/settings-drawers.test.js:8

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This line sets a default local address for an AI server that runs on your own computer. It's only used if you haven't set your own server address. This is a normal and expected part of how the extension connects to AI models.

Technical evidence

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

Contextual assessment: The flagged line sets a default Ollama URL to localhost:11434, a standard local AI server endpoint. This is a fallback used only when no user-configured URL is provided. The extension requires connectivity to AI backends for its core RPG tracking and lorebook features. There is no evidence that this default targets an external or malicious server, and no data exfiltration path is demonstrated. The JS-X-Ray signal is a static literal match with low severity and medium confidence, not a confirmed vulnerability.

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
src/ui/panel/panel-builder.js:1966

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · low confidence

A security scanner found a possible suspicious link in this file, but we can't see what it is because the code wasn't fully provided. The file stores settings for the extension, including web addresses for AI services, which is normal for this type of extension. There's no sign that anything bad is happening.

Technical evidence

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

Contextual assessment: The scanner flagged a pattern at line 234, but the actual source code at this line was not provided in the review evidence. Based on the file's purpose—managing profile snapshots including user-configured API endpoints and keys—the flag may correspond to a legitimate URL string (e.g., a default Ollama endpoint or user-provided API URL). No exfiltration or unauthorized network access is evident from the supplied code. Without the actual code, no concrete security concern can be confirmed.

Impact: none · Exploitability: unlikely

Developer action: No action needed based on available evidence. If the flagged lines contain hardcoded URLs to external services not documented, consider verifying they are appropriate.

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
src/state/profiles.js:234

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The extension stores a default web address for a local AI image generator (Ollama) that runs on your own computer. This is a normal setting for tools like this, not a security risk.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
index.js:10714

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · medium confidence

This code checks if a piece of text looks like a boring system receipt so it can be replaced with more interesting commentary. The pattern used is simple and won't cause any performance problems.

Technical evidence

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

Contextual assessment: The flagged regex at line 1126 is a simple, anchored pattern used to detect dry receipt text in model output. It contains no nested quantifiers, overlapping alternations, or user-controlled input that could cause catastrophic backtracking. The JS-X-Ray 'unsafe-regex' signal is a false positive; the pattern is safe and performs as intended.

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
adventure-companion.js:1126

Dependency advisory GHSA-2v37-7h3g-55p8:pkg:c301f7c72c558e741e2a83a0 applies

Expected behavior · high confidence

This vulnerable package is only used during development (testing), not when you use the extension. It does not affect the security of the extension in SillyTavern.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-2v37-7h3g-55p8:pkg:c301f7c72c558e741e2a83a0 to a dependency declared by this repository.

Contextual assessment: The vulnerable nanoid package at version 3.3.16 is a transitive dependency of the dev-only test framework vitest. All packages in the lockfile are marked as dev dependencies and are not used at runtime. There is no demonstrated runtime reachability or attacker-controlled path to the vulnerable code.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
osv-scanner 2.4.0
Rule
GHSA-2v37-7h3g-55p8:pkg:c301f7c72c558e741e2a83a0
File role
production
Source
package-lock.json

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · low confidence

The scanner thought this file might contain hidden or confusing code, but it's actually a normal test file with clear, readable JavaScript. No secret or dangerous code was found.

Technical evidence

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

Contextual assessment: The scanner rule 'javascript.xray.obfuscated-code' was triggered on line 1 of a test file, but the actual source code is a plain, unobfuscated JavaScript test file using standard imports and test patterns. The file contains no encoding, minification, or suspicious strings—only clear test logic with descriptive variable names, comments, and standard framework calls (vitest). The scanner signal is a false positive; there is no obfuscated code 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
Rule
javascript.xray.obfuscated-code
File role
test
Source
tests/memo-processor-party-markers.test.js:1

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This line just stores the default address for the local AI image generator (Ollama) — it's your own computer, not a remote server. Nothing dangerous.

Technical evidence

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

Contextual assessment: The flagged string at line 1232 is a default Ollama API URL pointing to localhost port 11434. This is a standard local endpoint for running LLMs locally, not an external or exfiltrative destination. No credential or sensitive data flows to this address by default; the user must explicitly configure it. The scanner signal 'shady-link' is a false positive in this context.

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
src/state/defaults.js:1232

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file is code for saving and loading game settings in the RPG extension. The scanner thought some code might be hidden, but looking at the actual code, everything is plain and readable. It does what the extension says it does and has no hidden tricks.

Technical evidence

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

Contextual assessment: The code in file is fully readable, well-commented standard JavaScript with no obfuscation techniques. The JS-X-Ray scanner flagged an obfuscated-code signal at low confidence, but the provided source shows no minification, encoded strings, or hidden logic. All function names and data flows are clear. The file exports helper functions for saving, loading, exporting, and importing game configuration cartridges—a feature described in the project's README. No actual obfuscation or concealed execution is present. The signal is a false positive.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

A security scanner flagged a currency-parsing pattern in the code, but looking at the actual code, the pattern is straightforward and does not create a security risk. It simply looks for numbers followed by currency names like 'GP' or 'dollar'.

Technical evidence

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

Contextual assessment: The regular expression at line 1313 is used to parse currency strings with a suffix unit (e.g., '10 GP'). The pattern contains an alternation but no nested quantifiers or overlapping alternatives that would cause catastrophic backtracking. The `\b` anchor and simple numeric capture also limit risk. JS-X-Ray's detection of 'unsafe-regex' is a heuristic that does not account for the actual structure; no denial-of-service or security vulnerability is evident from the supplied source.

Impact: none · Exploitability: unlikely

Developer action: none – the regex is safe as written. If desired, a performance linter may suggest anchoring and non-capturing groups, but no change is required for security.

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
renderer.js:1313

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code is written in plain, understandable JavaScript. It does exactly what the extension promises: helps create RPG characters. There's nothing hidden or tricky here.

Technical evidence

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

Contextual assessment: The JavaScript source is fully readable, well-structured ES module code. It contains imports, constants, and exported functions for building character generation prompts and managing form state. No obfuscation, encoding, or concealment techniques are present. The scanner's 'obfuscated-code' signal is a false positive, likely triggered by template literals or long string constants that resemble minified output, but the code is in fact clear and intentional for its stated 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
Rule
javascript.xray.obfuscated-code
File role
production
Source
character-creator.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file was flagged as possibly containing hidden or scrambled code, but it's actually plain, readable code just like any normal web extension debug tool. There's no security problem here.

Technical evidence

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

Contextual assessment: The scanner flagged this file as obfuscated code (high severity, low confidence), but the complete source is plain, readable JavaScript with clear comments and documentation. The file is a debug instrumentation module for a swipe scheduler and does not contain any obfuscation, encoded strings, or hidden functionality. The static analysis signal is a false positive.

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

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file just stores game rules and example text. It's not hiding anything. The security scan was a mistake.

Technical evidence

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

Contextual assessment: The file file contains only static data definitions, template literals for game prompts, and small helper functions. No obfuscation, concealed execution, or hidden logic is present. The scanner's obfuscated-code signal is a false positive; the code is clear, well-commented, and serves its stated purpose of providing game constants.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The security scanner flagged a line in the code because it thought there might be a bad link. But that line just checks if an image starts with 'data:image/', which is a normal way to handle pictures stored inside the chat. The extension makes network calls only to the SillyTavern server to save or delete images, which is exactly what it should do.

Technical evidence

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

Contextual assessment: The static analysis signal 'shady-link' triggered on line 59, which contains the string 'data:image/' in the `isPortraitDataUrl` function. This function checks if a source is an inline data URL, a legitimate pattern for identifying embedded images. No actual network link or external URL is present at that line. The extension's network activity consists of authenticated fetch calls to the SillyTavern API endpoints `/api/images/upload` and `/api/images/delete` for managing portrait files, which is proportional to its stated purpose of storing portraits locally. No evidence of exfiltration or malicious destinations.

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
portrait-storage.js:59

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This regular expression is used to fix timestamps in the game's prompt instructions. It only runs on the extension's own templates, not on user or AI input, so there is no practical security concern.

Technical evidence

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

Contextual assessment: The regex `/HH:MM(?:\s+AM\/PM)+/g` on line 354 is a static literal pattern used in the `adjustPromptTimestamps` function to collapse repeated time suffixes in prompt templates. It is not constructed from untrusted input, and the pattern is simple with no nested quantifiers that would cause catastrophic backtracking on realistic input. The function operates on developer-defined prompt templates, not attacker-controlled data, so no ReDoS risk is demonstrated.

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
src/state/router-utils.js:354

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is another default setting for the local AI model used to manage the game world — it talks to your own computer, not the internet.

Technical evidence

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

Contextual assessment: The flagged string at line 1312 is a default Ollama API URL for world model generation, pointing to localhost port 11434. This is a normal local endpoint for self-hosted LLM inference. No external data transmission occurs by default. The scanner's 'shady-link' rule does not account for legitimate localhost usage.

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
src/state/defaults.js:1312

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This file lets you set up connections to AI models for creating characters. The one 'suspicious' line it flagged is just a standard address for a local AI program (Ollama), which is perfectly normal for this kind of tool. There's nothing dangerous happening.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
character-creation-connection.js:100

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The security scanner thought a decorative line of dashes might be hidden code, but looking at the file shows it's just a normal comment to separate sections.

Technical evidence

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

Contextual assessment: The scanner flagged line 1 (a decorative ASCII separator comment) as potentially obfuscated code. Inspection of the full source shows no obfuscation; all code is standard JavaScript with clear structure, comments, and imports. This is a false positive.

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

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code that was flagged as 'obfuscated' is actually normal, readable code for displaying game character sheets and status bars. There is nothing hidden or harmful here.

Technical evidence

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

Contextual assessment: The static-analysis signal for obfuscated code is a false positive. The supplied source of file is clean, well-documented JavaScript that performs HTML string production and localStorage helpers for a D&D-style game state tracker. No obfuscation, concealed execution, or data exfiltration is present. The scanner's low confidence aligns with the visible code quality.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

Detailed wording was omitted by the public report safety filter.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
portraits.js:385

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a harmless default setting that points to the user's own computer for running AI models. It is not a security threat.

Technical evidence

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

Contextual assessment: The flagged line assigns a default Ollama URL of localhost:11434, a standard configuration for local AI model serving. The user can override this URL via extension settings. No evidence of malicious intent, data exfiltration, or unauthorized network access is present. The scanner signal is based on a heuristic for hardcoded URLs, but this default is proportional to the extension's stated purpose of connecting to local or remote AI providers.

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
src/ui/panel/panel-builder.js:3339

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · medium confidence

This code is reading a line of text that describes a character's HP, like 'Goblin: 12/12 HP'. The way it finds that pattern is normal and safe for a roleplaying game tool.

Technical evidence

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

Contextual assessment: The regex at line 1195 is used to parse HP-format lines from the PARTY block in the state memo. It is a straightforward pattern that matches common RPG stat formats. While JS-X-Ray flagged it as unsafe-regex, no ReDoS vulnerability is demonstrated given the input source (user-controlled state memo) and the simple structure of the regex. This is standard text-parsing behavior for the extension's intended functionality.

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
portraits.js:1195

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

A security scanner thought this file might contain hidden confusing code, but looking at the actual code it's clear and normal. No problem here.

Technical evidence

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

Contextual assessment: JS-X-Ray flagged obfuscated code on line 1, but the supplied source of file is fully readable, well-structured JavaScript without any obfuscation, encoding, or concealed execution. The scanner confidence was low and the signal is a false positive; no concealed or dangerous behavior exists in this file.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · medium confidence

This code checks if a portrait image was created inside the browser or fetched from an external service, so it can handle it correctly. That's normal for an app that makes images.

Technical evidence

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

Contextual assessment: The line checks whether an image URL starts with 'data:' to decide whether to scale it client-side or use it directly. The URL comes from an image generation promise whose source is the user-configured generation API. This is a legitimate check for handling both client-side generated data URLs and remote API URLs. No evidence of exfiltration or malicious destination 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
Rule
javascript.xray.shady-link
File role
production
Source
portraits.js:1040

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is the default address for the 'Adventure Companion' feature to talk to a local AI model on your own computer. It's harmless – just a preset, not an actual connection.

Technical evidence

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

Contextual assessment: The flagged URL at line 134 is a default setting for the adventure companion's Ollama connection, again pointing to localhost:11434. This is a legitimate configuration default for connecting to a local AI model server. There is no evidence of any actual network request, data transmission, or external destination. The project's stated purpose includes AI-powered roleplay features that require local model access. The scanner signal is a false positive.

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
src/state/defaults.js:134

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · medium confidence

Same HP-parsing pattern as before. It's just extracting names from a party list. Nothing risky.

Technical evidence

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

Contextual assessment: This regex at line 1135 is identical to the one used elsewhere to parse HP lines from the PARTY block. It is part of the `getPartyMembers` function and is essential for extracting character names. The regex pattern is simple and not prone to catastrophic backtracking in practical use. No security concern.

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
portraits.js:1135

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code sets a default address for a local AI model service (Ollama). This is normal and expected for an extension that uses AI to generate images. There's no sign that this address is being used for anything harmful.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
index.js:6460

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code includes a default address for a local AI service, which is normal for this type of extension. No evidence of anything harmful.

Technical evidence

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

Contextual assessment: The flagged line sets a default Ollama URL to localhost, which is standard for local LLM services. No malicious or external link is present. The code provides user-configurable inputs for API endpoints and keys, consistent with the project's purpose of connecting to AI models.

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
character-creation-connection.js:15

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

A security scanner thought a line in a test file might be hidden code, but looking at the actual file shows it's just normal test setup with imports. There is nothing suspicious or hidden.

Technical evidence

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

Contextual assessment: The scanner flagged line 1 of a test file as obfuscated code, but the full source shows standard ES module imports, vitest test functions, and no obfuscation patterns. The scanner confidence is low and matched literal values were not retained. Static analysis heuristic likely triggered on unrelated syntax. No runtime code is obfuscated.

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.obfuscated-code
File role
test
Source
tests/display-groups.test.js:1

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · low confidence

A security scanner found a possible suspicious link in this file, but we can't see what it is because the code wasn't fully provided. The file stores settings for the extension, including web addresses for AI services, which is normal for this type of extension. There's no sign that anything bad is happening.

Technical evidence

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

Contextual assessment: The scanner flagged a pattern at line 218, but the actual source code at this line was not provided in the review evidence. Based on the file's purpose—managing profile snapshots including user-configured API endpoints and keys—the flag may correspond to a legitimate URL string (e.g., a default Ollama endpoint or user-provided API URL). No exfiltration or unauthorized network access is evident from the supplied code. Without the actual code, no concrete security concern can be confirmed.

Impact: none · Exploitability: unlikely

Developer action: No action needed based on available evidence. If the flagged lines contain hardcoded URLs to external services not documented, consider verifying they are appropriate.

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
src/state/profiles.js:218

JavaScript analysis reported javascript.download-to-execution

Expected behavior · low confidence

The scanner thought the extension might download and run code, but looking at the actual code, there is no sign of that. The extension simply imports modules and defines functions, which is normal for any program.

Technical evidence

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

Contextual assessment: The scanner flagged a correlation between network retrieval and a code execution sink, but the supplied evidence does not show any actual network-fetch-and-execute flow. The code shown consists of standard module imports, function definitions, and internal state assignments. No eval, new Function, or similar dynamic execution sink is present in the visible lines. The extension's purpose includes connecting to LLM APIs and generating images, so network requests are expected and proportionate, but no evidence of executing remotely fetched code is demonstrated.

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.download-to-execution
File role
production
Source
index.js:59-241

Dependency advisory GHSA-fxqj-rqcc-2cmp:pkg:19e09cf566459df2b32f4e11 applies

Expected behavior · high confidence

This vulnerable package is only used during development (testing), not when you use the extension. It does not affect the security of the extension in SillyTavern.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-fxqj-rqcc-2cmp:pkg:19e09cf566459df2b32f4e11 to a dependency declared by this repository.

Contextual assessment: The vulnerable postcss package at version 8.5.22 is a transitive dependency of vite, which is a dev-only dependency for the test runner vitest. Postcss is not shipped to the extension's runtime and has no runtime reachability. The vulnerability poses no risk to extension users.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
osv-scanner 2.4.0
Rule
GHSA-fxqj-rqcc-2cmp:pkg:19e09cf566459df2b32f4e11
File role
production
Source
package-lock.json

zizmor reported artipacked

Expected behavior · high confidence

The scanner warning about credentials being saved in build artifacts doesn't apply here because this workflow never creates or uploads any artifacts. It just runs tests.

Technical evidence

Scanner reason: zizmor matched workflow-security rule artipacked in this repository.

Contextual assessment: The zizmor artipacked rule flags credential persistence through artifacts, but the workflow contains no upload-artifact step. Only actions/checkout, setup-node, npm ci, and npm test are present. No artifact creation or upload occurs, so credential persistence is not demonstrated.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
artipacked
File role
test
Source
.github/workflows/test.yml:11

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This pattern is used to read health points from game text. It works as intended and is not vulnerable to performance attacks.

Technical evidence

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

Contextual assessment: The regular expression COMBATANT_HP_RX is anchored at start and end, uses non-greedy quantifiers, and lacks nested repetition or alternation that could cause catastrophic backtracking. It matches typical combatant HP lines and does not present a denial-of-service risk under normal or crafted input derived from AI responses.

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
src/state/combat-persistence.js:3

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This pattern identifies combat group headers. It works correctly and is not a performance risk.

Technical evidence

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

Contextual assessment: The regular expression COMBAT_SIDE_HEADER_RX is simple, anchored, and contains no nested quantifiers or alternation that could cause backtracking issues. It safely matches combat side headers like 'ENEMIES:' or 'NON-PARTY ALLIES'.

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
src/state/combat-persistence.js:2

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · medium confidence

This is another HP-parsing line, reading the character's name and health. It's normal for the game tracker.

Technical evidence

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

Contextual assessment: The line at 1068 contains the same HP-parsing regex used in `getCharacterBlockNames`. It safely extracts character names from the CHARACTER block of the state memo. The scanner finding is generic and does not indicate a real vulnerability in this context.

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
portraits.js:1068

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged line simply handles an image URL that comes from the image generation service the user chose. The user sees a preview and must click 'Apply' before it is used, so this is normal behavior and not a security issue.

Technical evidence

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

Contextual assessment: Line 950 handles an image URL returned from either the native SillyTavern Image Generation extension or the Pollinations.ai API. If the URL is a data URL (base64), it is scaled; otherwise it is used directly. The URL originates from a service the user configured (Pollinations API key) or from the built-in SillyTavern generation, and the user is shown a preview and must approve before the URL is applied. There is no evidence of exfiltration, malicious destination, or attacker-controlled input; the 'shady-link' signal is a false positive due to the absence of URL validation in a context where validation is not required for expected functionality.

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
portraits.js:950

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code sets a default address for a local AI model service that runs on your own computer. This is normal and expected for this type of extension.

Technical evidence

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

Contextual assessment: The flagged line is a default configuration value for a local Ollama API endpoint, set to localhost port 11434. This is a standard default for Ollama, a popular local model serving tool. The URL points only to the user's own machine and does not involve any external network destination. The scanner rule 'shady-link' is a heuristic that flags localhost URLs generically, but in this context there is no data flow to an attacker-controlled host, no exfiltration, and no concealment. The file is a production defaults file, and this value is visible in source and serves the extension's stated purpose of connecting to a locally running model for RPG state tracking and lore management. No malicious or unexpected behavior is demonstrated.

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
src/state/defaults.js:648

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This code uses a simple pattern to find a percentage number in a CSS style. The pattern is safe because it only looks at styles the program itself creates, not at text typed by a user or a chatbot. There is no risk of a slowdown or crash.

Technical evidence

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

Contextual assessment: The regex at line 347 (`/(\d+(?:\.\d+)?)%/`) is used to extract a percentage value from the inline CSS `background` property of a clock icon DOM element. The input (`wrap.style.background`) is a CSS value generated and controlled by the extension itself or by the user choosing colors via a color picker. It is not sourced from user-provided text, chat messages, or external untrusted input. The regex is simple, with no nested quantifiers or catastrophic backtracking patterns, and operates on a short, predictable string. No ReDoS vulnerability exists, and no security-relevant data flow is affected.

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
theme-manager.js:347

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default address for a local AI program (Ollama) running on your own computer. It's not dangerous — it's like setting a default printer to 'local printer'. The extension needs this to work if you haven't set up a custom address.

Technical evidence

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

Contextual assessment: The flagged line sets a default Ollama URL to localhost:11434. This is a standard default for connecting to a local LLM server, entirely consistent with the extension's purpose of making AI calls to a locally-run model. There is no data exfiltration, remote server communication, or any shady behavior. The URL is hardcoded only as a fallback when the user hasn't configured their own Ollama URL. The scanner's 'shady-link' signal is a false positive for this context.

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
game-systems.js:178

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This line sets a default URL for connecting to a local AI service running on your computer. It's like pre-filling a text box with a typical address. No data is sent anywhere just by doing this.

Technical evidence

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

Contextual assessment: The 'shady-link' signal flags a string literal at line 178 that is a default URL for an Ollama connection field. This line sets the value of an HTML input to a user-configurable setting defaulting to a localhost address. No network request is made by this assignment; it is only populating a UI form field. The URL is for local Ollama service, which is a legitimate local AI backend. There is no evidence of data exfiltration, remote connection, or attacker-controlled destination. The signal is a false positive for a benign localhost default.

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
src/features/chat/chat-state-loader.js:178

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This code checks whether an image URL is a valid web address (http or https) before using it. That's a normal safety check for a feature that lets users set custom pictures, not a sign of anything shady.

Technical evidence

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

Contextual assessment: The scanner signal 'shady-link' at line 3663 corresponds to a regex test (/^https?:\/\//i) used within a popup handler for setting a location image URL. The code validates that a user-provided capturedUrl is either a data:image/ string or an http/https URL before applying it as an image source via localApply. This is part of the UI flow for location image settings, where users can paste a URL or drag/drop an image. There is no evidence of exfiltration, concealed network access, or malicious intent. The extension legitimately allows users to set custom images, and the URL validation is appropriate for that feature. The signal is a false positive in this context.

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

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This is a normal pattern used to recognize commands from the AI's text. It's written safely and wouldn't cause crashes or security issues even if someone tried to mess with it.

Technical evidence

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

Contextual assessment: The regex BENCH_CMD_RX on line 592 parses AI output for [BENCH] commands. It uses anchors (^ and $), a non-greedy capture (.+?), and a character class for em/en dash/hyphen. The pattern does not exhibit catastrophic backtracking: the non-greedy quantifier and the terminal $ prevent excessive internal searching. Even in the presence of a maliciously crafted AI response, the worst outcome is a slight slowdown on a single short line. The scanner signal is a precautionary static analysis flag, not a concrete vulnerability.

Impact: low · 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
memo-processor.js:592

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a fake web address used only for testing the extension's settings code. It's not a real connection and poses no safety concern.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
test
Source
tests/character-creation-connection.test.js:53

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a fake URL used in a test to check that the extension handles its settings correctly. No real connection happens, so it's not a security issue.

Technical evidence

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

Contextual assessment: The URL at line 149 is a placeholder test value used to verify parameter mapping in a unit test. No actual network request is made; the test file uses mocked dependencies and does not reach out to any external service. The string is a fake Ollama URL intended only to confirm that the extension correctly routes the dedicated connection settings. There is no credential or sensitive data flow, and the test environment isolates all calls.

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
test
Source
tests/adventure-companion.test.js:149

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code includes a common default address for a local AI service that runs on your own computer. This is normal and not a security concern.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
src/ui/panel/panel-builder.js:3520

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

A security scanner thought this file might contain hidden code, but looking at the actual code shows it is clean and normal. It just creates popup menus and handles settings—typical for a game framework extension.

Technical evidence

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

Contextual assessment: The JS-X-Ray static analysis rule 'obfuscated-code' flagged this file, but the supplied source shows no obfuscation, encoded strings, eval, or dynamic code generation. The file contains standard JavaScript with template literals for HTML construction, event listeners, and function exports—all expected for a UI-editing component in a SillyTavern extension. The scanner confidence was low, and the code is transparent and readable.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The extension uses a regular expression to find numeric tab stops (like '|50') in text. The expression is safe because it only processes text that the user or AI provides, and it cannot be tricked into consuming too much processing time. This is a normal part of how the extension formats markers.

Technical evidence

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

Contextual assessment: The candidate flags a hardcoded regex at line 737 used to parse numeric tab-stop markers (e.g., '|50') from pre-text in marker-tokenized lines. The regex `/^(.*?)\s*\|(\d+(?:\.\d+)?)\s*$/` is a fixed pattern that does not incorporate any user-supplied regex fragment, and its input (segment.preText) originates from trimmed portions of AI-generated or user-authored content. The lazy quantifier `(.*?)` could in theory cause backtracking on a crafted long string of spaces and pipes, but the input length is bounded by typical message sizes and the pattern is anchored, making catastrophic backtracking implausible. No actual ReDoS vulnerability or performance degradation is demonstrated in the supplied evidence.

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
renderer.js:737

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file contains normal, readable code for handling user interface events. There is no hidden or confusing code.

Technical evidence

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

Contextual assessment: The source code is clean, well-structured JavaScript with standard ES module imports, clear variable names, comments, and no obfuscation, minification, or encoded strings. The scanner signal is a false positive; static analysis may have flagged patterns that are benign in context (e.g., dynamic property access or template literals), but no actual obfuscation 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
Rule
javascript.xray.obfuscated-code
File role
production
Source
src/ui/panel/card-events.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

A security scanner flagged this file for possibly containing hidden code, but looking at the actual code shows it's normal and readable—there's no hidden or tricky code here. It's just regular JavaScript.

Technical evidence

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

Contextual assessment: The scanner rule 'javascript.xray.obfuscated-code' triggered a static signal at line 1 with low confidence, but the full source code of file (provided in the evidence expansions) is clean, well-structured, and contains no obfuscated code. The file consists of standard ES module imports, exports, and readable functions for portrait management. The scanner result is a false positive; no obscured or malicious code exists in this file.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · low confidence

A scanner found a vague suspicious-link warning in the extension code, but the code around that spot only saves settings to the browser's local storage, which is normal. There is no sign of a dangerous link or data being sent to a bad place.

Technical evidence

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

Contextual assessment: The scanner flagged a 'shady-link' signal at line 505, but the provided code shows only local storage read/write operations and preference manipulation at that location. No external URL or suspicious network destination is visible in the evidence. The literal value was not retained by the scanner, and the evidence does not demonstrate any harmful behavior.

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
adventure-companion.js:505

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · low confidence

The scanner thought some code might be hidden or scrambled, but the actual code is straightforward and easy to read. There is no hidden or tricky code here.

Technical evidence

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

Contextual assessment: The scanner detected a static signal for obfuscated code with low confidence. The supplied source code is clear and readable, containing standard ES module imports, function declarations, and template literals. No obfuscated strings, encoded payloads, or concealed logic are visible. This appears to be a false positive from the static analysis tool.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This part of the code lets you enter the web address of an AI server (like Ollama) into the settings. That's expected for an extension that uses AI to play D&D. It doesn't send your data anywhere harmful.

Technical evidence

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

Contextual assessment: The line at position 6694 is a jQuery input event handler that stores the value entered by the user into the worldOllamaUrl setting. This is part of a legitimate settings UI that allows the user to configure the URL for an Ollama server (a local AI inference server) to be used by the extension's world progression system. The extension's purpose is a D&D game framework that may connect to external model APIs for state tracking and lore management. Storing user-provided API endpoints and keys is expected and visible behavior. The scanner rule 'shady-link' flagged a URL pattern, but there is no evidence of exfiltration or unauthorized data transmission. The URL is only used to call fetchOllamaModels which lists models from the specified server. No malicious activity is demonstrated.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting for connecting to a local AI program (Ollama) running on your own computer. It's not a security problem.

Technical evidence

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

Contextual assessment: The flagged string is a default localhost URL for Ollama, a local AI service. This extension connects to user-configurable model endpoints; the default is benign and standard practice for local LLM integration. No evidence of malicious network destination or exfiltration exists.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

Another fake test URL to simulate settings for the State Tracker. No actual network call occurs.

Technical evidence

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

Contextual assessment: Same as candidate 9b82bca6e... but at line 132, this is a test fixture URL for the State Tracker connection. It is never used to initiate a network request; the test only asserts that the mapping function produces correct output. No real host is contacted. The test file's mocked environment ensures no external reachability.

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
test
Source
tests/adventure-companion.test.js:132

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This regular expression helps format time displays in the game's prompts. It only touches the extension's own templates, not any outside content, so it's not a security issue.

Technical evidence

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

Contextual assessment: The regex `/HH:MM(?:\s+AM\/PM)*/g` on line 355 is a static literal pattern used in the `adjustPromptTimestamps` function to replace time placeholders with a 12-hour clock suffix. It is not constructed from untrusted input, and the `*` quantifier does not introduce catastrophic backtracking because the preceding group is fixed and bounded. The function only processes developer-defined prompt templates, so no attacker-controlled input can reach this regex.

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
src/state/router-utils.js:355

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code checks that the image URL you provide is a valid link starting with http or https, which is normal and expected for a feature that lets you set custom backgrounds. It's not doing anything suspicious.

Technical evidence

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

Contextual assessment: The flagged line (5680) is part of a validation block that accepts only data:image/ or http/https URL schemes for user-configured panel background images. No network request originates from this check; the validated value is later used in a CSS background-image property. The regex is a whitelist, not a suspicious pattern. This is normal input validation for a user-facing image URL setting.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · medium confidence

The flagged line is part of normal image processing in the RPG extension. It is not doing anything suspicious.

Technical evidence

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

Contextual assessment: Line 3536 is a call to scaleImageToLandscape within an image-handling function. No concrete shady link or URL is present in the evidence; the scanner signal likely originates from nearby user-supplied URL handling that is part of the extension's expected portrait and location image management. No exfiltration or unauthorized network access is demonstrated.

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

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file just contains a list of character sheet sections like 'Species', 'Body', 'Personality', etc., with descriptions and icons. There is nothing hidden or dangerous about it.

Technical evidence

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

Contextual assessment: The file exports static arrays of section definitions and a module name constant. The source code is plain, well-commented JavaScript with no obfuscation, encoded strings, dynamic evaluation, or hidden execution paths. The JS-X-Ray 'obfuscated-code' signal at line 1 is a false positive triggered by the low confidence heuristic; the actual content is fully readable and serves the declared purpose of defining NPC/PC section schemas for an RPG extension.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The extension sets a default address for connecting to a local AI model server (Ollama). This is normal and expected – many AI tools do this so you don't have to type the full address every time. There is no sign that this address is used for anything harmful.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
index.js:6816

JavaScript analysis reported javascript.download-to-execution

Expected behavior · low confidence

The scanner flagged that the extension both downloads data and runs code, which could be dangerous if combined unsafely. But looking at the actual code, it only fetches its own help file and sends messages to the AI model you set up. It does not run downloaded code, so this is normal for what the extension does.

Technical evidence

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

Contextual assessment: The file contains network retrieval primitives (LLM API calls, local documentation fetch) and code execution possibilities (tool call handling, DOM updates). However, the supplied evidence does not demonstrate a path where an attacker-controlled network response leads to arbitrary code execution or harmful dynamic code execution. The documentation fetch is from a fixed local path. The LLM API calls are to user-configured endpoints. No eval or immediate code execution sink correlated with network input is shown.

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.download-to-execution
File role
production
Source
adventure-companion.js:14-700

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file builds the visual panel for the RPG tracker. It's just a regular JavaScript function that creates HTML using template strings. There's nothing hidden or tricky — the scanner made a mistake.

Technical evidence

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

Contextual assessment: The file panel-markup.js is a production UI module that uses a template literal to generate static HTML for the extension's panel. This is a standard JavaScript pattern and contains no obfuscation, encoding, or concealed logic. The scanner's 'obfuscated-code' signal is a false positive — likely triggered by the embedded template expressions (${}) inside the long string, which are normal JavaScript template-literal syntax for injecting settings values into the markup. All visible code is human-readable, intended to build a UI component for a D&D framework extension.

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

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

Another flagged currency pattern that just looks for a dollar/euro/pound sign in front of a number. It's not dangerous.

Technical evidence

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

Contextual assessment: The regular expression at line 1315 is used to parse currency strings with a prefix symbol (e.g., '$10'). It contains a simple character class for three currency symbols followed by digits with optional decimal. There are no nested quantifiers or problematic alternations that would enable ReDoS. The scanner heuristic does not indicate a credible vulnerability in this context.

Impact: none · Exploitability: unlikely

Developer action: none – the regex is safe. No action needed.

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
renderer.js:1315

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The flagged regular expression is a simple pattern to remove a 'Current Time:' prefix from a string. It's safe and cannot be exploited for a denial of service or other attack.

Technical evidence

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

Contextual assessment: The regex /^(?:current\s+)?time:\s*/i on line 155 is a simple, linear pattern used to strip a prefix from time strings. It contains no nested quantifiers, alternations with overlapping, or other constructs that would cause catastrophic backtracking. The pattern is safe and performs in O(n) time. No security risk from this regex.

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
memo-processor.js:155

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code includes a common default address for a local AI service that runs on your own computer. This is normal and not a security concern.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
src/ui/panel/panel-builder.js:3450

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This warning is about a text replacement that changes D&D dice rules inside the AI's instructions. The replacement is safe because it only uses fixed words, not anything you type. It cannot be abused to slow down or crash the extension.

Technical evidence

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

Contextual assessment: The flagged regex at line 531 is a static pattern used to substitute a fixed English phrase in the sysprompt text when d100 mode is enabled. The pattern is not constructed from user input; it operates solely on pre-built content from the extension's own configuration and base section files. There are no nested or overlapping quantifiers that would cause exponential backtracking, and the input length is bounded by the sysprompt size. No attacker-controlled data reaches this regex, so it does not create a denial-of-service or injection risk.

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
game-systems.js:531

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a fake web address used only for testing the extension's settings code. It's not a real connection and poses no safety concern.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
test
Source
tests/character-creation-connection.test.js:64

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

A security scanner thought there was a suspicious link on this line, but it's actually just a simple check for a streaming data prefix. There's nothing dangerous here – it's a false alarm.

Technical evidence

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

Contextual assessment: The scanner flagged line 422 as a 'shady-link' signal, but the actual code at that line is `if (!trimmed || !trimmed.startsWith('data:')) continue;` which contains no URL or suspicious link. This is a false positive from the static analysis. The file legitimately constructs and fetches URLs for LLM API endpoints as part of its stated purpose, but line 422 is unrelated to any link.

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
llm-client.js:422

JavaScript analysis reported javascript.xray.encoded-literal

Expected behavior · high confidence

A security scanner flagged a line of test code that checks whether a function correctly handles normal letters and numbers. This is completely normal testing behavior and has nothing to do with security risks like hidden code or data theft.

Technical evidence

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

Contextual assessment: The scanner flagged the literal string 'abc123' on line 21 as a potential encoded literal. This string appears in a unit test assertion for the sanitizeCampaignPrefixString function, which tests that alphanumeric input is preserved unchanged. There is no obfuscation, hidden behavior, or security relevance. The test file is not shipped code and the literal is a simple test value.

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.encoded-literal
File role
test
Source
tests/schema-helpers.test.js:21

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file manages visual groups for organizing characters and modules. The code is straightforward and readable, with no hidden or tricky behavior. The security scanner flagged it incorrectly.

Technical evidence

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

Contextual assessment: The static analysis signal for obfuscated code is a false positive. The entire file contains clear, well-commented JavaScript with no obfuscation, dynamic code generation, or concealed execution. The functions perform safe normalization of display group data using strict sanitization and bounded loops. No malicious or suspicious patterns 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
Rule
javascript.xray.obfuscated-code
File role
production
Source
src/features/display-groups.js:1

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

This code uses a regular expression to check if a dice formula is a simple percentage roll, like '1d100+5'. The pattern is simple and safe—it cannot be tricked into taking a very long time to run. No security issue exists here.

Technical evidence

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

Contextual assessment: The regex /^(?:\d*)d100(?:[+-]\d+)*$/ is used to validate percentage-form dice formulas (e.g., '1d100+5'). It contains no nested quantifiers or alternation that would cause catastrophic backtracking. The quantifiers are linear and bounded by the literal 'd100' and the start/end anchors, preventing exponential runtime even on crafted input. The scanner's 'unsafe-regex' signal is a false positive for this pattern.

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
src/state/dice-compare.js:14

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · medium confidence

Yet another HP-parsing line. It's just reading game data.

Technical evidence

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

Contextual assessment: Line 1187 uses the same regex for parsing HP data within the `autoGeneratePartyPortraits` function. It is applied to user-written state memo content. The pattern is well-defined and poses no realistic security risk.

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
portraits.js:1187

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · low confidence

A security scanner found a possible suspicious link in this file, but we can't see what it is because the code wasn't fully provided. The file stores settings for the extension, including web addresses for AI services, which is normal for this type of extension. There's no sign that anything bad is happening.

Technical evidence

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

Contextual assessment: The scanner flagged a pattern at line 266, but the actual source code at this line was not provided in the review evidence. Based on the file's purpose—managing profile snapshots including user-configured API endpoints and keys—the flag may correspond to a legitimate URL string (e.g., a default Ollama endpoint or user-provided API URL). No exfiltration or unauthorized network access is evident from the supplied code. Without the actual code, no concrete security concern can be confirmed.

Impact: none · Exploitability: unlikely

Developer action: No action needed based on available evidence. If the flagged lines contain hardcoded URLs to external services not documented, consider verifying they are appropriate.

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
src/state/profiles.js:266

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The extension has a default setting to connect to a local AI model server (Ollama) at a standard address. This is normal for AI tools that run on your own computer. There is no sign of anything harmful.

Technical evidence

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

Contextual assessment: The flagged line at 1204 is a fallback default URL for a local Ollama instance, which is a common local LLM server used by AI roleplay extensions. This is consistent with the project's stated purpose of integrating with AI models for game state tracking and character editing. The URL is hardcoded to localhost and port 11434, a standard Ollama default; it is not a remote or suspicious endpoint. No evidence of network exfiltration, credential theft, or malicious data flow exists. The scanner rule 'shady-link' lightly flags hardcoded URLs, but in context this is benign and expected behavior.

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
src/ui/panel/panel-builder.js:1204

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This line sets a default URL for connecting to a local AI service running on your computer. It's like pre-filling a text box with a typical address. No data is sent anywhere just by doing this.

Technical evidence

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

Contextual assessment: The 'shady-link' signal flags a string literal at line 167 that is a default URL for an Ollama connection field. This line sets the value of an HTML input to a user-configurable setting defaulting to a localhost address. No network request is made by this assignment; it is only populating a UI form field. The URL is for local Ollama service, which is a legitimate local AI backend. There is no evidence of data exfiltration, remote connection, or attacker-controlled destination. The signal is a false positive for a benign localhost default.

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
src/features/chat/chat-state-loader.js:167

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This third default is for the AI assistant that helps set up game systems — again it only connects to your own computer's local AI service.

Technical evidence

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

Contextual assessment: The flagged string at line 1328 is a default Ollama API URL for the game system wizard, pointing to localhost port 11434. This is standard configuration for a local model endpoint. No user data is sent externally; the URL is a loopback address. The scanner signal lacks context and is a false positive.

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
src/state/defaults.js:1328

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code in this file is plain and readable. It is not hidden or scrambled in any way. The security scanner simply made a mistake by flagging it.

Technical evidence

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

Contextual assessment: The static analysis signal for obfuscated code is a false positive. The file contains standard ES module imports, clearly named functions, inline comments, and standard DOM manipulation patterns. No minification, encoding, or concealment is present. The code is fully readable and functionally transparent.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The extension sets a default address for connecting to a local AI model program on your computer, like 'localhost'. That's normal and expected for this type of tool. You can change it to any other address you want.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
Rule
javascript.xray.shady-link
File role
production
Source
index.js:4505

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This code is a simple debug window for a roleplaying game extension. It shows past conversations and lets you move or resize the window. The scanner worried the code might be hidden or tricky, but looking at it directly shows it's straightforward and harmless—no secret behavior or hidden tricks.

Technical evidence

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

Contextual assessment: The file file is fully readable, well-commented, and performs no obfuscation or hidden behavior. The scanner signal for obfuscated code is a false positive; the code uses template literals and inline HTML for constructing a debug panel UI, but contains no minification, encoded strings, concealed execution, or suspicious transformations. The code solely implements a local debug viewer that logs LLM transactions, persists panel geometry via localStorage, and manages drag/resize interactions. No data exfiltration, credential handling, or external communication occurs. The attack surface is limited to standard DOM and localStorage operations with no attacker-controlled input paths that could lead to meaningful harm beyond a local self-denial-of-service (e.g., UI freeze from excessive transactions), which is not demonstrated and falls below the material risk threshold.

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

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · low confidence

This code uses a regular expression to read hit points from game notes. The security scanner flagged it as potentially dangerous, but after review it turns out to be safe. It cannot be tricked into causing a freeze or crash in any practical way.

Technical evidence

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

Contextual assessment: The regex on line 214 is used to parse HP values from memo lines such as 'Bob: 100/50 HP'. The pattern is anchored with ^ and uses a lazy quantifier (+?) followed by a fixed colon, which limits backtracking to O(n) on non-matching input. The signal from JS-X-Ray is based on a generic unsafe-regex rule that flags patterns with potential for catastrophic backtracking, but in this specific case the regex does not contain nested quantifiers or alternations that would cause exponential blowup. The input is also constrained to memo lines (typically short), and the regex is applied per-line in a loop. No demonstrable ReDoS risk exists in this context.

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
portraits.js:214

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code checks whether the image you uploaded is a data image (like a file you picked) and then processes it appropriately. That's a standard and safe way to handle user-uploaded images.

Technical evidence

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

Contextual assessment: The flagged line (5672) checks if the stored image source begins with 'data:image/' to handle base64 image data. This is part of the same validation and processing logic for user-provided panel background images. No data exfiltration or network call occurs here. The code correctly distinguishes between data URIs and remote URLs.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · low confidence

A security scanner found a possible suspicious link in this file, but we can't see what it is because the code wasn't fully provided. The file stores settings for the extension, including web addresses for AI services, which is normal for this type of extension. There's no sign that anything bad is happening.

Technical evidence

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

Contextual assessment: The scanner flagged a pattern at line 250, but the actual source code at this line was not provided in the review evidence. Based on the file's purpose—managing profile snapshots including user-configured API endpoints and keys—the flag may correspond to a legitimate URL string (e.g., a default Ollama endpoint or user-provided API URL). No exfiltration or unauthorized network access is evident from the supplied code. Without the actual code, no concrete security concern can be confirmed.

Impact: none · Exploitability: unlikely

Developer action: No action needed based on available evidence. If the flagged lines contain hardcoded URLs to external services not documented, consider verifying they are appropriate.

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
src/state/profiles.js:250

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

Another test-only fake URL. It's harmless because it's just data in a test, not an actual web address being accessed.

Technical evidence

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

Contextual assessment: Line 137 contains a fake http URL used as test input for the adventure companion Ollama URL parameter. Like the other two candidates, this is a static test value that appears only in the unit test and is not executed against any live service. The test verifies parameter mapping correctness in isolation. No credential or data leaves the test sandbox.

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
test
Source
tests/adventure-companion.test.js:137

Related contextual observations

ReDoS-vulnerable regex pattern

low risk · medium confidence

A pattern used to read XML tags could freeze your browser if someone pastes tricky text. It's unlikely to be a problem in normal use.

Technical assessment

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

Impact: low · Exploitability: unlikely

Developer action: Simplify the regex to avoid nested quantifiers as recommended.

Sources:

Complex regex with nested quantifiers and alternation

low risk · high confidence

The code uses a regular expression that could be slow on purpose, but it's only used on dice rolls you type yourself, so the worst that happens is your game lags.

Technical assessment

The regex at line 310 (`/([+-]?(?:[1-9]\d*)?d[1-9]\d*(?:[kd][hl]?[1-9]\d*)?(?:[+-]\d+)*|[+-]?\d+)/gi`) contains nested quantifiers on the trailing modifier `(?:[+-]\d+)*` and an alternation that can cause the engine to try many paths when a non-matching input is encountered. This is a classic ReDoS pattern, though the actual risk is low because inputs are short and user-originated.

Impact: low · Exploitability: plausible

Developer action: Simplify the tokenization logic to avoid the nested quantifier and alternation. For example, parse the formula with a simple loop or use the existing fallback (rollSingleGroup) as a primary parser to reduce reliance on this regex.

Sources:

Dev-only dependency tree

low risk · high confidence

The vulnerable packages are only used during development (testing), not when you actually use the extension in SillyTavern.

Technical assessment

The file shows only devDependencies (vitest) at the top level; all transitive packages including nanoid and postcss are marked dev: true. These are used only for testing and not shipped or executed in the extension's runtime context.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Unsafe-regex signal false positive for anchored HP parser

low risk · low confidence

The regular expression in question is a simple pattern to find hit points in a line of text. It is not vulnerable to the kind of attack that could slow down or crash the page.

Technical assessment

The regex /^(.+?):\s*([\d,]+)(?:\/([\d,]+))?\s*HP/i is anchored at the start (^) and uses a lazy quantifier that only expands until a colon is found, resulting in linear backtracking at worst. No nested quantifiers or alternations are present. The scanner's unsafe-regex rule over-alarms here; the pattern is safe for its intended use on short, structured memo lines.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Multiple regex patterns flagged as potentially unsafe

low risk · medium confidence

Two text patterns used for reading character info could theoretically be slowed down by tricky input, but normal game data is short and the patterns are well-structured, so this isn't a real danger.

Technical assessment

JS-X-Ray flagged two regex patterns in file (lines 540 and 554) as unsafe-regex. Both are used to parse character state data for display. Analysis shows the patterns are anchored, input sizes are typically small, and the risk of actual ReDoS exploitation is minimal. No concrete data flow or trigger demonstrating exposure was provided beyond the regex definitions themselves.

Impact: low · Exploitability: unlikely

Developer action: Review both regexes for potential simplification; input length limits would further reduce the already low risk.

Sources:

Multiple unsafe-regex patterns in HP parsing logic

low risk · medium confidence

There are several complicated patterns in the code that read HP numbers from AI text. They could all potentially cause a slowdown, so it would be good to simplify them.

Technical assessment

The file file contains three regex patterns (lines 1477, 1482, 1489) flagged as potentially vulnerable to ReDoS. All serve the same purpose: parsing HP values from AI-generated text in the D&D framework. The patterns are similar and share constructs that could lead to catastrophic backtracking. While individually low risk due to input source constraints, the presence of multiple such patterns suggests the parsing approach could be consolidated and hardened to reduce surface area.

Impact: low · Exploitability: unlikely

Developer action: Review and refactor the HP parsing logic to use a single well-tested regex or a simpler parsing strategy that avoids nested optional groups and alternations.

Sources:

Potential ReDoS in RESOLVED_STATUS_RX pattern

low risk · medium confidence

A pattern used to check for defeated enemies could be tricked into running very slowly, freezing the browser temporarily. It's a low-severity issue that should be fixed.

Technical assessment

The repeated group (?:(?:\(\([^)]*\)\)|\([^)]*\))\s*)* can cause exponential backtracking when the input contains many parentheses and does not eventually match the required keywords. This is a classic ReDoS vulnerability, though limited to client-side denial of service.

Impact: low · Exploitability: plausible

Developer action: Refactor the regex to remove the repeating nested alternation. Consider using a simple test for the keywords without the repeated parenthetical groups, or use a non-regex approach to scan the line.

Sources:

False positive: obfuscated-code signal on clear code

low risk · high confidence

The security tool thought this file might contain hidden code, but looking at the actual code shows it is normal and easy to understand. The tool was wrong.

Technical assessment

The scanner heuristic likely triggered on high line density, deep destructuring, or string concatenation. None of these constitute obfuscation. The source is idiomatic modern JavaScript with clear structure and purpose. No evidence of concealed execution, encoded strings, or hidden data flows exists.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Test fixtures with HTTP URLs flagged as shady-link

low risk · high confidence

These signals came from test code that uses made-up example addresses. Since the test never actually tries to visit those addresses, there is no security risk.

Technical assessment

All three shady-link signals occur in a single unit test that uses fake HTTP URLs as input data to verify parameter mapping logic. The URLs are never used for actual network requests; the test environment mocks all external dependencies and no fetch or connection is attempted. This is a confirmed false positive in a test file where placeholder URLs are expected.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity