TavernKeeper Scan Report

M4Marvin/charon

Commit 0dd8a51 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 7 low

What this review found

No material or immediate-danger item was identified.

Deterministic technical evidence (4)
  • zizmor reported unpinned-uses · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/friction-log.yml:34

  • zizmor reported unpinned-uses · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/friction-log.yml:40

  • 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-user-docs.mjs:123

  • JavaScript analysis reported javascript.xray.unsafe-regex · 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-unsafe-regex-inert · Execution scope: tooling-only

    Source: scripts/verify-user-docs.mjs:82

Contextual expected matches (2)

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The flagged line just reads the app's own configured web address from settings and uses it to set up the login system correctly. Nothing sensitive is copied out or 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 at line 9 corresponds to reading an environment variable (APP_URL) and combining it with a localhost fallback literal. The resulting value is used only as the auth library's baseURL and as a trusted-origin entry in this server-side authentication configuration. No environment data is serialized into client-shipped output, exfiltrated to a remote destination, or written to logs. Reading a deployment URL from configuration is standard and proportionate for a self-hosted app whose README instructs users to set APP_URL for production.

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
src/lib/auth.ts:9

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner flagged the app's default local web addresses. These are just the normal placeholders used when running the app on your own machine, not suspicious external sites.

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 on line 9 reflects the plain-HTTP localhost fallback literal (and the related localhost origin on line 17). These are development and local-network defaults for a self-hosted application, used solely as the authentication base URL and trusted origins. No request is made to these addresses at scan time; they are configuration defaults, not network callbacks or data exfiltration 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.shady-link
File role
production
Source
src/lib/auth.ts:9

Related contextual observations

Session cookies deliberately allowed over plain HTTP

low risk · high confidence

The app lets you stay logged in even when running on a network without encryption. That's a deliberate convenience choice; if someone runs it over an untrusted network without HTTPS, a snooper on that network could theoretically see the login cookie. For typical home or localhost use this is not a practical problem.

Technical assessment

The configuration disables the Secure cookie flag so login sessions work on plain-HTTP LAN or reverse-proxy deployments without TLS. The code comments show this is an intentional, documented trade-off rather than a mistake. On a plain-HTTP network, a network-level observer could read the session cookie, but this is a deployment-transport risk the operator chooses by running without TLS, and the project's threat model is self-hosted local use. No attacker-controlled path is demonstrated by the supplied evidence.

Impact: low · Exploitability: unlikely

Developer action: Consider gating the Secure-cookie setting on whether the configured base URL uses HTTPS, or documenting that users exposing the app over a network should put TLS in front of it.

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity