TavernKeeper Scan Report

remixcamera/remix-camera-sillytavern-companion-images

Commit 0226cf7 Reviewed

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

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

0 immediate danger 0 material 130 low

What this review found

No material or immediate-danger item was identified.

Deterministic technical evidence (39)
  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/setup-e2e-from-clone.mjs:25

  • JavaScript analysis reported javascript.xray.data-exfiltration · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/record-messaging-demo.mjs:4

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/instagram-teams-twilio-tool.node-test.mjs:69

  • JavaScript analysis reported javascript.xray.crypto.weak-algorithm · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/wechat-tool.node-test.mjs:109

  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: tests/host-plugin-adapters.node-test.mjs:61

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/messaging-demo-recorder.node-test.mjs:108

  • JavaScript analysis reported javascript.xray.encoded-literal · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/discord-tool.node-test.mjs:92

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/flowise-botpress-tool.node-test.mjs:11

  • Gitleaks reported curl-auth-header · gitleaks 8.30.1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: gitleaks-inert-placeholder · Execution scope: test-documentation-data

    Source: demos/chatgpt-actions/demo.md:41-43

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/record-messaging-demo.mjs:987

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/messenger-tool.node-test.mjs:96

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/zalo-tool.node-test.mjs:76

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/web-chat-adapters.node-test.mjs:38

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/whatsapp-tool.node-test.mjs:80

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/automation-platform-adapters.node-test.mjs:60

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/matrix-tool.node-test.mjs:86

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/line-tool.node-test.mjs:91

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/wechat-tool.node-test.mjs:90

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/verify-character-card.mjs:59

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/kakao-skill.node-test.mjs:67

  • JavaScript analysis reported javascript.xray.data-exfiltration · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/setup-e2e-from-clone.mjs:6

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/telegram-tool.node-test.mjs:155

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/host-plugin-adapters.node-test.mjs:45

  • JavaScript analysis reported javascript.xray.serialize-environment · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/messaging-demo-recorder.node-test.mjs:125

  • JavaScript analysis reported javascript.xray.unsafe-vm-context · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/host-plugin-adapters.node-test.mjs:29

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/mcp-server.node-test.mjs:80

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/companion-tools.node-test.mjs:28

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/discord-tool.node-test.mjs:69

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/slack-tool.node-test.mjs:65

  • JavaScript analysis reported javascript.xray.serialize-environment · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/record-messaging-demo.mjs:353

  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: tests/host-plugin-adapters.node-test.mjs:29

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/mattermost-rocketchat-tool.node-test.mjs:68

  • JavaScript analysis reported javascript.xray.serialize-environment · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/verify-sillytavern-browser-e2e.mjs:16

  • JavaScript analysis reported javascript.xray.data-exfiltration · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/verify-sillytavern-browser-e2e.mjs:8

  • JavaScript analysis reported javascript.xray.serialize-environment · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/setup-e2e-from-clone.mjs:146

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/vk-tool.node-test.mjs:84

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/viber-tool.node-test.mjs:79

  • JavaScript analysis reported javascript.xray.serialize-environment · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-tooling · Execution scope: tooling-only

    Source: scripts/verify-adapter-demos.mjs:60

  • JavaScript analysis reported javascript.xray.shady-link · javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: javascript-xray-inert-content · Execution scope: test-documentation-data

    Source: tests/framework-tools.node-test.mjs:24

Contextual expected matches (86)

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The LINE webhook server reads its credentials from environment variables and uses them only to verify incoming webhooks and call the LINE API. This is standard practice for a messaging bot adapter.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires on multiple process.env reads for LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET, LINE_API_BASE_URL, REMIX_BRIDGE_URL, and related configuration. These values are used for LINE webhook signature verification and LINE API calls. The access token is passed only to the LINE tool constructor and the channel secret is used only for HMAC signature verification. No credentials are exfiltrated or written to unexpected 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_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/line/lily-webhook-server.mjs:6

Credential access and network transmission in one file

Expected behavior · high confidence

A Telegram bot needs its token to talk to Telegram. The code reads the token from an environment variable and sends it only to Telegram's official API, which is exactly how Telegram bots work.

Technical evidence

Scanner reason: A credential source and an outbound network operation were detected in the same file.

Contextual assessment: The bot token is read from an environment variable and used to authenticate requests to the official Telegram Bot API endpoint. This is the standard and required mechanism for any Telegram bot to send and receive messages. The token is not hardcoded, not logged, and only travels to the legitimate Telegram API. No exfiltration to a third party is present.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
tavernkeeper 5
Rule
credential-exfiltration
File role
production
Source
adapters/telegram/lily-bot.mjs:124

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged URLs are the official Facebook Graph API and the project's local bridge on localhost. These are the expected destinations for a Messenger webhook server.

Technical evidence

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

Contextual assessment: The shady-link signal fires on URLs such as the default Facebook Graph API base URL and the local bridge URL. Both are legitimate, well-known endpoints for the Messenger platform and the project's own local bridge. No obfuscated or unexpected external endpoints are referenced.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/messenger/lily-webhook-server.mjs:10

JavaScript analysis reported javascript.xray.data-exfiltration

Expected behavior · high confidence

The script imports a standard Node.js networking module to communicate with a local helper process. This is normal and does not send data anywhere harmful.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.data-exfiltration. The match applies to 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_families-1
Rule
javascript.xray.data-exfiltration
File role
tooling
Source
scripts/verify-telegram-live-demo.mjs:5

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is just the default address of a small helper program that runs on your own computer. The extension talks to this local helper, which then contacts the image service on your behalf. This is exactly how the project is designed to work, and the address can be changed in settings.

Technical evidence

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

Contextual assessment: The scanner flagged line 24 as a shady-link signal. The flagged content is a default configuration value pointing to a localhost bridge endpoint at 127.0.0.1 port 8787. This is the expected architecture: the browser extension communicates with a local Node.js bridge that holds the Remix.Camera session token server-side and proxies API calls. The bridgeUrl is a user-configurable setting, and the bridgeFetch helper uses it for all requests to the local bridge. Using plain HTTP for a localhost address is standard and does not expose traffic to the network. No exfiltration, credential theft, or concealed 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_families-1
Rule
javascript.xray.shady-link
File role
production
Source
extension/remix-camera-companion-images/index.js:24

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The plugin sends requests to a local bridge running on your own machine, which is how the project is designed to work. There are no suspicious or hidden external links in this code.

Technical evidence

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

Contextual assessment: The scanner flagged a shady-link signal, but the only network destination in this file is a configurable bridge URL that defaults to the local loopback address. The fetch call sends image generation requests to the local bridge, which matches the stated project purpose of connecting a chatbot host to a local Remix.Camera bridge. No external or suspicious endpoint is hardcoded or reachable by 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_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/typingmind/remix-camera-plugin.js:2

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code launches a local test server and gives it the same environment settings as the test runner. This is normal for starting child processes in tests and does not send any secrets anywhere.

Technical evidence

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

Contextual assessment: The flagged line spreads process.env into the env object of a locally spawned child process in a test harness. The child is the bridge server bound to 127.0.0.1 on a random port. Inheriting the parent environment is standard Node.js spawn practice; specific REMIX_* variables are then overridden for the test. No environment data is transmitted to an external destination or persisted beyond the short-lived child process.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
bridge/server.node-test.mjs:401

OpenGrep reported tavernkeeper.credential-exfiltration.python-secret-to-network

Expected behavior · high confidence

The scanner saw environment variables used near a network call, but the variables are just configuration settings like character name and bridge address, not secrets. The network call goes to the local bridge on the user's own machine, which is the intended design.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.python-secret-to-network. The match applies to this repository.

Contextual assessment: The credential-exfiltration rule fires because environment variables are read and then a network call follows. Examining the actual data flow, the os.environ.get calls retrieve REMIX_BRIDGE_URL, REMIX_PROFILE_ID, REMIX_CHARACTER_NAME, and REMIX_CHARACTER_VISUAL_IDENTITY. These are configuration values, not secrets or API keys. The network call uses urllib.request.urlopen to POST to the bridge URL, which defaults to a loopback address on port 8787. The request body contains prompt and character configuration data, not credentials. The bridge itself holds the Remix.Camera session token server-side, so the Poe bot deliberately does not handle or transmit secrets. This matches the project purpose of routing through a local bridge without exposing credentials.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.python-secret-to-network
File role
production
Source
adapters/poe/remix_camera_poe_bot.py:79

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

The bridge uses your Remix.Camera login token to authenticate with Remix.Camera's own API, which is exactly what it is designed to do. There is no evidence of the token being leaked or sent to any other party.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The remixFetch function reads config.sessionToken or config.apiKey and places it in a Bearer Authorization header on a fetch call to config.apiBaseUrl concatenated with a pathname. The default apiBaseUrl is the Remix.Camera API domain. All callers pass Remix.Camera API pathnames such as profile listing, reference image upload, and generation endpoints. The credential is transmitted only to the expected service provider as an authentication header, which is the stated purpose of the bridge: keeping the token server-side and proxying API calls so it never appears in the browser. No evidence shows the token being sent to any non-Remix.Camera destination, logged, or returned in responses.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
production
Source
bridge/server.mjs:1507-1510

JavaScript analysis reported javascript.xray.crypto.weak-algorithm

Expected behavior · high confidence

The code uses SHA1 to verify WeChat webhook signatures because WeChat's own API requires this specific algorithm. The developer has no choice in the matter, and the code uses a secure comparison method to prevent timing attacks. This is following the platform's rules correctly.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.crypto.weak-algorithm. The match applies to this repository.

Contextual assessment: The crypto.weak-algorithm signal was triggered by crypto.createHash("sha1") at line 205 in the verifyWeChatSignature function. SHA1 is the algorithm mandated by the WeChat Official Account webhook signature verification specification. The implementation correctly sorts the token, timestamp, and nonce, concatenates them, hashes with SHA1, and compares using crypto.timingSafeEqual with length checks — which is the recommended secure comparison pattern. The developer cannot use a stronger hash because the WeChat API specifies SHA1. The comparison is against an attacker-supplied signature that must match the server-computed digest, so collision attacks are not relevant in this verification 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_families-1
Rule
javascript.xray.crypto.weak-algorithm
File role
production
Source
adapters/wechat/remix-wechat-tool.mjs:205

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner flagged a URL being built dynamically. The code simply chooses where to send image requests by checking user-provided settings, then an environment variable, then a safe local default address. Everything goes to the local bridge the user configured, which is exactly what this Zapier integration is supposed to do.

Technical evidence

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

Contextual assessment: The signal fires on line 50 where the bridge URL is resolved from input, auth data, an environment variable, and a default of the local loopback address on port 8787. The constructed URL is used for an HTTP POST to the local Remix.Camera bridge, which is the core purpose of this Zapier adapter. The default destination is a localhost bridge and the URL is user-configurable through visible input fields and authentication settings. No hidden or external endpoint is introduced. This is normal configuration-driven network access for a connector app.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/zapier/remix-camera-zapier-app/index.cjs:50

JavaScript analysis reported javascript.xray.encoded-literal

Expected behavior · high confidence

The test checks that an image returned by the server is actually a JPEG by looking at its first few bytes. The flagged text is just the standard JPEG file signature, not anything hidden or suspicious.

Technical evidence

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

Contextual assessment: The flagged literal is the hex string ffd8ff, which is the JPEG file magic byte signature. The test assertion verifies that an image response returned by the bridge begins with valid JPEG headers. This is a content-type validation check in a test file, not encoded or obfuscated data concealing 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_families-1
Rule
javascript.xray.encoded-literal
File role
production
Source
bridge/server.node-test.mjs:957

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The script passes its environment variables to a local helper process it starts. This is a normal way to configure a child process and does not involve any suspicious links.

Technical evidence

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

Contextual assessment: The flagged line spreads the parent process environment into a locally spawned bridge child process. This is a standard pattern for passing configuration to a child process running within the same package. The environment includes bridge-specific overrides for host, port, and allowed origins bound to loopback. No external or suspicious destination is involved.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
tooling
Source
scripts/verify-telegram-live-demo.mjs:107

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

This is a developer tool that sends demo images to messaging platforms the developer has configured. It uses the developer's own platform credentials to post to those same platforms, which is exactly what the tool is for. No credentials are sent anywhere unexpected.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: This is a tooling-only demo recording script. It reads the user's own messaging platform credentials from environment variables and uses them to post demo content to those same platforms via their official APIs. The credential-to-network correlation is real but legitimate: Telegram tokens go to Telegram, Discord webhook URLs go to Discord, Slack tokens go to Slack, and so on for each target. No credentials are sent to any third party or unexpected destination. The paired config file read only retrieves profileId and characterName, not credentials. This matches the project's stated purpose of recording and delivering demo output across multiple messaging targets.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
tooling
Source
scripts/record-messaging-demo.mjs:461-506

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

This is a helper script that registers Discord bot commands. It reads the bot token and app ID from your computer's environment variables, which is the normal way to pass credentials to a command-line tool. Nothing suspicious is happening here.

Technical evidence

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

Contextual assessment: The scanner flagged reading process environment variables. This file is a Discord slash-command registration CLI script that reads three environment variables for the bot token, application ID, and optional guild ID. Reading credentials from the local environment is the standard and expected pattern for a bot setup utility; the values are not serialized, logged, or sent to any unexpected destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/discord/register-commands.mjs:4

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The script reads configuration from environment variables, which is standard practice for a command-line tool. No sensitive data is being sent anywhere unexpected.

Technical evidence

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

Contextual assessment: The signal reflects multiple reads of process.env for CLI configuration such as output directory, bridge port, command text, and Telegram credentials. This is expected behavior for a command-line tooling script. The environment values are used locally for demo configuration and are not serialized to an external destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
tooling
Source
scripts/verify-telegram-live-demo.mjs:29

JavaScript analysis reported javascript.xray.data-exfiltration

Expected behavior · high confidence

The bridge reads your saved login token from a local file and uses it to talk to the Remix.Camera service, which is exactly what it is supposed to do. No evidence was found of data being sent to any unexpected place.

Technical evidence

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

Contextual assessment: The data-exfiltration signal is likely triggered by the combination of file reading and network-capable imports in the bridge server. The bridge reads a local config file to load a session token and API base URL, then uses those credentials to call the Remix.Camera API. This is the explicitly stated purpose of the bridge per the project README, which describes storing the session token server-side and calling the Remix.Camera API. The API base URL defaults to the Remix.Camera service. No evidence in the supplied source shows credentials or user data being sent to any destination other than the configured Remix.Camera API. The telemetry client is initialized with the same API base URL and is described as anonymous and opt-out in the README.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.data-exfiltration
File role
production
Source
bridge/server.mjs:5

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The Matrix bot reads its access token and homeserver URL from environment variables and uses them only to connect to the Matrix server. This is normal for a Matrix bot adapter.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires on multiple process.env reads for MATRIX_HOMESERVER_URL, MATRIX_ACCESS_TOKEN, REMIX_BRIDGE_URL, MATRIX_ROOM_ID, and related configuration. The access token is used only for Matrix sync API calls to the configured homeserver. The bridge URL defaults to localhost. No credentials are sent to any destination other than the Matrix homeserver and the local bridge.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/matrix/lily-sync-bot.mjs:10

Credential access and network transmission in one file

Expected behavior · high confidence

The scanner flagged environment variables being sent over the network. In this case, the values are configuration settings sent to the project's own local bridge service, not secret credentials sent to an external server.

Technical evidence

Scanner reason: A credential source and an outbound network operation were detected in the same file.

Contextual assessment: The credential-to-network correlation is between environment variables (bridge URL, profile ID, character name, visual identity) and a fetch call to the local bridge at 127.0.0.1:8787. The variables read are non-secret configuration values. The README describes the local bridge architecture where the bridge holds the session token server-side and adapters communicate with it over localhost. The flowiseCustomToolSnippet is a template string for Flowise integration that replicates the same local-bridge call pattern.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
tavernkeeper 5
Rule
credential-exfiltration
File role
production
Source
adapters/flowise/remix-camera-flowise-tool.js:51

Credential access and network transmission in one file

Expected behavior · high confidence

The verification script uses a test API key to authenticate against your own local bridge service. Because the key and the network request are in the same file, the scanner flagged it, but the key only goes to a service running on your own machine for testing purposes.

Technical evidence

Scanner reason: A credential source and an outbound network operation were detected in the same file.

Contextual assessment: This tooling-only script reads an action API key from a process environment variable and transmits it as a Bearer token to a user-configured bridge URL that defaults to localhost. The credential and network sink appear in the same file because the script deliberately authenticates against the user's own local bridge to test the ChatGPT Actions dry-run endpoint. The destination is user-controlled local infrastructure, not a third party. No credential is sent to an external, hidden, or unexpected destination. This is an expected authenticated test pattern for a verification tool.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
tavernkeeper 5
Rule
credential-exfiltration
File role
tooling
Source
scripts/verify-adapter-demos.mjs:677

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code connects to a program running on your own computer, which is exactly what the project says it does. No secret data is sent there.

Technical evidence

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

Contextual assessment: The flagged literal is a default bridge URL pointing to localhost (127.0.0.1:8787), which matches the project's stated architecture of a local Node.js bridge. The client normalizes the URL, validates commands against a known allowlist, validates actions, and POSTs JSON to that local endpoint. No credentials are sent to this URL; only command input is transmitted. This is the expected bridge-client pattern for the project.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/shared/bridge-client.mjs:3

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged values are a character profile ID and a local address. Neither is a secret, and both match the project's design.

Technical evidence

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

Contextual assessment: The flagged literals include a hardcoded profile ID (a public character identifier) and a default localhost bridge URL (127.0.0.1:8787). The profile ID is a non-secret reference to a Remix.Camera character profile. The bridge URL is the expected local bridge destination. Neither is a credential or an obfuscated external endpoint.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/slack/lily-slash-command-server.mjs:13

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The MCP server reads non-sensitive configuration from environment variables to know where the local bridge is running. No credentials are involved.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires on process.env reads for REMIX_BRIDGE_URL, REMIX_PROFILE_ID, and REMIX_CHARACTER_NAME in the callMcpTool function defaults and CLI argument parsing. None of these are credentials. The bridge URL defaults to localhost. The MCP server is a stdio-based JSON-RPC server that forwards tool calls to the local bridge. No sensitive data is handled or exfiltrated.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/mcp/remix-camera-mcp-server.mjs:142

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads Slack credentials and settings from environment variables. The signing secret is used to verify that requests really come from Slack, and the bot token is used to send messages back through Slack. This is how Slack bots are supposed to work.

Technical evidence

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

Contextual assessment: The scanner flags multiple process.env reads: SLACK_SIGNING_SECRET, SLACK_BOT_TOKEN, REMIX_BRIDGE_URL, REMIX_PROFILE_ID, REMIX_CHARACTER_NAME, REMIX_CHARACTER_VISUAL_IDENTITY, REMIX_PRIVATE_SNAP_TTL_SECONDS, PORT, and SLACK_COMMAND_PORT. The signing secret is used solely for verifying inbound Slack request signatures (line 91) and is never transmitted externally. The bot token is passed to the Slack tool for authenticated Slack API calls, which is the intended purpose. The remaining values are non-secret configuration. All usage is proportional to the stated purpose of a Slack slash-command server.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/slack/lily-slash-command-server.mjs:11

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads setup options from environment variables, which is a normal way for a local server to find its port and service address. Nothing is sent anywhere or stolen.

Technical evidence

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

Contextual assessment: The signal flags process.env usage. The supplied source reads PORT, KAKAO_PORT, REMIX_BRIDGE_URL, and LILY_CHARACTER_NAME from the environment to configure a local skill server. These are standard runtime configuration values with safe defaults. No environment data is serialized, transmitted, logged, or written to disk. The values are used only to set a listen port, a bridge endpoint, and a display name. This is normal configuration behavior for a local Node server adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/kakao/lily-skill-server.mjs:5

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

This adapter reads API credentials from environment variables to talk to the Nomi companion service, which is exactly what it is supposed to do. The credentials go only to the official Nomi API and are not sent anywhere unexpected.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires because the Nomi adapter reads several process.env values for configuration. Examining the data flow, the environment variables consumed are NOMI_API_BASE_URL, NOMI_API_KEY, NOMI_UUID, NOMI_ROOM_UUID, and NOMI_REQUEST_NOMI_UUID. These are used as fallbacks for user-supplied input and are sent only to the Nomi API endpoint declared as a constant at the top of the file, authenticated via a Bearer header. This is the expected and proportional credential handling for an adapter whose stated purpose is calling the Nomi chat API. No environment data is sent to unexpected destinations, logged, or persisted beyond the API call. The secret redaction markers confirm the scanner and evidence pipeline treated the key material as redacted, not exfiltrated.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/nomi/remix-camera-nomi-tool.mjs:69

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The test script needs your API key to verify the bridge works, and it only sends requests to the local bridge running on your own machine. No credentials are sent anywhere unexpected.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: This is an end-to-end test harness that reads REMIX_API_KEY from the environment and spawns a local bridge process on 127.0.0.1. The credential is passed to the child process through the inherited environment so the bridge can authenticate with the Remix.Camera API, which matches the project purpose. All fetch calls target localhost endpoints on the spawned bridge. There is no evidence of the credential being sent to any external or unexpected destination. The correlation between credential access and a network sink is incidental to the test design.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
production
Source
bridge/live-e2e.mjs:100-149

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The script reads a test API key from your environment and sends it to your own local bridge service to verify that authenticated requests work correctly. This is a normal testing pattern, not credential theft. The key goes to a service you run on your own machine.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: This is a tooling-only verification script. It reads an action API key from a process environment variable and sends it as a Bearer token in an Authorization header to a user-configured bridge URL that defaults to localhost port 8787. This is an intentional authentication test for the ChatGPT Actions dry-run route on the user's own local bridge. The credential destination is the user's own infrastructure, not a third-party or hidden endpoint. There is no exfiltration, no unexpected destination, and no obfuscation. The same-file correlation between credential access and a network sink is expected for an authenticated test call.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
tooling
Source
scripts/verify-adapter-demos.mjs:677-996

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is just the local address of the bridge server and an example placeholder for setting up a webhook. Nothing suspicious is going on here.

Technical evidence

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

Contextual assessment: The shady-link signal corresponds to the default local loopback bridge URL and the example webhook host printed in a console message. Both are standard configuration defaults for a webhook server. No external or concealed endpoint is contacted. The bridge URL is user-configurable and defaults to localhost, matching the project purpose.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/viber/lily-webhook-server.mjs:6

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner flagged a suspicious link, but the code at that location is just a plain word in a list of words used for filtering chat text. There is no link or network address there.

Technical evidence

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

Contextual assessment: The scanner flagged a shady-link signal at line 232, but the supplied source context shows line 232 is a string literal inside a Set of prompt-template noise tokens. No URL, endpoint, or network destination is present at this location. The signal is a static-analysis false positive on ordinary string data.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
bridge/server.mjs:232

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code reads a Telegram bot token and uses it to communicate with Telegram's official API. This is exactly what a Telegram bot is supposed to do.

Technical evidence

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

Contextual assessment: The flagged literal on line 18 is the process.env.TELEGRAM_BOT_TOKEN read. The bot token is used in the telegramJson function (line 124) to authenticate calls to the Telegram Bot API (api.telegram.org). This is the standard and intended use of a Telegram bot token: making authenticated API calls to Telegram's official endpoint to poll for updates and send messages. No token is sent to any non-Telegram destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/telegram/lily-bot.mjs:18

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The server reads its configuration and credentials from environment variables, which is standard practice. The secrets are used to verify incoming messages and call the Zalo messaging API as intended.

Technical evidence

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

Contextual assessment: The serialize-environment signal is triggered by process.env reads for port, bridge URL, Zalo access token, app secret, and character name. These are standard configuration variables for a Zalo webhook server. The app secret is used for HMAC verification of incoming webhook payloads, and the access token is passed to the Zalo tool module for outbound API calls. No credentials are transmitted to unexpected 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_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/zalo/lily-webhook-server.mjs:5

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code connects to the official WhatsApp API and a local helper service. Both are the expected places for this tool to talk to.

Technical evidence

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

Contextual assessment: The flagged line defines a default Graph API base URL for the WhatsApp Cloud API. This is the standard, legitimate endpoint for WhatsApp Business messaging. The bridge URL defaults to localhost. Both destinations match the stated purpose of a WhatsApp webhook adapter that receives messages and forwards image-generation requests to a local bridge.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/whatsapp/lily-webhook-server.mjs:10

JavaScript analysis reported javascript.xray.data-exfiltration

Expected behavior · high confidence

The code saves and loads image history from a local file and communicates with Telegram and the local bridge. No private data is sent anywhere unexpected.

Technical evidence

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

Contextual assessment: The data-exfiltration signal likely arises from the combination of file reads (image context JSON) and network calls (Telegram API, local bridge). The file operations read and write a local JSON file storing recent image context per chat. The network calls go to Telegram's official API and the local bridge. No file contents are sent to unexpected external endpoints. The image URLs stored locally are Remix.Camera generation results that are already hosted on Remix.Camera's infrastructure. This is expected behavior for a Telegram bot adapter with local state persistence.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.data-exfiltration
File role
production
Source
adapters/telegram/lily-bot.mjs:3

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads settings from environment variables, which is a normal way to configure a server. It does not send environment variables or secrets anywhere unexpected.

Technical evidence

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

Contextual assessment: The serialize-environment signal is triggered by multiple reads of process.env for configuration values such as port, bridge URL, auth token, and character name. These are standard environment-based configuration reads for a standalone webhook server. No environment variables are serialized into requests, logged, or transmitted to external endpoints. The auth token is passed only to a local signature verification function and the tool factory.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/viber/lily-webhook-server.mjs:5

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a test file that starts the bridge and a fake API server on the local machine to verify the bridge works correctly. The scanner flagged the network connections in the test code, but they are all connections to local test servers on the same machine. There is nothing suspicious here.

Technical evidence

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

Contextual assessment: The JS-X-Ray shady-link signal fired on a test harness file that spawns the bridge as a child process and creates a mock Remix.Camera API server bound to 127.0.0.1 on ephemeral ports. The nine occurrences correspond to localhost URL construction and HTTP request patterns used throughout the integration tests. No external or suspicious network destinations are present; all network activity targets local mock servers on loopback addresses. This is standard integration test infrastructure with no security relevance beyond its test scope.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
bridge/server.node-test.mjs:11

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads setup values like a character name and profile ID from environment variables. These are not passwords or secret keys, and using them to configure requests is normal.

Technical evidence

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

Contextual assessment: The scanner flags process.env reads for REMIX_PROFILE_ID, REMIX_CHARACTER_NAME, and REMIX_CHARACTER_VISUAL_IDENTITY. These are non-secret configuration values (a profile identifier, a display name, and a visual description string) used to populate the bridge request body. They are not credentials, API keys, or tokens. The values flow to the local bridge or are used as fallback defaults. This is expected configuration wiring for a framework adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/shared/framework-tool-runner.mjs:82

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code checks where to save its config file by looking at a command-line argument or a single environment variable. This is normal configuration behavior, not credential theft.

Technical evidence

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

Contextual assessment: The flagged line is bridgeConfigPath(), which reads a single environment variable (REMIX_CONFIG_FILE) or a CLI argument to determine the bridge config file path. This is standard configuration lookup, not environment serialization or credential exfiltration. No credentials are serialized or transmitted.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
bin/setup.mjs:136

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged addresses are the local bridge connection and Discord application settings on your own server. The Discord server forwards image requests to your local bridge as designed. No external or suspicious server is contacted.

Technical evidence

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

Contextual assessment: The flagged links are the default local bridge endpoint at 127.0.0.1 port 8787 and possibly the Discord application configuration. Both match the stated project purpose of running a Discord interactions server that forwards image commands to the local Remix.Camera bridge. The bridge URL is exposed only in the local health endpoint response, which is not sensitive. No external or attacker-controlled 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_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/discord/lily-interactions-server.mjs:11

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads a few specific configuration values from environment variables, such as the bridge address and character profile settings. These are used to send image requests to your local bridge. The code does not read or leak any secrets or unrelated environment data.

Technical evidence

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

Contextual assessment: The code reads four specific Remix.Camera and bridge configuration environment variables: REMIX_BRIDGE_URL, REMIX_PROFILE_ID, REMIX_CHARACTER_NAME, and REMIX_CHARACTER_VISUAL_IDENTITY. These are project-specific configuration values used to construct the bridge request body. They are sent only to the local bridge endpoint, which is the stated purpose. The entire process.env object is never serialized or exfiltrated. No credentials, secrets, or unrelated environment variables are accessed or transmitted.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/botpress/remix-camera-botpress-action.js:2

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads settings and a Telegram token from environment variables to configure the bot. Each value is used for its intended purpose.

Technical evidence

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

Contextual assessment: The scanner flags multiple process.env reads including TELEGRAM_BOT_TOKEN, REMIX_BRIDGE_URL, REMIX_CHARACTER_NAME, REMIX_PROFILE_ID, REMIX_API_BASE_URL, TELEGRAM_IMAGE_CONTEXT_FILE, REMIX_CHARACTER_VISUAL_IDENTITY, and TELEGRAM_UPDATE_OFFSET. These are configuration values for running the Telegram bot adapter. The bot token is a credential but is used only for Telegram API authentication. The bridge URL defaults to localhost. The API base URL defaults to the project's own service. All values serve their intended configuration purpose.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/telegram/lily-bot.mjs:17

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The Messenger webhook server reads its credentials from environment variables and uses them only to verify incoming webhooks and call the Facebook Graph API. This is standard practice for a Messenger bot adapter.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires on multiple process.env reads for MESSENGER_PAGE_ACCESS_TOKEN, MESSENGER_APP_SECRET, MESSENGER_VERIFY_TOKEN, and related configuration. The page access token is passed only to the Messenger tool constructor for Graph API calls. The app secret is used only for HMAC-SHA256 webhook signature verification. The verify token is compared against an inbound query parameter for webhook subscription confirmation. No credentials are exfiltrated or sent to unexpected 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_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/messenger/lily-webhook-server.mjs:6

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code contacts a program running on your own computer, which matches how this tool is designed to work. There is no evidence of contact with any suspicious external service.

Technical evidence

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

Contextual assessment: The flagged line constructs a bridge URL that defaults to a local loopback address on port 8787, consistent with the project purpose of calling a local Node bridge that holds Remix.Camera credentials server-side. The URL can also be overridden by input or runtime args, which is a normal configuration pattern for a local bridge adapter. No external or suspicious destination is present. The scanner signal is a keyword match on the URL literal and does not indicate a harmful destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/anythingllm/remix-camera-companion-images/handler.js:41

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged URL is the project's local bridge on localhost, which is where the MCP server sends its tool execution requests.

Technical evidence

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

Contextual assessment: The shady-link signal fires on the default local bridge URL used in the function parameter defaults. This is the project's own local bridge component at localhost and is the expected endpoint for the MCP server to communicate with.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/mcp/remix-camera-mcp-server.mjs:142

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The code builds a list of allowed websites that can connect to the local bridge. The listed sites are well-known AI chat platforms and localhost addresses, which matches the project's purpose of supporting multiple chatbot hosts.

Technical evidence

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

Contextual assessment: The flagged line is inside allowedOriginsForTarget(), which constructs a set of permitted CORS origins. The origins are localhost addresses and well-known AI chat platforms (agnai.chat, typingmind.com, lobehub.com). These are legitimate CORS allowlist entries for a local bridge that supports multiple chatbot targets, matching the project's stated multi-target purpose.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
bin/setup.mjs:166

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

The bridge stores your Remix.Camera login token on the server side and uses it to fetch generated images from the Remix.Camera service so your browser never sees the token. The code only sends the token to the Remix.Camera API address, which is exactly what the tool is designed to do. This is normal, expected behavior for a local bridge that keeps credentials out of the browser.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The scanner flagged config.sessionToken or config.apiKey reaching a fetch() network sink at line 2070. The code is in serveProxiedImage, which fetches previously generated images from the Remix.Camera API to serve them locally to the browser without exposing credentials client-side. The credential is only attached as a Bearer header when item.sourceUrl.startsWith(config.apiBaseUrl) is true, gating transmission to the configured API base URL. The sourceUrl values originate from Remix.Camera API generation responses via absoluteRemixUrl, not from direct user input. This matches the project's stated purpose of keeping credentials server-side and proxying authenticated image requests through the local bridge.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
production
Source
bridge/server.mjs:2070

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged code just checks whether local ports are available by briefly opening a listener on localhost, then closing it. This is normal test infrastructure behavior.

Technical evidence

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

Contextual assessment: The flagged line is a TCP server binding to 127.0.0.1 to check whether local ports are free before starting E2E test processes. This is a standard localhost port-availability check inside a tooling-only script and involves no external network access or suspicious destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
tooling
Source
scripts/verify-sillytavern-browser-e2e.mjs:362

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is the default address of a local helper program running on your own machine. The extension sends image requests to this helper, which contacts the image service for you. This is the intended design and the address is adjustable in the settings.

Technical evidence

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

Contextual assessment: The scanner flagged line 24 as a shady-link signal. The flagged content is a default configuration value for a localhost bridge endpoint at 127.0.0.1 port 8787. The extension uses bridgeFetch with this URL to communicate with a local companion bridge that holds the session token and proxies calls to the Remix.Camera API. This matches the project's stated architecture. The bridgeUrl is user-configurable and the plain HTTP scheme is appropriate for a loopback address. No data flows to an unexpected or concealed remote destination.

Impact: none · Exploitability: unlikely

Developer action: none

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

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

When a Discord bot interaction fails, the code sends an error message back to the same Discord conversation using a token Discord provided for that single reply. This is the normal way Discord bots respond to interactions, not a credential being stolen or sent somewhere unexpected.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The scanner matched a credential-to-network rule on the error handler that passes interaction.token to tool.send(). The interaction token is a per-interaction, ephemeral authorization token that Discord includes in every interaction payload specifically so the bot can post follow-up responses. It is not the bot secret token or a persistent API key, and the destination is the Discord interactions follow-up endpoint for that same interaction. This is the standard Discord interactions response pattern. No secret credential is routed to an unauthorized destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
production
Source
adapters/discord/lily-interactions-server.mjs:57-64

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The bridge reads its own login credentials and sends them to the Remix.Camera service it is designed to talk to. This is exactly what the tool is supposed to do, not a security problem.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: The scanner correlated credential-bearing state with an outbound network sink. The supplied code reads apiKey and sessionToken from environment variables and a local config file, then uses them to authenticate requests to the project's own stated API base URL (remix.camera). This matches the bridge's stated purpose of calling the Remix.Camera API with stored credentials without exposing them to the browser. No evidence shows credentials being sent to any third-party or unexpected destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
production
Source
bridge/server.mjs:245-1507

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is just the default local bridge address on the user's own machine. The Pipedream action uses it to talk to the local Remix.Camera bridge, which is the intended design.

Technical evidence

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

Contextual assessment: The shady-link signal fires on the default bridge URL string, which is a loopback address on port 8787. This is the local bridge endpoint described in the project README as the server-side component that holds the Remix.Camera session token. The Pipedream action passes user-configurable properties to the shared automation bridge runner, which calls that local bridge. No hardcoded external or suspicious destination is present. The localhost default is proportional and expected for an adapter designed to route through a local bridge rather than embedding credentials in the browser or cloud action.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/pipedream/remix-camera-pipedream-action.mjs:18

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is the default local bridge address on the user's own machine. The RisuAI plugin uses it to communicate with the local Remix.Camera bridge, which is the intended design.

Technical evidence

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

Contextual assessment: The shady-link signal fires on the cleanUrl helper which defaults to a loopback address on port 8787 when no user-configured bridge URL is provided. The RisuAI adapter uses the host platform's nativeFetch to call the local Remix.Camera bridge endpoint, passing tool content and character configuration. No hardcoded external or suspicious destination exists. The loopback default matches the project architecture where a local Node bridge holds the session token and proxies API calls. The update URL annotation at the top of the file points to the project's own GitHub repository for plugin updates, which is standard for RisuAI plugins.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/risu/remix-camera-companion-images.risu.js:123

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged address is the standard local bridge connection on your computer. The bot action sends image requests to your local bridge as designed. No external or suspicious server is contacted.

Technical evidence

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

Contextual assessment: The flagged link is the default local bridge endpoint at 127.0.0.1 port 8787, matching the stated project purpose. The bridge URL is configurable via options or environment variable. The action sends image command parameters to this local bridge and returns the response including text and image URLs. No external or attacker-controlled 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_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/botpress/remix-camera-botpress-action.js:2

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is just the local bridge address on the user's own machine. The project is designed to talk to a local bridge, so this is expected.

Technical evidence

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

Contextual assessment: The scanner flagged a link signal. The only network destination in this file is the local bridge address at loopback port 8787, which matches the project's stated architecture of routing image generation requests through a local Node.js bridge. The bridge URL can be overridden via options or an environment variable, but the default is localhost. No external or unexpected 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_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/flowise/remix-camera-flowise-tool.js:2

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The URLs flagged are the official LINE API and the project's own local bridge running on localhost. These are expected destinations for a LINE bot adapter.

Technical evidence

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

Contextual assessment: The shady-link signal fires on URLs such as the default LINE API base URL and the local bridge URL. Both are legitimate, well-known endpoints for the LINE platform and the project's own local bridge component. No obfuscated or unexpected external endpoints are referenced.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/line/lily-webhook-server.mjs:9

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged link is just a default local address for the project's own bridge service. It is ordinary configuration, not a suspicious external destination.

Technical evidence

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

Contextual assessment: The signal flags a link in the source. The only URL present near the flagged area is the default bridge endpoint on localhost, used as a fallback when no environment override is provided. The project purpose describes a local bridge running at that address. The URL is not exfiltrated, is not an external suspicious destination, and serves as expected default configuration for the adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/kakao/lily-skill-server.mjs:6

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

The bot token is sent to Discord's official API to register slash commands. This is the normal and expected way Discord bots work.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The credential (bot token from process.env.DISCORD_BOT_TOKEN) reaches a network sink, but the sink is the official Discord API at discord.com/api/v10. The fetch call uses the token as a Bearer-style Authorization header for a PUT request that registers application or guild slash commands. This is the documented Discord command-registration flow and the proportionate, intended use of the token.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
production
Source
adapters/discord/register-commands.mjs:18-25

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The program reads its settings and secrets from environment variables, which is a normal and safe way to configure a server. The credentials are used only for their intended WhatsApp messaging purpose.

Technical evidence

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

Contextual assessment: The serialize-environment signal is triggered by multiple process.env reads for WHATSAPP_ACCESS_TOKEN, WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_VERIFY_TOKEN, and bridge/profile configuration. These are standard environment-based configuration reads. The access token is passed to the WhatsApp tool module for outbound WhatsApp API calls, which is the expected data flow. No credentials are sent to any unexpected or unlisted destination.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/whatsapp/lily-webhook-server.mjs:6

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The code sends a request to the local bridge and uses the reply as text data. It does not run or execute anything downloaded from the network. The scanner warning is a false alarm.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to 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_families-1
Rule
javascript.download-to-execution
File role
production
Source
adapters/anythingllm/remix-camera-companion-images/handler.js:66-82

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The script uses Telegram bot credentials to send demo messages through Telegram's own API, which is exactly what those credentials are for. This only happens when the user explicitly enables it.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: The script reads Telegram bot token and chat ID from environment variables and, only when explicitly enabled by flags, passes them to helper functions that send messages via the Telegram Bot API. The network sinks are fetch calls to a local loopback bridge health endpoint and the Telegram API for message delivery. This is the legitimate and expected use of Telegram bot credentials in a Telegram demo verification tool. Sending is guarded by explicit opt-in flags and presence checks.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
tooling
Source
scripts/verify-telegram-live-demo.mjs:39-143

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads specific settings from environment variables to configure the Discord server and local bridge connection, such as port numbers, character profile settings, and Discord application keys for verifying incoming requests. It does not read or leak any secrets or unrelated environment data to outside parties.

Technical evidence

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

Contextual assessment: The code reads specific environment variables for server configuration: DISCORD_PUBLIC_KEY, DISCORD_APPLICATION_ID, REMIX_BRIDGE_URL, REMIX_PROFILE_ID, REMIX_CHARACTER_NAME, REMIX_CHARACTER_VISUAL_IDENTITY, REMIX_PRIVATE_SNAP_TTL_SECONDS, PORT, and DISCORD_INTERACTIONS_PORT. These are all legitimate configuration values needed to run a Discord interactions server and connect to the local bridge. The process.env object is never serialized wholesale. The DISCORD_PUBLIC_KEY is used only for signature verification, not transmitted anywhere. The bridge URL appears in a local health response and console log, neither of which is an exfiltration path. No credentials or unrelated environment variables are leaked to external 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_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/discord/lily-interactions-server.mjs:9

Credential access and network transmission in one file

Expected behavior · high confidence

The scanner noticed a credential being sent over the network in the same file. In this case the credential is a Discord bot token and it goes to Discord's own API, which is what it is designed for.

Technical evidence

Scanner reason: A credential source and an outbound network operation were detected in the same file.

Contextual assessment: The same-file correlation of a credential source and outbound network sink is present, but the data flow is the bot token traveling to the official Discord API endpoint for slash-command registration. The destination, timing (CLI execution), and purpose all match the project's stated Discord adapter functionality. There is no evidence of token redirection to unauthorized endpoints or concealment.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
tavernkeeper 5
Rule
credential-exfiltration
File role
production
Source
adapters/discord/register-commands.mjs:18

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The bot token is sent to Telegram's official API address to authenticate the bot. This is the normal way Telegram bots work and the token does not go anywhere else.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: The scanner correlates the TELEGRAM_BOT_TOKEN credential read (line 18) with the fetch call to api.telegram.org (line 124). The bot token is embedded in the Telegram API URL path, which is the standard authentication mechanism for the Telegram Bot API. The destination is Telegram's official, well-known API endpoint. No other credentials are transmitted to this endpoint. The local bridge calls go to localhost. This is the expected and correct pattern for a Telegram bot.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
production
Source
adapters/telegram/lily-bot.mjs:18-124

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code checks environment variables only to see if the user has opted out of anonymous install tracking. It does not collect or send any sensitive information from the environment. The tracking data is limited to a random ID and basic install metadata, exactly as described in the project documentation.

Technical evidence

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

Contextual assessment: The flagged function accepts an env parameter defaulting to process.env, a standard testability pattern. It reads only two specific variables (DO_NOT_TRACK and REMIX_TELEMETRY_DISABLED) to determine whether telemetry is opted out. No environment contents are serialized, logged, or transmitted. The telemetry client transmits only a random installation UUID, event name, install source label, target, and package version. This matches the README disclosure exactly, including the disable mechanisms and data retention policy. No credential-bearing variables are accessed.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
lib/install-telemetry.mjs:35

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The scanner flagged a potentially dangerous regular expression, but the pattern is a simple data-URL parser with no risk of performance attacks. It is used to decode uploaded reference photos.

Technical evidence

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

Contextual assessment: The scanner flagged an unsafe-regex signal at line 1538. The supplied code shows a data-URL parsing regex with simple alternation and a single trailing capture group using the dotAll flag. The pattern lacks nested quantifiers or ambiguous alternation that would cause catastrophic backtracking, so it is not vulnerable to ReDoS in practice. This is a standard data-URL parser used for decoding user reference images.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
bridge/server.mjs:1538

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged links are just the local helper service address and a sample placeholder URL shown to the user for setup. Nothing suspicious is happening.

Technical evidence

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

Contextual assessment: The shady-link signal is triggered by references to localhost URLs and a placeholder example URL in a console.log instruction. The bridge URL defaults to localhost and the example URL is a non-functional placeholder showing where to configure the Zalo webhook. No suspicious or unexpected external endpoints are contacted.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/zalo/lily-webhook-server.mjs:6

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

This code reads character profile settings from environment variables and passes them to the local bridge. The values are configuration items like profile ID and character name, not passwords or secret keys.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires on process.env access in buildAutomationBridgeInput. The code reads REMIX_PROFILE_ID, REMIX_CHARACTER_NAME, and REMIX_CHARACTER_VISUAL_IDENTITY as fallback configuration values. These are non-secret profile identifiers and character metadata passed to the local bridge via callBridgeCommand. No credentials or secrets are read from the environment in this module. The data flow matches the project's stated purpose of routing image generation requests through a local bridge.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/shared/automation-tool-runner.mjs:30

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The code reads configuration from environment variables, which is normal. The tokens are used only to verify that incoming webhook messages are genuine, not sent anywhere.

Technical evidence

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

Contextual assessment: The serialize-environment signal is produced by multiple process.env reads for server configuration including port, bridge URL, access token, webhook token, and character name. These are standard configuration reads for a webhook server. None of these values are serialized into outbound network requests or logged. The webhook token is used solely for signature verification of incoming requests, which is the correct security pattern for validating WeChat webhook callbacks.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/wechat/lily-webhook-server.mjs:5

Credential access and network transmission in one file

Expected behavior · high confidence

The flagged network call is inside a text string meant to be copied by users into another platform, not code that runs automatically. The actual running code only reads non-secret setup values and sends them to the local bridge.

Technical evidence

Scanner reason: A credential source and an outbound network operation were detected in the same file.

Contextual assessment: The scanner correlated process.env reads (REMIX_BRIDGE_URL, REMIX_PROFILE_ID, etc. at lines 2-10) with an axios.post call at line 58. However, line 58 is inside a String.raw template literal (lines 45-63) that exports a code snippet string for users to manually paste into Botpress. It is not executed by this file. The actual executable function (lines 1-43) reads non-secret configuration env vars and sends them to the localhost bridge. The env vars accessed are configuration fields (profile ID, character name, visual identity, bridge URL), not credentials. The session token is managed server-side in the bridge process and is never accessed in this adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
tavernkeeper 5
Rule
credential-exfiltration
File role
production
Source
adapters/botpress/remix-camera-botpress-action.js:58

JavaScript analysis reported javascript.xray.data-exfiltration

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.data-exfiltration. The match applies to 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_families-1
Rule
javascript.xray.data-exfiltration
File role
production
Source
bin/setup.mjs:5

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The script uses your Discord bot token to authenticate with Discord's own official API so it can register bot commands. Sending the token to Discord is exactly what this tool is supposed to do, and it goes nowhere else.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: The scanner correlated credential access with an outbound network call. In this file the bot token is read from the environment and sent only as an Authorization header to the official Discord API endpoint for registering application commands. This is the legitimate and sole purpose of the script: authenticating to Discord to register slash commands. The destination matches the stated Discord adapter functionality, and no third-party or unexpected endpoint receives the credential.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
production
Source
adapters/discord/register-commands.mjs:5-18

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The scanner flagged code that reads an environment variable. The code reads one specific setting that lets users override the local bridge address. It does not copy or send out any other environment data. This is a normal way for a tool to accept configuration.

Technical evidence

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

Contextual assessment: The signal fires on line 50 where a single environment variable is read as a fallback for the bridge URL. This is a targeted read of one named configuration variable, not serialization or bulk extraction of the process environment. The value is used solely to determine the local bridge endpoint for the HTTP POST request. No environment contents are logged, transmitted to a third party, or persisted. This is a standard and proportionate use of an environment variable for endpoint configuration in a connector app.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/zapier/remix-camera-zapier-app/index.cjs:50

JavaScript analysis reported javascript.xray.encoded-literal

Expected behavior · high confidence

The flagged hex string is a standard cryptographic header used to verify that Discord webhook requests are authentic. It is a known constant, not hidden or malicious code.

Technical evidence

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

Contextual assessment: The flagged hex literal at line 187 is the DER-encoded SPKI prefix for Ed25519 public keys (302a300506032b6570032100), used in verifyDiscordSignature to construct a public key object from a raw hex public key. This is a well-known cryptographic constant for Discord interaction signature verification, not obfuscation or encoded malicious content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.encoded-literal
File role
production
Source
adapters/discord/remix-discord-tool.mjs:187

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

The scanner detected that an API key is sent over the network in this file. That is true, but the key is sent only to a local bridge service that the user starts on their own machine, which is the expected way to test authenticated endpoints during verification.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The flagged requestBridge function constructs a fetch call to a bridge URL sourced from a user-provided environment variable or CLI flag, defaulting to localhost. When an action API key is present, it is attached as a Bearer token to test the authenticated ChatGPT Actions route on that same local bridge. The credential source reaches the network sink by design, but the sink is the user's own local infrastructure. There is no evidence of a third-party destination, hardcoded external endpoint, or concealed exfiltration path. This is consistent with the stated purpose of a demo and adapter verification tool.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
tooling
Source
scripts/verify-adapter-demos.mjs:677-684

JavaScript analysis reported javascript.credential-to-network

Expected behavior · high confidence

The test script checks whether you have Remix.Camera credentials configured before running a live test that would spend credits. It only makes network calls to local services on your own machine. The credentials are used for their intended purpose and are not sent anywhere unexpected.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.

Contextual assessment: The code reads REMIX_SESSION_TOKEN, REMIX_API_KEY, and a local bridge config file to verify that live-mode E2E authentication exists before spending credits. The only fetch sink in the cited range targets localhost health endpoints. Credentials are checked for presence locally and passed to the spawned bridge process, which is the project's stated architecture for calling the Remix.Camera API server-side. No credential values are transmitted to any external or unauthorized destination in this tooling script.

Impact: low · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.credential-to-network
File role
tooling
Source
scripts/verify-sillytavern-browser-e2e.mjs:309-547

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The test script passes its environment variables to the local bridge process it starts, which is normal for testing. Nothing is being leaked.

Technical evidence

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

Contextual assessment: The serialize-environment signal is triggered by the spread of process.env into the spawned child process environment at line 67. This is standard practice for a test harness that needs to propagate configuration to the bridge under test. The environment is passed to a local child process, not serialized for exfiltration. No unexpected data flow is present.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
bridge/live-e2e.mjs:12

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged web address is just the default local bridge connection on your own computer. The tool sends chat context and image requests to your local bridge as described in the project documentation. Nothing is sent to an external or suspicious server.

Technical evidence

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

Contextual assessment: The flagged link is the default local bridge endpoint at 127.0.0.1 port 8787. The project purpose explicitly states that a local Node.js bridge runs at that address and handles Remix.Camera API calls. The userscript sends chat text, character settings, and image commands only to this user-configurable local bridge. No external or attacker-controlled destination is present. The bridge URL is user-editable via a settings prompt and stored in localStorage. This is the expected adapter pattern for connecting Agnai to the local bridge.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/agnai/remix-camera-agnai.user.js:16

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

When a Slack command fails, the bot sends an error message back to the Slack channel using Slack's own reply URL and the bot's token. This is the normal way Slack bots respond to commands.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The scanner correlates a credential source (botToken from env, used by the tool object) with a network sink (tool.send called with payload.response_url and payload.channel_id). The response_url is provided by Slack in every slash-command payload and is Slack's own callback endpoint for asynchronous responses. The tool.send method uses the bot token to authenticate with Slack's API to post messages back to the originating Slack channel. This is the standard, documented pattern for responding to Slack slash commands after the initial 200 response. No credentials are sent to the response_url itself; the bot token is used to authenticate against Slack's API. This is expected behavior for a Slack integration.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
production
Source
adapters/slack/lily-slash-command-server.mjs:60-71

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The script reads configuration values like a profile ID and character name from environment variables and sends them to the local bridge. These are not secret credentials, and the data stays on the user's own machine.

Technical evidence

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

Contextual assessment: The scanner flagged environment variable access. The code reads several environment variables for non-secret configuration: a bridge URL, a profile ID, a character name, and a visual identity string. These are used to populate a request body sent to the local bridge. None of these variables are credentials or session tokens. The request goes to the local bridge endpoint, consistent with the project's stated design of keeping Remix.Camera credentials server-side in the bridge rather than in the browser or adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/flowise/remix-camera-flowise-tool.js:2

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged links are just the local server address and an example placeholder for configuring a webhook. There is nothing suspicious here.

Technical evidence

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

Contextual assessment: The shady-link signal corresponds to the default local loopback bridge URL and an example webhook host string printed to the console. Both are standard configuration defaults and placeholders for a self-hosted webhook server. No hidden or suspicious external endpoint is contacted by the code.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/wechat/lily-webhook-server.mjs:6

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged links are all local addresses pointing to the test bridge on your own machine. There are no suspicious external links.

Technical evidence

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

Contextual assessment: The shady-link signal appears to be triggered by URL-like string literals in the file. All URLs in this test harness are localhost addresses on 127.0.0.1 used to communicate with the locally spawned bridge. No external or suspicious URLs are present in the supplied source.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
bridge/live-e2e.mjs:35

OpenGrep reported tavernkeeper.credential-exfiltration.javascript-secret-to-network

Expected behavior · high confidence

The security scanner flagged this because a credential and a network call are in the same file, but the network call goes to Telegram's official API using the token as intended. This is normal bot behavior, not credential theft.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.credential-exfiltration.javascript-secret-to-network. The match applies to this repository.

Contextual assessment: The scanner matched because the bot token and a network fetch appear in the same file. The fetch targets the official Telegram API host and uses the token as the required bot authentication path segment. This is the canonical Telegram Bot API calling pattern. No alternative or hidden destination, no logging of the token, and no transmission to any non-Telegram endpoint is present.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.credential-exfiltration.javascript-secret-to-network
File role
production
Source
adapters/telegram/lily-bot.mjs:124-130

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged URL is the project's local bridge running on localhost, which is the expected destination for forwarding processed messages.

Technical evidence

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

Contextual assessment: The shady-link signal fires on a URL in the file, which corresponds to the local bridge default URL. This is the project's own local bridge component and is an expected endpoint for a Matrix bot adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
adapters/matrix/lily-sync-bot.mjs:12

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The bridge reads its own settings from environment variables, which is a normal way to configure a local server. It only reads its own named settings, not the entire system environment.

Technical evidence

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

Contextual assessment: The scanner flagged a serialize-environment signal because the config object reads many process.env values. The supplied code shows reads of specific named REMIX_ environment variables for host, port, API base URL, credentials, model IDs, and feature toggles. This is standard environment-based configuration for a local bridge server, not serialization or exfiltration of the full process environment. No evidence shows the entire environment being captured or transmitted.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
bridge/server.mjs:240

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged code simply defines a default local web address for generating documentation about the project's bridge service. It does not connect to anything or send any data. The address is a standard local-only address used for development.

Technical evidence

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

Contextual assessment: The flagged line is a function signature with a default parameter baseUrl set to a loopback address. The function generates static OpenAPI and Lobe manifest documents describing local bridge endpoints. All URLs in the file are either loopback defaults, a clearly labeled placeholder example domain, a schema reference, a repository homepage, or a favicon. No network requests are made by this module; it only constructs document objects. The signal is a false positive on a localhost default URL in a document generator.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
lib/companion-tools.mjs:208

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The adapter reads its Kindroid API key from environment variables and sends it only to the official Kindroid API. This is normal and expected behavior for connecting to an external service.

Technical evidence

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

Contextual assessment: The serialize-environment signal fires on multiple process.env reads in kindroidInputFromTurn. The code reads KINDROID_API_KEY, KINDROID_API_BASE_URL, and related configuration from environment variables, then uses the API key solely as a Bearer token in Authorization headers sent to the official Kindroid API endpoint. No credentials are logged, serialized to disk, or sent to any destination other than the Kindroid API. This is standard configuration handling for a platform adapter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
production
Source
adapters/kindroid/remix-camera-kindroid-tool.mjs:72

Related contextual observations

Raw error message returned to Discord user

low risk · medium confidence

If something goes wrong, the bot sends the raw error text back to the user in Discord. This is a minor information-hygiene issue, not a security vulnerability, since only the user who triggered the request sees it.

Technical assessment

The catch handler interpolates error.message directly into the text sent back via the interaction follow-up. This could expose internal error details to the Discord user who triggered the interaction. The impact is limited because the recipient is the same user who triggered the request and the interaction is already signature-verified, but generic error surfacing is a minor information-disclosure hygiene issue.

Impact: low · Exploitability: unlikely

Developer action: Consider replacing raw error.message with a generic user-facing message and logging the detailed error server-side.

Sources:

Discord credential sent only to official Discord API

low risk · high confidence

Both scanner findings describe the same normal action: the script sends your Discord bot token only to Discord's own API to register commands. There is no indication the token is leaked or sent anywhere else.

Technical assessment

Both candidates arise from the same data flow: environment-supplied Discord credentials are used to authenticate a PUT request to the official Discord REST API for command registration. The token is never logged, written to disk, or sent to any non-Discord destination. This matches the project's stated Discord adapter purpose.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

WeChat signature verification uses timingSafeEqual correctly

low risk · high confidence

The signature checking code uses a secure comparison method that prevents attackers from guessing the correct signature by measuring response times. This is good security practice.

Technical assessment

The verifyWeChatSignature function at lines 200-209 uses crypto.timingSafeEqual with a length guard (received.length === expectedBuffer.length) before comparison, which is the correct constant-time comparison pattern. SHA1 is required by the WeChat API specification and is adequate for this signature-verification use case where the attacker must produce a matching digest of a secret-keyed input.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

apiBaseUrl is configurable and could redirect credentials to an alternate host

low risk · medium confidence

The bridge normally talks to Remix.Camera, but its target address can be changed via a setting or config file. Someone who can already change files on your computer could redirect your login token elsewhere. This is a low concern because it requires existing local access.

Technical assessment

The apiBaseUrl is derived from REMIX_API_BASE_URL or the persisted config file, defaulting to the Remix.Camera domain. If an attacker could modify the persisted config file at the user's home path or set the environment variable, the Bearer token would be sent to that alternate host. This requires prior local access or control of the environment, so it is not a remote attack path, but the design does trust a plaintext local config file for the credential destination.

Impact: low · Exploitability: plausible

Developer action: Consider validating that apiBaseUrl points to a Remix.Camera-controlled domain, or warn prominently when a non-default base URL is configured, so credential redirection via local config tampering is more visible.

Sources:

startsWith URL guard allows prefix-match bypass in proxied image fetch

low risk · medium confidence

The code checks whether an image URL starts with the Remix.Camera API address before attaching your login token. A more precise check using the exact website address would be safer, though exploiting this would require the Remix.Camera service itself to return a deceptive URL.

Technical assessment

The guard item.sourceUrl.startsWith(config.apiBaseUrl) uses string prefix matching rather than origin equality. A URL whose hostname extends the API base hostname (for example, api.remix.camera followed by an attacker-controlled suffix) would pass the check and receive the Bearer credential. Exploitation would require the trusted Remix.Camera API to return such a crafted URL in a generation response, which is outside the normal user-controlled input path. The risk is theoretical and depends on a compromised or malicious API response.

Impact: low · Exploitability: unlikely

Developer action: Replace the startsWith check with an origin equality comparison using the URL constructor to ensure the credential is only sent to the exact configured API origin.

Sources:

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity