TavernKeeper Scan Report

M4Marvin/charon

Commit 618267e 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 code reads two settings (the app's own web address and a list of trusted addresses) from the server's environment so the login system knows which addresses to trust. This is a normal way to configure a self-hosted app, and the values are not shared with anyone.

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 reads APP_URL and TRUSTED_ORIGINS from process.env, which are configuration inputs for the better-auth instance (baseURL and trustedOrigins). The values stay local to the auth setup and are never serialized, logged, or sent to any external destination. Reading environment variables for server configuration is standard practice for a self-hosted app and matches the project's stated purpose. The scanner signal is a false positive triggered by environment-variable access.

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 code contains default web addresses like 'localhost' with port numbers, which are just the app's own local development addresses. Nothing is being sent to an outside server.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. 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.shady-link
File role
production
Source
src/lib/auth.ts:9

Related contextual observations

Session cookies are never marked Secure, even on HTTPS deployments

low risk · medium confidence

The login cookie is never marked as 'secure only', so on setups where the app is accessed over an encrypted connection, the cookie could still travel over an unencrypted one in some situations. This is a small safety gap, not an active problem for typical local use.

Technical assessment

The advanced.useSecureCookies=false setting is unconditional. The comment explains it exists to support plain-HTTP LAN deployments, but when an operator sets APP_URL to an https origin, the session cookie is still sent without the Secure flag, so it could be transmitted over an unencrypted connection if the browser is directed to an http URL for the same host. This is a hardening gap rather than demonstrated exposure, and it matches the project's documented plain-HTTP self-hosting use case.

Impact: low · Exploitability: unlikely

Developer action: Consider deriving the Secure cookie behavior from the APP_URL scheme (Secure when the configured origin uses https) instead of disabling it unconditionally, so HTTPS deployments get hardened cookies while plain-HTTP LAN use keeps working.

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity