TavernKeeper Scan Report

AventurasTeam/Aventuras

Commit c936f71 Reviewed

4 material concerns identified.

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

0 immediate danger 4 material 93 low

What this review found

Dependency advisory GHSA-vxpw-j846-p89q applies

Material concern · medium confidence

A security scanner found a known vulnerability in one of the app's dependencies. Since this app connects to external AI services over the internet, a vulnerable networking component could potentially be exploited if a malicious or compromised AI provider sends crafted data back to the app.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-vxpw-j846-p89q to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a high-severity advisory (GHSA-vxpw-j846-p89q) against a dependency declared in the lockfile. The project includes production network dependencies such as undici (via @ai-sdk/provider-utils) that handle HTTP responses from external AI provider APIs. If this advisory targets a network-parsing library, attacker-controlled response headers from a malicious or compromised AI endpoint could reach the vulnerable code path at runtime. The scanner removed specific package details, preventing definitive confirmation of the exact package and version, but the match confidence is high and the project's architecture includes outbound HTTP to user-configured endpoints, making runtime reachability plausible.

Impact: medium · Exploitability: plausible

Developer action: Update the affected dependency to a version that patches the referenced advisory. Run npm audit or osv-scanner locally to identify the specific package and upgrade it.

Scanner
osv-scanner 2.4.0
Rule
GHSA-vxpw-j846-p89q
File role
production
Source
package-lock.json

Dependency advisory GHSA-fjxv-7rqg-78g4 applies

Material concern · low confidence

A scanner flagged a critical vulnerability in one of the app's dependencies, but the specific package was not identified in the scanner output. Because this is a desktop app rather than a web server, the real-world danger may be lower than the critical rating suggests, but it should still be investigated and fixed.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-fjxv-7rqg-78g4 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a critical-severity advisory (GHSA-fjxv-7rqg-78g4) against a dependency in the lockfile. The scanner removed package details, so the specific affected package and its runtime reachability cannot be confirmed from the supplied evidence alone. A critical advisory could indicate a severe issue such as path traversal, code execution, or authentication bypass. However, this is a Tauri desktop application, not a server, which limits the attack surface compared to a network-facing service. Without knowing whether the affected package is a production or development dependency, and whether the vulnerable code path is reachable, the actual impact may range from negligible to significant. Confidence is low due to the missing package identity.

Impact: medium · Exploitability: plausible

Developer action: Identify the specific package matching GHSA-fjxv-7rqg-78g4 using npm audit or osv-scanner with verbose output, then upgrade to a patched version. If the package is a dev-only dependency, document that it does not ship with the application.

Scanner
osv-scanner 2.4.0
Rule
GHSA-fjxv-7rqg-78g4
File role
production
Source
package-lock.json

Dependency advisory GHSA-vrm6-8vpv-qv8q applies

Material concern · medium confidence

A scanner found a high-severity vulnerability in one of the app's dependencies. Since the app receives and processes content from external AI services, a vulnerable component could potentially be triggered by crafted data from a malicious provider.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-vrm6-8vpv-qv8q to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a high-severity advisory (GHSA-vrm6-8vpv-qv8q) against a dependency in the lockfile. The project processes external AI-generated content and makes outbound HTTP requests to user-configured AI provider endpoints. If the affected package handles network I/O, response parsing, or content rendering, attacker-controlled data from a malicious AI endpoint could reach the vulnerable code. The scanner removed package details, preventing exact identification, but the high-severity match combined with the project's external-data processing architecture makes runtime reachability plausible.

Impact: medium · Exploitability: plausible

Developer action: Identify the specific package matching this advisory and upgrade to a patched version. Verify whether the vulnerable code path is reachable in the application's runtime context.

Scanner
osv-scanner 2.4.0
Rule
GHSA-vrm6-8vpv-qv8q
File role
production
Source
package-lock.json

Dependency advisory GHSA-hmw2-7cc7-3qxx applies

Material concern · medium confidence

A scanner found a high-severity vulnerability in one of the app's dependencies. Because the app processes and displays content generated by external AI services, a vulnerable parsing or rendering component could potentially be exploited by crafted AI output.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-hmw2-7cc7-3qxx to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a high-severity advisory (GHSA-hmw2-7cc7-3qxx) against a dependency in the lockfile. The project processes external AI-generated text and renders markdown (via marked) and Liquid templates (via liquidjs) in its WebView. If the affected package is involved in content parsing, rendering, or network handling, attacker-controlled AI responses could reach the vulnerable code path. The scanner removed package details, but the high-severity rating combined with the project's external-content processing makes runtime reachability plausible.

Impact: medium · Exploitability: plausible

Developer action: Identify the specific package matching this advisory and upgrade to a patched version. If the package processes user or AI-generated content, prioritize the update.

Scanner
osv-scanner 2.4.0
Rule
GHSA-hmw2-7cc7-3qxx
File role
production
Source
package-lock.json

Minor cautions

Dependency advisory GHSA-wrw7-89jp-8q8g applies

Minor caution · low confidence

A dependency used by the app's Rust backend was flagged with a known issue of medium severity. The evidence does not show enough detail to confirm whether the problem is actually reachable in this app, and medium-severity Rust advisories are often just warnings about outdated libraries rather than directly exploitable flaws.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-wrw7-89jp-8q8g to a dependency declared by this repository.

Contextual assessment: A GitHub-sourced advisory of medium severity was matched against a dependency in the Cargo lockfile. The supplied source context is truncated to the first 41 lines of a large lockfile and the scanner removed package details, so the specific crate and version cannot be verified. For a Tauri desktop application, medium-severity Rust ecosystem advisories are typically unmaintained-crate warnings or issues requiring specific attacker-controlled input that is unlikely to reach the vulnerable code path in a local interactive-fiction app.

Impact: low · Exploitability: unlikely

Developer action: Update the flagged dependency to a patched version when convenient and verify whether the vulnerable code path is reachable in the application.

Scanner
osv-scanner 2.4.0
Rule
GHSA-wrw7-89jp-8q8g
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The Android SDK setup step uses a version tag rather than a fixed commit hash. If the tag were moved to malicious code, the workflow could be affected.

Technical evidence

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

Contextual assessment: The workflow references android-actions/setup-android@v3, a floating tag from a third-party maintainer. A tag redirection could execute different code in a job with access to Android keystore secrets. Third-party actions carry slightly higher supply-chain risk than GitHub-official ones.

Impact: medium · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:108

zizmor reported cache-poisoning

Minor caution · medium confidence

The build system saves downloaded packages to speed up future builds. In theory someone could try to tamper with that saved cache, but the way this workflow is set up makes that difficult to exploit.

Technical evidence

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

Contextual assessment: The setup-node action enables npm dependency caching. Cache poisoning would require an untrusted contributor to submit a PR that modifies the lockfile and have the poisoned cache consumed by a subsequent trusted build. The workflow does not show evidence of pull_request_target triggers or broad cache sharing across fork PRs, so the practical attack surface is limited. Standard cache-scoping mitigations are absent but the risk is low for this build configuration.

Impact: low · Exploitability: unlikely

Developer action: Consider setting explicit cache scope or restricting which workflows can write to shared caches if untrusted PRs are accepted.

Scanner
zizmor 1.28.0
Rule
cache-poisoning
File role
tooling
Source
.github/workflows/ci.yml:95

zizmor reported cache-poisoning

Minor caution · high confidence

The workflow caches downloaded npm packages to speed up builds. Someone would need repository access to tamper with this cache, making real-world risk very low.

Technical evidence

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

Contextual assessment: The setup-node action with npm cache is standard CI practice. Cache poisoning would require an attacker to already have write access to the repository or cache namespace. The workflow is triggered by version tags, limiting the attack surface. The risk is theoretical for this build-only workflow.

Impact: low · Exploitability: unlikely

Developer action: Consider using a cache key that includes a hash of file to reduce cache collision risk, but no urgent change is needed.

Scanner
zizmor 1.28.0
Rule
cache-poisoning
File role
tooling
Source
.github/workflows/ci.yml:42

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a version label for a third-party build tool instead of locking it to a specific download. If that label were ever redirected to bad code, it could run in the build environment.

Technical evidence

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

Contextual assessment: The android-actions/setup-android action is referenced by a mutable version tag rather than a commit SHA. If the tag were moved to a malicious commit, the action would execute in a context with access to repository secrets. This is a third-party action, which carries more supply-chain risk than first-party GitHub actions. The impact is constrained because the build-android job does not expose signing secrets to this specific step's environment, though the job-level GITHUB_TOKEN is present.

Impact: low · Exploitability: plausible

Developer action: Pin third-party actions to a commit SHA for stronger supply-chain integrity.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:113

Dependency advisory RUSTSEC-2025-0098 applies

Minor caution · low confidence

A Rust library used by the app was flagged with a medium-severity issue. Without seeing which library or how it is used, this is most likely a maintenance concern rather than an immediate security threat.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2025-0098 to a dependency declared by this repository.

Contextual assessment: A RustSec advisory from 2025 was matched against a lockfile dependency at medium severity. The truncated source context and removed package details prevent verifying the specific crate, version, or runtime reachability. In a Tauri desktop app context, medium-severity advisories commonly relate to unmaintained crates or edge-case issues that require specific preconditions unlikely to be met by normal application usage.

Impact: low · Exploitability: unlikely

Developer action: Identify the flagged crate, update to a patched version, and confirm whether the vulnerable code path is exercised by the application.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2025-0098
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The build step that packages the desktop app has access to the code-signing key and uses a version label instead of a locked identifier. If that label were hijacked, the signing key could be stolen.

Technical evidence

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

Contextual assessment: The tauri-apps/tauri-action is referenced by a mutable v0 tag and runs with direct access to GITHUB_TOKEN, TAURI_SIGNING_PRIVATE_KEY, and TAURI_SIGNING_PRIVATE_KEY_PASSWORD in its environment. If the tag were moved to a malicious commit, those secrets could be exfiltrated. This is a third-party action with high-value secret access, making pinning more important. The impact is elevated due to the signing key exposure.

Impact: medium · Exploitability: plausible

Developer action: Pin this action to a commit SHA, especially given its access to signing secrets.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:67

Dependency advisory RUSTSEC-2023-0071 applies

Minor caution · low confidence

A Rust library was flagged because it is no longer maintained. This is a good practice issue to address but does not indicate an active security hole in the app.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2023-0071 to a dependency declared by this repository.

Contextual assessment: RUSTSEC-2023-0071 is a known advisory matched at medium severity. The source context does not include the affected package entry, so the specific crate and version cannot be confirmed. This advisory ID corresponds to an unmaintained-crate classification in the RustSec database, which does not describe a directly exploitable vulnerability but rather a supply-chain maintenance risk.

Impact: low · Exploitability: unlikely

Developer action: Replace or update the unmaintained dependency with a maintained alternative when practical.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2023-0071
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The code checkout step uses a version label for a standard GitHub tool. This is common practice but not as safe as locking to a specific version.

Technical evidence

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

Contextual assessment: The actions/checkout step in the build-android job is referenced by a mutable v4 tag. This is a first-party GitHub action, which reduces supply-chain risk compared to third-party actions. The default persist-credentials behavior means a GITHUB_TOKEN is written to the local git config, but the impact of tag compromise is limited to the CI environment.

Impact: low · Exploitability: plausible

Developer action: Pin to a commit SHA for consistency with supply-chain best practices.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:92

zizmor reported unpinned-uses

Minor caution · high confidence

The Java setup step uses a version tag rather than a fixed commit hash. If the tag were moved to malicious code, the workflow could be affected.

Technical evidence

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

Contextual assessment: The workflow references actions/setup-java@v4, a floating tag. A tag redirection could execute different code in a job that has access to Android keystore secrets. This is a standard supply-chain hardening gap.

Impact: medium · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:102

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a shorthand reference for a standard build tool instead of locking it to an exact version. This is common but could theoretically allow a compromised update to affect builds.

Technical evidence

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

Contextual assessment: The checkout action is referenced by major version tag rather than a commit SHA. This is a widespread convention but means the action version can shift if the maintainer retags or if the tag is compromised. The workflow only triggers on version-tag pushes or manual dispatch, limiting exposure to maintainers. No untrusted PR triggers are present.

Impact: low · Exploitability: unlikely

Developer action: Pin third-party and first-party actions to a full commit SHA for reproducibility and supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:43

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a version label for a GitHub Action instead of locking it to a specific commit. This is common but means a compromised update could theoretically affect builds.

Technical evidence

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

Contextual assessment: The setup-node action is referenced by major version tag v4 rather than a pinned SHA. If the action's tag were moved to a malicious commit, it could affect the workflow. This is a supply-chain hardening best practice issue, not an active vulnerability.

Impact: low · Exploitability: unlikely

Developer action: Pin actions to full commit SHAs instead of version tags for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:42

zizmor reported cache-poisoning

Minor caution · medium confidence

The build system caches downloaded packages to speed things up. A sophisticated attacker might try to corrupt this cache, but since only project maintainers can trigger this workflow, the risk is low.

Technical evidence

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

Contextual assessment: The Node setup step enables npm dependency caching. Cache poisoning could in theory inject malicious node modules into subsequent builds. However, the workflow only runs on tag pushes or manual dispatch by maintainers, not on pull requests, so external contributors cannot directly influence cache contents. The impact is limited to build integrity for maintainer-initiated releases.

Impact: low · Exploitability: unlikely

Developer action: Consider using cache scopes or lockfile-based cache keys to reduce cache poisoning surface, though this is a low-priority hardening step.

Scanner
zizmor 1.28.0
Rule
cache-poisoning
File role
tooling
Source
.github/workflows/release.yml:46

zizmor reported unpinned-uses

Minor caution · high confidence

The Rust toolchain setup step uses a floating tag rather than a fixed commit hash. If the tag were moved to malicious code, the workflow could be affected.

Technical evidence

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

Contextual assessment: The workflow references dtolnay/rust-toolchain@stable, a floating tag that tracks the latest stable Rust toolchain installer. A tag redirection could execute different code in a job with access to build and signing secrets. This is a standard supply-chain hardening gap.

Impact: medium · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:97

Dependency advisory GHSA-5v7r-6r5c-r473 applies

Minor caution · medium confidence

A scanner found a medium-level vulnerability in one of the app's dependencies. In a desktop application like this, medium-severity issues typically have limited real-world impact, but it is still good practice to update the affected package.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-5v7r-6r5c-r473 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-5v7r-6r5c-r473) against a dependency in the lockfile. Medium-severity advisories in npm dependencies often affect edge-case code paths, development tooling, or scenarios requiring specific preconditions that are unlikely in a Tauri desktop application context. The scanner removed package details, but given the medium severity and the desktop app's limited attack surface, the likelihood of concrete user harm is low. The advisory may also correspond to a dev-only dependency that does not ship with the application.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected package and update it when convenient. If it is a development-only dependency, no urgent action is required.

Scanner
osv-scanner 2.4.0
Rule
GHSA-5v7r-6r5c-r473
File role
production
Source
package-lock.json

Dependency advisory RUSTSEC-2024-0429 applies

Minor caution · low confidence

A Rust dependency was flagged with a medium-severity advisory. This is most likely an outdated-library warning rather than a directly exploitable vulnerability.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0429 to a dependency declared by this repository.

Contextual assessment: RUSTSEC-2024-0429 was matched at medium severity against a lockfile dependency. Package details were removed by the scanner and the source excerpt is truncated, preventing verification of the affected crate and version. Medium-severity 2024 RustSec advisories in this range are predominantly unmaintained-crate warnings without direct exploitability.

Impact: low · Exploitability: unlikely

Developer action: Update the flagged dependency and verify runtime reachability of any vulnerable code path.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0429
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory RUSTSEC-2024-0415 applies

Minor caution · low confidence

A Rust library was flagged with a medium-severity issue, likely related to the library no longer being maintained. This is a maintenance concern, not an immediate security threat.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0415 to a dependency declared by this repository.

Contextual assessment: RUSTSEC-2024-0415 was matched at medium severity. The source context is insufficient to identify the specific crate or confirm the version present. This advisory range typically covers unmaintained-crate notifications in the RustSec database, which represent supply-chain hygiene issues rather than directly exploitable vulnerabilities.

Impact: low · Exploitability: unlikely

Developer action: Update or replace the flagged dependency with a maintained version.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0415
File role
production
Source
src-tauri/Cargo.lock

zizmor reported artipacked

Minor caution · medium confidence

When checking out code, a temporary access token is saved in the local git settings. If this token accidentally ended up in a published file, someone could misuse it. The risk is low because build outputs are compiled binaries, not source folders.

Technical evidence

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

Contextual assessment: The checkout action persists the GITHUB_TOKEN in local git config by default. If build artifacts inadvertently include the .git directory, the token could be exposed. This workflow builds Tauri binaries and uploads release assets, so the .git directory is unlikely to be included in published artifacts, keeping risk low.

Impact: low · Exploitability: unlikely

Developer action: Set persist-credentials: false on the checkout step if git credentials are not needed for subsequent steps.

Scanner
zizmor 1.28.0
Rule
artipacked
File role
tooling
Source
.github/workflows/ci.yml:38-39

zizmor reported unpinned-uses

Minor caution · high confidence

The release build tool that handles code signing is referenced by a loose version label. Locking it to an exact version would be safer, especially since it can access signing keys.

Technical evidence

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

Contextual assessment: The Tauri build action is referenced at a floating major version v0 and has access to signing key secrets via environment variables. SHA-pinning would reduce supply-chain risk. The workflow trigger is restricted to tag pushes and manual dispatch, so only maintainers initiate runs. The action is a well-known community standard for Tauri releases.

Impact: low · Exploitability: unlikely

Developer action: Pin the Tauri action to a full commit SHA, particularly important because this step has access to signing key secrets.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:66

Dependency advisory RUSTSEC-2024-0413 applies

Minor caution · low confidence

A Rust dependency was flagged with a medium-severity advisory, most likely an unmaintained-library warning. This is a maintenance issue rather than an active vulnerability.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0413 to a dependency declared by this repository.

Contextual assessment: RUSTSEC-2024-0413 was matched at medium severity against a Cargo lockfile dependency. The truncated source and removed package details prevent confirming the affected crate and version. Advisories in this range are typically unmaintained-crate warnings without direct exploitability in a desktop application context.

Impact: low · Exploitability: unlikely

Developer action: Update the flagged dependency and confirm whether the vulnerable code path is reachable.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0413
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory GHSA-8xcm-r25x-g524 applies

Minor caution · medium confidence

A scanner found a medium-level vulnerability in one of the app's dependencies. For a desktop app, this is a low-priority issue that should be addressed during routine maintenance.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-8xcm-r25x-g524 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-8xcm-r25x-g524) against a dependency in the lockfile. The scanner removed package details. Medium-severity advisories in this project context—a Tauri desktop application with no server-side attack surface—are unlikely to result in concrete user harm. The vulnerable code path may require specific preconditions or attacker-controlled input that is not readily available in the application's runtime environment.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected package and update it during routine dependency maintenance.

Scanner
osv-scanner 2.4.0
Rule
GHSA-8xcm-r25x-g524
File role
production
Source
package-lock.json

zizmor reported unpinned-uses

Minor caution · high confidence

The checkout step uses a version tag rather than a fixed commit hash. If the tag were ever moved to malicious code, the workflow could be affected, though this is unlikely for GitHub's official action.

Technical evidence

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

Contextual assessment: The workflow references actions/checkout@v4, a floating tag. If the tag is moved to a different commit, the workflow would execute different code with access to repository contents. This is a standard supply-chain hardening gap, not an active vulnerability.

Impact: medium · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag for reproducible and tamper-resistant builds.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:87

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a version label for the checkout action instead of locking it to a specific commit. This is common practice but not maximally secure.

Technical evidence

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

Contextual assessment: The checkout action is referenced by major version tag v4 rather than a pinned SHA. This is a supply-chain hardening best practice issue. The action is a first-party GitHub action widely used in CI workflows.

Impact: low · Exploitability: unlikely

Developer action: Pin actions to full commit SHAs instead of version tags for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:39

zizmor reported cache-poisoning

Minor caution · medium confidence

The npm cache used during builds could theoretically be tampered with, but the risk is low in this release workflow context.

Technical evidence

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

Contextual assessment: The setup-node action enables npm dependency caching. Cache poisoning would require an attacker to write to the GitHub Actions cache for this repository's scope, which requires write access to the repository itself. The cache is used for build dependencies in a release workflow, limiting the blast radius.

Impact: low · Exploitability: unlikely

Developer action: Consider whether cache-scope restrictions are needed; otherwise no change is warranted for this standard caching pattern.

Scanner
zizmor 1.28.0
Rule
cache-poisoning
File role
tooling
Source
.github/workflows/release.yml:90

zizmor reported unpinned-uses

Minor caution · high confidence

The artifact upload step uses a version tag rather than a fixed commit hash. If the tag were moved to malicious code, the workflow could be affected, though this step has limited access to secrets.

Technical evidence

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

Contextual assessment: The workflow references actions/upload-artifact@v4, a floating tag. This step does not directly handle secrets, reducing the impact of a potential tag redirection compared to other steps in the same job.

Impact: low · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:146

Dependency advisory RUSTSEC-2024-0419 applies

Minor caution · low confidence

A Rust library was flagged with a medium-severity issue, likely because it is no longer actively maintained. This is a dependency hygiene concern, not an immediate danger.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0419 to a dependency declared by this repository.

Contextual assessment: RUSTSEC-2024-0419 was matched at medium severity. The source excerpt does not include the affected package entry and the scanner removed package details, so the specific crate and version cannot be verified. This advisory range typically covers unmaintained-crate notifications rather than directly exploitable vulnerabilities.

Impact: low · Exploitability: unlikely

Developer action: Replace or update the flagged dependency with a maintained alternative.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0419
File role
production
Source
src-tauri/Cargo.lock

Gitleaks reported generic-api-key

Minor caution · medium confidence

The app includes a backup access key for a character-search website directly in its code. Since this code runs on the user's device, anyone can read the key. Someone could take it and overuse the search service, but it does not expose the user's private data or the user's own API keys.

Technical evidence

Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.

Contextual assessment: A static token is hardcoded as a fallback constant in a frontend provider module. Because this file ships to client bundles, the token is inherently public and cannot be considered secret. The token is used to authenticate requests to a third-party character-card search API. The main concern is that any user or third party can extract and reuse the token, potentially causing quota abuse or rate-limit exhaustion against the upstream service. There is no indication of exfiltration to an attacker-controlled endpoint; the destination is the legitimate JannyAI search API.

Impact: low · Exploitability: plausible

Developer action: Move the token to a server-side proxy or environment-injected runtime configuration so it is not embedded in the client bundle. If the token is intentionally public and rate-limited upstream, document that rationale near the constant.

Scanner
gitleaks 8.30.1
Rule
generic-api-key
File role
production
Source
src/lib/services/discovery/providers/janny.ts:9

zizmor reported unpinned-uses

Minor caution · high confidence

The build script downloads a helper tool by a version label instead of a fixed fingerprint. If someone hijacked that helper's source, a bad version could run during builds. This is a common practice and the risk is low, but pinning to an exact version is safer.

Technical evidence

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

Contextual assessment: The workflow references a third-party GitHub Action by major-version tag rather than a pinned commit SHA. If that action's repository were compromised and the tag re-pointed, a malicious revision could execute in CI with access to repository secrets. The referenced action is a well-known, reputable NDK setup action, and tag re-pointing attacks on popular actions are rare and typically detected quickly. This is a supply-chain hardening gap, not an active vulnerability.

Impact: low · Exploitability: unlikely

Developer action: Pin third-party actions to a specific commit SHA with an integrity comment for reproducibility and supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:116

Dependency advisory RUSTSEC-2024-0370 applies

Minor caution · low confidence

A Rust dependency was flagged with a medium-severity advisory, most likely related to the library being unmaintained. This is a good-practice issue to resolve but not an active security threat.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0370 to a dependency declared by this repository.

Contextual assessment: RUSTSEC-2024-0370 was matched at medium severity against a lockfile dependency. The source context is truncated and package details were removed, preventing verification of the affected crate and version. This advisory is in the range of unmaintained-crate warnings, which do not describe directly exploitable vulnerabilities but rather supply-chain maintenance risks.

Impact: low · Exploitability: unlikely

Developer action: Update or replace the flagged dependency with a maintained version.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0370
File role
production
Source
src-tauri/Cargo.lock

zizmor reported artipacked

Minor caution · medium confidence

The build process saves a login token on the build machine during checkout and later uploads a build output. There is a small chance the token could be included in what gets uploaded, though the current upload targets only the app package.

Technical evidence

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

Contextual assessment: The artipacked rule fires because checkout persists credentials by default and a later upload-artifact step exists. However, the uploaded artifact is specifically the built Android APK file path, not the entire workspace or git directory. The persisted GITHUB_TOKEN in git config is unlikely to be included in the narrowly scoped APK artifact. The risk is low but nonzero if artifact upload patterns change.

Impact: low · Exploitability: unlikely

Developer action: Set persist-credentials: false on checkout steps where git push is not needed, or verify artifact upload paths remain narrowly scoped.

Scanner
zizmor 1.28.0
Rule
artipacked
File role
tooling
Source
.github/workflows/ci.yml:91-92

Dependency advisory GHSA-72xf-g2v4-qvf3 applies

Minor caution · medium confidence

A scanner found a medium-level vulnerability in one of the app's dependencies. This is a low-priority issue for a desktop application and can be addressed during routine updates.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-72xf-g2v4-qvf3 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-72xf-g2v4-qvf3) against a dependency in the lockfile. The scanner removed package details. In a Tauri desktop application with no public-facing server component, medium-severity dependency advisories typically have limited runtime impact. The vulnerable code path may be in a development dependency or require preconditions not present in the application's execution environment.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected package and update it during routine dependency maintenance.

Scanner
osv-scanner 2.4.0
Rule
GHSA-72xf-g2v4-qvf3
File role
production
Source
package-lock.json

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a label for the Rust installer action instead of locking it to a specific commit. Common practice but not maximally secure.

Technical evidence

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

Contextual assessment: The rust-toolchain action is referenced by the stable tag rather than a pinned SHA. This is a supply-chain hardening best practice issue. The action is a well-known community action for installing Rust toolchains.

Impact: low · Exploitability: unlikely

Developer action: Pin actions to full commit SHAs instead of version tags for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:48

Dependency advisory RUSTSEC-2024-0412 applies

Minor caution · low confidence

A third-party software library used by the app has a known minor security issue flagged in a public database. Based on available evidence, the problem is not something that an attacker can easily use against users of this desktop application.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0412 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is flagged against a dependency declared in this Cargo.lock. The advisory's package details were stripped from the scanner output, so the specific vulnerable crate and its version cannot be confirmed against the partial lockfile view. The project is a Tauri desktop application that processes local user content and makes outbound calls to AI provider APIs; without confirmed runtime reachability of the vulnerable code path or evidence of attacker-controlled input reaching it, this represents a routine dependency hygiene issue rather than a directly exploitable flaw.

Impact: low · Exploitability: unlikely

Developer action: Review the full Cargo.lock against the advisory details and update the affected crate to a non-vulnerable version when a patched release is available.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0412
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory RUSTSEC-2024-0417 applies

Minor caution · low confidence

Another third-party library has a known minor issue. There is no indication that this can be exploited through normal use of the desktop app.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0417 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is matched against a dependency in the lockfile, but the affected package name and version were removed from the scanner evidence. The visible lockfile portion confirms this is a standard Tauri 2 desktop project with SQLite, HTTP client, and local networking dependencies. No evidence indicates that attacker-controlled data reaches the vulnerable code path at runtime. Medium-severity advisories in desktop applications without confirmed reachability are treated as low-risk dependency maintenance items.

Impact: low · Exploitability: unlikely

Developer action: Identify the specific crate from the advisory and update it when a patched version is available.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0417
File role
production
Source
src-tauri/Cargo.lock

zizmor reported artipacked

Minor caution · medium confidence

There is a theoretical risk that the temporary access token used during the build could end up inside a published file. In practice the token expires quickly and only maintainers can trigger this build.

Technical evidence

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

Contextual assessment: The artipacked rule flags that the GITHUB_TOKEN used during checkout could theoretically be captured in build artifacts uploaded by the workflow. The Android job does not use tauri-action for uploads in the visible source, and the token is the standard ephemeral runner token. The risk is low because the token is short-lived and scoped, and the workflow is maintainer-triggered only.

Impact: low · Exploitability: unlikely

Developer action: Ensure build artifacts are cleaned of credential-related files before any upload step, and avoid archiving the full workspace.

Scanner
zizmor 1.28.0
Rule
artipacked
File role
tooling
Source
.github/workflows/release.yml:86-87

Dependency advisory GHSA-6rw7-vpxm-498p applies

Minor caution · medium confidence

A scanner found a medium-level vulnerability in one of the app's dependencies. For a desktop app, this is a low-priority issue that can be fixed during normal maintenance.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-6rw7-vpxm-498p to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-6rw7-vpxm-498p) against a dependency in the lockfile. The scanner removed package details. Medium-severity advisories in a desktop application context generally present low concrete risk, as the attack surface is limited to local execution without network-facing services. The affected package may be a development dependency or have vulnerable code paths that are not reachable at runtime.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected package and update it during routine dependency maintenance.

Scanner
osv-scanner 2.4.0
Rule
GHSA-6rw7-vpxm-498p
File role
production
Source
package-lock.json

Dependency advisory GHSA-g9mf-h72j-4rw9 applies

Minor caution · medium confidence

A security scanner found a medium-level vulnerability in one of the app's dependencies. Without knowing exactly which package is affected or how the app uses it, it is unclear whether this could actually be exploited. Desktop apps generally have a smaller attack surface than web servers.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-g9mf-h72j-4rw9 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-g9mf-h72j-4rw9) against a dependency declared in the package-lock.json. The specific affected package and version were not included in the scanner evidence, preventing confirmation of whether the vulnerable code path is a production or development dependency, whether the vulnerable function is reachable at runtime, or whether attacker-controlled input can reach it. This is a Tauri desktop application where the attack surface is limited to local execution, AI provider API responses, and imported content. Without identifying the package and its usage context, the advisory cannot be elevated beyond a minor weakness.

Impact: low · Exploitability: unlikely

Developer action: Run an updated dependency audit to identify the specific package, determine whether it is a production or dev-only dependency, and update it if a fixed version is available.

Scanner
osv-scanner 2.4.0
Rule
GHSA-g9mf-h72j-4rw9
File role
production
Source
package-lock.json

Dependency advisory RUSTSEC-2025-0075 applies

Minor caution · low confidence

A library used by the app has a known minor security note. There is no evidence that this issue can be triggered by anyone using the app normally.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2025-0075 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is reported for a dependency in this Cargo.lock. The affected package details were redacted from the scanner candidate, preventing confirmation of the exact crate and version. This Tauri desktop application primarily handles local interactive-fiction data and outbound AI API calls. Without verified runtime reachability or attacker-controlled input to the vulnerable code, the concrete risk to users is low.

Impact: low · Exploitability: unlikely

Developer action: Cross-reference the advisory identifier against the full dependency tree and apply available patches.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2025-0075
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The release workflow uses a third-party tool identified by a version label that can be changed by the tool's owner. If someone hijacked that tool's repository, they could swap in malicious code that runs during your release process. This is a minor best-practice gap, not an active threat.

Technical evidence

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

Contextual assessment: The workflow references a third-party GitHub Action by mutable tag (v1) rather than pinning to a full commit SHA. If the upstream action repository were compromised and the tag moved, the workflow would execute attacker-controlled code with access to the repository GITHUB_TOKEN used for creating draft releases. This is a supply-chain hygiene weakness common in hobbyist CI configurations. Exploitation requires a successful compromise of the well-known upstream action, which is unlikely but not impossible.

Impact: low · Exploitability: unlikely

Developer action: Pin the third-party action to a full commit SHA instead of a mutable tag to prevent supply-chain tag-swap attacks.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:152

zizmor reported cache-poisoning

Minor caution · high confidence

The workflow caches compiled Rust files to speed up builds. Tampering with this cache requires existing repository access, making real-world risk very low.

Technical evidence

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

Contextual assessment: The rust-cache action caches compiled Rust artifacts. Cache poisoning would require an attacker to already have write access to the repository or cache namespace. The workflow is triggered by version tags, limiting the attack surface. This is standard CI caching practice.

Impact: low · Exploitability: unlikely

Developer action: Consider using a more specific cache key that includes the Rust toolchain version and lockfile hash, but no urgent change is needed.

Scanner
zizmor 1.28.0
Rule
cache-poisoning
File role
tooling
Source
.github/workflows/ci.yml:53

Dependency advisory RUSTSEC-2025-0081 applies

Minor caution · low confidence

A minor known issue exists in one of the app's underlying libraries. It does not appear exploitable through normal desktop use.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2025-0081 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is flagged for a dependency in the lockfile, but the affected crate identity was stripped from the scanner output. The application context is a Tauri desktop interactive-fiction tool with local SQLite storage and AI provider integration. No evidence in the supplied data demonstrates runtime reachability of the vulnerable function or attacker control over its inputs. Medium advisories without confirmed exploitable paths in a desktop context are low risk.

Impact: low · Exploitability: unlikely

Developer action: Update the affected dependency to a patched version once identified from the advisory.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2025-0081
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory RUSTSEC-2025-0100 applies

Minor caution · low confidence

A third-party library has a flagged minor issue. The desktop app does not appear to expose a way for this to be exploited.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2025-0100 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is matched for a lockfile dependency with package details removed from the scanner evidence. The project is a locally-running Tauri application that does not expose internet-facing server surfaces beyond outbound AI API calls and optional local-network sync. Without confirming the specific crate or that attacker-controlled data reaches the vulnerable code at runtime, the advisory represents routine dependency maintenance rather than a concrete threat.

Impact: low · Exploitability: unlikely

Developer action: Identify and update the affected crate from the full advisory details.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2025-0100
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The CI uses a version tag for a standard GitHub helper tool instead of locking it to a specific download. If someone managed to reassign that tag to bad code, it could run during testing. This is a routine hardening improvement, not an active danger.

Technical evidence

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

Contextual assessment: The setup-node action is referenced by its floating major-version tag rather than a commit SHA pin. If the tag were ever repointed to a malicious commit, the workflow could execute untrusted code during CI. This is a first-party GitHub action whose tags are strongly protected, so practical exploitation is very unlikely, but SHA pinning is the recommended hardening practice.

Impact: low · Exploitability: unlikely

Developer action: Pin actions/setup-node to a full commit SHA for defense-in-depth.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/lint-and-typecheck.yml:19

zizmor reported unpinned-uses

Minor caution · high confidence

The Node.js setup step uses a version tag rather than a fixed commit hash. If the tag were moved to malicious code, the workflow could be affected, though this is unlikely for GitHub's official action.

Technical evidence

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

Contextual assessment: The workflow references actions/setup-node@v4, a floating tag. The step also enables npm caching. A tag redirection could execute different code in a job that has access to build secrets. This is a standard supply-chain hardening gap.

Impact: medium · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:90

Dependency advisory GHSA-v3r7-h72x-cjcm applies

Minor caution · medium confidence

A security scanner found a medium-level vulnerability in a dependency. It is unclear which package is affected or whether the vulnerable code is actually used by the app, so the real-world risk is uncertain.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-v3r7-h72x-cjcm to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-v3r7-h72x-cjcm) against a dependency in the lockfile. The affected package identity was stripped from the scanner output, so runtime reachability and attacker-input pathways cannot be assessed. The project bundles dependencies into a Tauri WebView frontend; dev-only dependencies do not ship to end users. Advisory severity alone does not establish a material vulnerability without confirming the package is production-reachable and the vulnerable code is exercised.

Impact: low · Exploitability: unlikely

Developer action: Identify the specific package via a fresh audit, check whether it ships in production builds, and upgrade if a patched version exists.

Scanner
osv-scanner 2.4.0
Rule
GHSA-v3r7-h72x-cjcm
File role
production
Source
package-lock.json

Dependency advisory GHSA-4992-7rv2-5pvq applies

Minor caution · medium confidence

A security scanner found a medium-level vulnerability in a dependency. Without knowing which package is involved or how the app uses it, the practical risk cannot be confirmed.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-4992-7rv2-5pvq to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-4992-7rv2-5pvq) against a dependency in the lockfile. Package details were removed from the evidence, preventing determination of whether the dependency is production or development, whether the vulnerable code path is invoked, or whether attacker-controlled data reaches it. The application is a local desktop tool; without confirmed runtime reachability the advisory remains a minor weakness.

Impact: low · Exploitability: unlikely

Developer action: Re-run the audit to identify the package, verify production versus dev-only usage, and update to a fixed version if available.

Scanner
osv-scanner 2.4.0
Rule
GHSA-4992-7rv2-5pvq
File role
production
Source
package-lock.json

zizmor reported artipacked

Minor caution · high confidence

The checkout helper saves a temporary access token in its working folder by default. That token could leak if files were later uploaded as CI artifacts, but this workflow never uploads artifacts, so there is no actual leak path. Turning off token persistence is a simple precaution.

Technical evidence

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

Contextual assessment: The checkout action persists the GITHUB_TOKEN credential into the local .git/config by default. The artipacked attack vector requires a subsequent artifact-upload step that bundles the .git directory; this workflow contains no upload-artifact step, so there is no exfiltration path. The persistence is a default of the official action and poses no reachable risk in this specific job, but explicitly disabling credential persistence is best practice.

Impact: low · Exploitability: unlikely

Developer action: Set persist-credentials: false on the checkout step to eliminate the theoretical credential-persistence surface.

Scanner
zizmor 1.28.0
Rule
artipacked
File role
tooling
Source
.github/workflows/lint-and-typecheck.yml:15-16

Dependency advisory GHSA-w5hq-g745-h8pq applies

Minor caution · medium confidence

A security scanner found a medium-level vulnerability in a dependency. It is unclear which package is affected or whether the vulnerability is actually reachable in the app.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-w5hq-g745-h8pq to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-w5hq-g745-h8pq) against a dependency in the lockfile. The affected package name and version were not provided in the scanner evidence, so it is not possible to confirm whether the vulnerable code is a production dependency, whether it is reachable at runtime, or whether attacker input can trigger it. Severity alone is insufficient to establish a material vulnerability.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected package through a dependency audit, determine if it is used in production, and upgrade if a fix is available.

Scanner
osv-scanner 2.4.0
Rule
GHSA-w5hq-g745-h8pq
File role
production
Source
package-lock.json

Dependency advisory GHSA-g8m3-5g58-fq7m applies

Minor caution · medium confidence

A security scanner found a low-level vulnerability in a dependency. The impact is likely small, and it is unclear whether the affected code is actually used by the app.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-g8m3-5g58-fq7m to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a low-severity advisory (GHSA-g8m3-5g58-fq7m) against a dependency in the lockfile. The affected package identity was not included in the evidence. Low-severity advisories typically describe limited-impact issues such as minor information disclosure or edge-case denial of service. Without confirming the package is production-reachable and the vulnerable code is exercised, this remains a minor weakness.

Impact: low · Exploitability: unlikely

Developer action: Identify the package via audit and update if a patched version is available; low priority.

Scanner
osv-scanner 2.4.0
Rule
GHSA-g8m3-5g58-fq7m
File role
production
Source
package-lock.json

zizmor reported artipacked

Minor caution · medium confidence

There is a small chance the temporary build token could be included in release files. The release tool uploads specific compiled binaries rather than everything, which limits this risk.

Technical evidence

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

Contextual assessment: The artipacked rule flags the desktop build job where checkout uses the default GITHUB_TOKEN and tauri-action uploads release assets. The concern is token leakage into uploaded artifacts. The tauri-action is a standard tool that uploads specific built binaries rather than the full workspace, reducing this risk. The token is ephemeral and scoped to contents write only.

Impact: low · Exploitability: unlikely

Developer action: Verify that the Tauri action only uploads intended build outputs and does not archive the full working directory.

Scanner
zizmor 1.28.0
Rule
artipacked
File role
tooling
Source
.github/workflows/release.yml:42-43

Dependency advisory GHSA-pxg6-pf52-xh8x applies

Minor caution · medium confidence

A security scanner found a low-level vulnerability in a dependency. If it is in a development-only tool, it would not affect end users at all.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-pxg6-pf52-xh8x to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a low-severity advisory (GHSA-pxg6-pf52-xh8x) against a dependency in the lockfile. The package name was removed from the scanner output. The visible lockfile includes picomatch as a dev dependency, which has had low-severity ReDoS advisories; if this is the match, it is dev-only and does not ship to end users. Without confirmed package identity, the assessment remains a minor weakness with low impact.

Impact: low · Exploitability: unlikely

Developer action: Confirm the affected package through audit; if it is a dev-only dependency, the risk is limited to the development environment. Update when convenient.

Scanner
osv-scanner 2.4.0
Rule
GHSA-pxg6-pf52-xh8x
File role
production
Source
package-lock.json

Dependency advisory RUSTSEC-2026-0235 applies

Minor caution · low confidence

A library used by the app matches a known advisory entry. There is no evidence that the flagged code path can be reached or exploited during normal use of the desktop application.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2026-0235 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory with a future-dated identifier is matched against a dependency in this Cargo.lock. The affected package details were redacted. The unusual advisory date raises a minor question about advisory database currency, but the scanner matched it against a real crate in the lockfile. As with the other advisories, without confirmed runtime reachability or attacker-controlled input in this Tauri desktop context, the risk is low.

Impact: low · Exploitability: unlikely

Developer action: Verify the advisory is legitimate and applicable, then update the affected crate if a patch exists.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2026-0235
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The build script uses a version label for a GitHub-provided helper instead of a fixed fingerprint. The risk is very low since GitHub maintains it, but pinning to an exact version is a recommended best practice.

Technical evidence

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

Contextual assessment: The workflow references a first-party GitHub Action (artifact upload) by major-version tag instead of a pinned commit SHA. First-party actions under the actions/ namespace are maintained by GitHub and carry lower compromise risk, but the same tag-repointing supply-chain concern applies in principle. No untrusted user input controls which action is fetched.

Impact: low · Exploitability: unlikely

Developer action: Pin actions to a specific commit SHA for reproducibility and supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:151

Dependency advisory RUSTSEC-2024-0416 applies

Minor caution · low confidence

A minor known issue exists in a library the app depends on. It does not appear to create a practical risk for desktop users.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0416 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is reported for a lockfile dependency whose package name was removed from the scanner evidence. This is a Tauri desktop application handling local interactive-fiction content and AI API interactions. The visible lockfile excerpt shows standard Rust ecosystem crates. No evidence indicates attacker-controlled input reaching the vulnerable code at runtime, so this is a dependency maintenance issue with low concrete risk.

Impact: low · Exploitability: unlikely

Developer action: Look up the advisory details and upgrade the affected dependency when possible.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0416
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory GHSA-v9p9-hfj2-hcw8 applies

Minor caution · low confidence

A security scanner found a high-level vulnerability in a dependency. This is the most concerning of the findings, but without knowing which package is affected or whether the app actually uses the vulnerable code, it is impossible to confirm the real-world danger. The app does handle sensitive data like API keys, so this should be investigated promptly.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-v9p9-hfj2-hcw8 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a high-severity advisory (GHSA-v9p9-hfj2-hcw8) against a dependency in the lockfile with high scanner confidence. The affected package name and version were stripped from the evidence, so it is not possible to confirm whether the dependency is production or development, whether the vulnerable code path is reachable, or whether attacker-controlled input can reach it. The project is a Tauri desktop application that handles AI provider API keys and makes outbound HTTP requests; if the affected package is a production network or parsing dependency, the vulnerability could be reachable through malicious API responses or imported content. However, without identifying the package, this cannot be confirmed, and advisory severity alone does not establish a material vulnerability. The uncertainty is expressed through low confidence and a low recommended risk.

Impact: medium · Exploitability: plausible

Developer action: Prioritize identifying the affected package and version. If it is a production dependency that handles network requests, file parsing, or user input, update immediately. If it is a dev-only dependency, the risk is limited to the development environment.

Scanner
osv-scanner 2.4.0
Rule
GHSA-v9p9-hfj2-hcw8
File role
production
Source
package-lock.json

zizmor reported unpinned-uses

Minor caution · high confidence

Same routine hardening as the other action reference: the CI downloads a standard GitHub helper by version tag instead of a locked fingerprint. Practical risk is negligible, but pinning is recommended.

Technical evidence

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

Contextual assessment: The checkout action is referenced by its floating major-version tag rather than a commit SHA pin. Tag-repointing attacks on this first-party GitHub action are extremely unlikely, but SHA pinning is the established supply-chain hardening practice for CI workflows.

Impact: low · Exploitability: unlikely

Developer action: Pin actions/checkout to a full commit SHA for defense-in-depth.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/lint-and-typecheck.yml:16

Dependency advisory GHSA-2mjp-6q6p-2qxm applies

Minor caution · medium confidence

A security scanner found a medium-level vulnerability in a dependency. Without knowing which package is affected or how the app uses it, the practical risk is uncertain.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-2mjp-6q6p-2qxm to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-2mjp-6q6p-2qxm) against a dependency in the lockfile. The affected package identity was not provided in the scanner evidence, preventing assessment of runtime reachability, attacker input pathways, and concrete user harm. Without confirming the package is production-reachable and the vulnerable code is exercised, the advisory remains a minor weakness.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected package through a dependency audit, verify production versus dev-only usage, and update to a fixed version if available.

Scanner
osv-scanner 2.4.0
Rule
GHSA-2mjp-6q6p-2qxm
File role
production
Source
package-lock.json

zizmor reported unpinned-uses

Minor caution · high confidence

A standard build tool is referenced by a loose version label instead of an exact lock. This is common practice but could be hardened.

Technical evidence

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

Contextual assessment: The Node setup action is referenced by major version tag v4 rather than a commit SHA. This is a common convention but introduces a minor supply-chain risk if the tag is retagged or compromised. The workflow is maintainer-triggered only, limiting exposure.

Impact: low · Exploitability: unlikely

Developer action: Pin the action to a full commit SHA for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:46

zizmor reported unpinned-uses

Minor caution · high confidence

The Node.js setup step uses a version label for a standard GitHub tool. Common practice, but locking to a specific version is safer.

Technical evidence

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

Contextual assessment: The actions/setup-node step is referenced by a mutable v4 tag. This is a first-party GitHub action with no direct secret exposure in its configuration. Supply-chain risk from tag movement is present but lower than for third-party actions with secret access.

Impact: low · Exploitability: plausible

Developer action: Pin to a commit SHA for supply-chain best practices.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:95

Gitleaks reported generic-api-key

Minor caution · high confidence

The app includes a built-in access key for a public character-search website so the search feature works out of the box. This key is not your personal API key and does not touch your private data. The only downside is that the key is visible in the source code, so the search service could disable it and the feature would stop working until the app is updated.

Technical evidence

Scanner reason: Gitleaks matched secret-detection rule generic-api-key in this repository.

Contextual assessment: The flagged value is a hardcoded fallback token for the JannyAI public bot-discovery search service. It is used alongside a runtime-cached token to query a public search endpoint for character listings. This is a shared service-access token distributed with the application, not a user-owned secret or provider API key. No user credentials, private data, or model-provider keys are involved. The weakness is that hardcoding a service token in source makes rotation difficult and exposes the token publicly, but the concrete harm is limited to the discovery feature breaking if the token is revoked.

Impact: low · Exploitability: unlikely

Developer action: Consider fetching the service token from a configurable endpoint or rotating it periodically, and document that it is an intentional shared public-service token rather than a private secret.

Scanner
gitleaks 8.30.1
Rule
generic-api-key
File role
production
Source
src/lib/services/discovery/providers/janny.ts:9

Dependency advisory GHSA-p88m-4jfj-68fv applies

Minor caution · medium confidence

A security scanner found that one of the app's bundled libraries has a known security advisory. Because this is a desktop app where you choose which AI services to connect to, the practical risk of someone exploiting this is low. It is still good practice to update the library when a fixed version is available.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-p88m-4jfj-68fv to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-p88m-4jfj-68fv) to a dependency declared in the lockfile. This is a Tauri desktop application where the affected dependency is most likely a transitive HTTP or parsing library used for outbound AI provider calls. In a desktop context, the attack surface is limited: the user selects their own AI providers and endpoints, and attacker-controlled input would need to come from a malicious provider response or imported file. The advisory severity alone does not establish runtime reachability or concrete user harm in this deployment model. Without confirmed exploitation of the specific vulnerable code path, the incremental risk is low.

Impact: low · Exploitability: unlikely

Developer action: Update the affected dependency to a version that resolves the advisory when a fixed release is available. Run npm audit to identify the specific package and upgrade path.

Scanner
osv-scanner 2.4.0
Rule
GHSA-p88m-4jfj-68fv
File role
production
Source
package-lock.json

zizmor reported excessive-permissions

Minor caution · high confidence

The CI job does not explicitly state what it is allowed to do, so it inherits a broad default access level. The job only needs to read code and run checks, so it should declare that minimal access explicitly.

Technical evidence

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

Contextual assessment: The workflow declares no explicit permissions block, so the job inherits the repository's default GITHUB_TOKEN permissions. This lint-and-typecheck job only needs read access for checkout; if the repository default is write-enabled, the token carries unnecessary write scopes that are never used. Adding a least-privilege permissions declaration limits blast radius.

Impact: low · Exploitability: unlikely

Developer action: Add an explicit permissions block with contents: read to enforce least privilege.

Scanner
zizmor 1.28.0
Rule
excessive-permissions
File role
tooling
Source
.github/workflows/lint-and-typecheck.yml:12-35

zizmor reported unpinned-uses

Minor caution · high confidence

The Rust toolchain installer is referenced by a loose label instead of an exact version lock. This is common but could be hardened.

Technical evidence

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

Contextual assessment: The Rust toolchain action is referenced by a floating stable tag rather than a commit SHA. This is a widely used convention for this particular action. The workflow triggers only on tag pushes or manual dispatch, so exposure is limited to maintainer-initiated runs.

Impact: low · Exploitability: unlikely

Developer action: Pin the action to a full commit SHA for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:52

Dependency advisory GHSA-35p6-xmwp-9g52 applies

Minor caution · medium confidence

A security scanner found a low-severity issue in one of the app's libraries. The practical impact is minimal, especially in a desktop app context. Updating the library when convenient is recommended but not urgent.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-35p6-xmwp-9g52 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a low-severity advisory (GHSA-35p6-xmwp-9g52) to a dependency in the lockfile. Low-severity advisories typically describe edge-case behavior or limited-impact issues. In this Tauri desktop application, the affected dependency is likely either a development-only tool or a production library with constrained input sources. The desktop deployment model further limits exposure compared to a server application. Concrete user harm from this advisory is unlikely to be achievable in practice.

Impact: low · Exploitability: unlikely

Developer action: Update the affected dependency at the next convenient maintenance window. Run npm audit to identify the specific package.

Scanner
osv-scanner 2.4.0
Rule
GHSA-35p6-xmwp-9g52
File role
production
Source
package-lock.json

Dependency advisory RUSTSEC-2024-0411 applies

Minor caution · low confidence

A third-party library has a known minor issue flagged in a security database. No evidence suggests it can be exploited through normal use of this desktop app.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0411 to a dependency declared by this repository.

Contextual assessment: A medium-severity RustSec advisory is matched for a dependency declared in this Cargo.lock, but the affected package name and version were stripped from the scanner candidate output. The project is a locally executing Tauri desktop application with SQLite storage and outbound AI provider calls. Without identifying the specific crate or confirming that attacker-controlled data reaches the vulnerable code path, the advisory is best treated as a routine dependency update item with low practical risk.

Impact: low · Exploitability: unlikely

Developer action: Identify the affected crate from the advisory and update to a patched version when available.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0411
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory GHSA-p8p7-x288-28g6 applies

Minor caution · medium confidence

A security scanner found a medium-severity issue in one of the app's libraries. Because this is a desktop app rather than a public web server, the chance of this being exploited is low. Updating the library when a fix is available is good practice.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-p8p7-x288-28g6 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-p8p7-x288-28g6) to a dependency in the lockfile. The affected dependency may be a build-time or development tool that does not ship in the production bundle, or a production library with limited input exposure. In either case, the Tauri desktop deployment model constrains the attack surface: there is no publicly accessible server, and inputs are user-controlled or come from user-selected AI providers. Without confirmed runtime reachability of the vulnerable code path, the risk remains low.

Impact: low · Exploitability: unlikely

Developer action: Update the affected dependency to a fixed version when available. Use npm audit to identify the specific package and determine whether it is a development or production dependency.

Scanner
osv-scanner 2.4.0
Rule
GHSA-p8p7-x288-28g6
File role
production
Source
package-lock.json

Dependency advisory RUSTSEC-2025-0080 applies

Minor caution · medium confidence

A library used for secure network connections has a known issue flagged at medium severity. Since you choose which AI services to connect to, an attacker would need to trick you into connecting to a malicious server to trigger it, and the likely result would be the app crashing rather than data being stolen.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2025-0080 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched RUSTSEC-2025-0080 against a dependency in this Cargo.lock. The project directly depends on rustls and reqwest, so TLS-related code paths are exercised when the application connects to AI provider endpoints. However, the advisory is rated medium severity, the visible lock-file excerpt does not include the specific affected package version, and the concrete harm for medium-severity Rust TLS/crypto advisories is typically a panic or denial of service rather than credential theft or code execution. Because this is a desktop application where the user configures their own provider endpoints, an attacker would need to operate a malicious TLS server that the user explicitly connects to, limiting practical exploitability.

Impact: low · Exploitability: plausible

Developer action: Update the affected dependency to a patched version when convenient and run cargo update for the relevant crate.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2025-0080
File role
production
Source
src-tauri/Cargo.lock

Dependency advisory GHSA-m8rv-5g2x-5cg5 applies

Minor caution · medium confidence

A security scanner found a medium-severity issue in one of the app's libraries. In a desktop app context, the practical risk is low. Updating the library when a fix is available is recommended.

Technical evidence

Scanner reason: OSV-Scanner matched advisory GHSA-m8rv-5g2x-5cg5 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched a medium-severity advisory (GHSA-m8rv-5g2x-5cg5) to a dependency in the lockfile. As with the other matched advisories, the Tauri desktop deployment model limits the attack surface. The affected dependency is either a development tool not present in the shipped binary or a production library whose vulnerable code path requires specific attacker-controlled input that is constrained in this application context. Advisory severity alone does not establish concrete exploitable user harm here.

Impact: low · Exploitability: unlikely

Developer action: Update the affected dependency to a fixed version when available. Use npm audit to identify the specific package and upgrade path.

Scanner
osv-scanner 2.4.0
Rule
GHSA-m8rv-5g2x-5cg5
File role
production
Source
package-lock.json

zizmor reported unpinned-uses

Minor caution · high confidence

The workflow uses a version label for the Rust cache action instead of locking it to a specific commit. Common practice but not maximally secure.

Technical evidence

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

Contextual assessment: The rust-cache action is referenced by major version tag v2 rather than a pinned SHA. This is a supply-chain hardening best practice issue. The action is a widely used community action for caching Rust build artifacts.

Impact: low · Exploitability: unlikely

Developer action: Pin actions to full commit SHAs instead of version tags for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:53

zizmor reported unpinned-uses

Minor caution · high confidence

The Java setup step uses a version label for a standard GitHub tool. Common practice, but locking to a specific version is safer.

Technical evidence

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

Contextual assessment: The actions/setup-java step is referenced by a mutable v4 tag. This is a first-party GitHub action used in the Android build job. No direct secret exposure in this step's configuration, though the job contains Android keystore secrets in later steps. Supply-chain risk is present but limited.

Impact: low · Exploitability: plausible

Developer action: Pin to a commit SHA for supply-chain best practices.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:107

Dependency advisory RUSTSEC-2024-0418 applies

Minor caution · medium confidence

A network or cryptography library used by the app has a known medium-severity issue. The app only connects to services you configure, so triggering it would require a malicious server on your end, and the likely outcome is a crash rather than a security breach.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0418 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched RUSTSEC-2024-0418 against a dependency in this Cargo.lock. The project makes outbound HTTPS requests to user-configured AI provider endpoints via reqwest and rustls, so TLS processing code is reachable at runtime. The advisory is medium severity, and the specific affected package and version are not visible in the truncated lock-file excerpt. For medium-severity advisories in this ecosystem, the typical impact is a panic or denial of service triggered by a malicious peer, not arbitrary code execution or credential exfiltration. Exploitability is constrained because the user selects which endpoints to connect to.

Impact: low · Exploitability: plausible

Developer action: Update the affected dependency to a patched version when convenient and run cargo update for the relevant crate.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0418
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The build script uses a version label for a release-publishing helper instead of a fixed fingerprint. If that helper were hijacked, it could affect published releases. The risk is low, but pinning to an exact version is safer.

Technical evidence

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

Contextual assessment: The workflow references a third-party release action by major-version tag rather than a pinned commit SHA. This action handles the GitHub release token, so a compromised tag could theoretically interact with release assets. The action is widely used and reputable, making tag re-pointing unlikely, but the supply-chain hardening gap is real. No user-controlled input determines the action reference.

Impact: low · Exploitability: unlikely

Developer action: Pin third-party actions to a specific commit SHA with an integrity comment for supply-chain hardening.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:157

zizmor reported unpinned-uses

Minor caution · high confidence

The Android NDK setup step uses a version tag rather than a fixed commit hash. If the tag were moved to malicious code, the workflow could be affected.

Technical evidence

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

Contextual assessment: The workflow references nttld/setup-ndk@v1, a floating tag from a third-party maintainer. A tag redirection could execute different code in a job with access to Android keystore secrets. Third-party actions carry slightly higher supply-chain risk than GitHub-official ones.

Impact: medium · Exploitability: unlikely

Developer action: Pin this action to a specific commit SHA instead of a floating tag.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/release.yml:111

Dependency advisory RUSTSEC-2024-0414 applies

Minor caution · medium confidence

A secure-connection library has a known medium-severity flaw. Because the app connects only to AI services you set up yourself, an attacker would need to control one of those endpoints to trigger the issue, and the probable effect is the app stopping rather than your data being exposed.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0414 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched RUSTSEC-2024-0414 against a dependency in this Cargo.lock. The project directly lists rustls as a dependency and uses reqwest for outbound HTTP, meaning TLS handshake and connection code is exercised during normal operation when contacting AI providers. The advisory carries medium severity. The exact affected package version is not visible in the provided lock-file excerpt, so the precise fix version cannot be confirmed from the supplied evidence alone. The expected impact for this class of advisory is denial of service via panic, requiring a malicious TLS server that the user connects to, which limits practical exploitability in a desktop app with user-chosen endpoints.

Impact: low · Exploitability: plausible

Developer action: Update the affected dependency to a patched version when convenient and run cargo update for the relevant crate.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0414
File role
production
Source
src-tauri/Cargo.lock

zizmor reported unpinned-uses

Minor caution · high confidence

The Rust toolchain setup uses a version label for a third-party tool. If that label were redirected, untrusted code could run during the build.

Technical evidence

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

Contextual assessment: The dtolnay/rust-toolchain action is referenced by a mutable stable tag. This is a widely used third-party action. No direct secret exposure in this step, but a compromised tag could execute arbitrary code in the CI environment. Supply-chain risk is present for a third-party action.

Impact: low · Exploitability: plausible

Developer action: Pin to a commit SHA for stronger supply-chain integrity.

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:102

Dependency advisory RUSTSEC-2024-0420 applies

Minor caution · medium confidence

A cryptography or networking library has a known medium-severity issue. The app only reaches out to services you configure, so exploiting it would require a malicious server you connect to, and the likely result is a crash rather than stolen information.

Technical evidence

Scanner reason: OSV-Scanner matched advisory RUSTSEC-2024-0420 to a dependency declared by this repository.

Contextual assessment: OSV-Scanner matched RUSTSEC-2024-0420 against a dependency in this Cargo.lock. The project's dependency graph includes rustls and reqwest, so TLS-related code is reachable during outbound connections to AI provider APIs. The advisory is medium severity, and the affected package and version are not identifiable from the truncated lock-file excerpt. Medium-severity advisories in Rust TLS or crypto crates generally result in panics or denial of service rather than memory corruption or data exfiltration. Exploitability is limited because the user controls which endpoints the application contacts.

Impact: low · Exploitability: plausible

Developer action: Update the affected dependency to a patched version when convenient and run cargo update for the relevant crate.

Scanner
osv-scanner 2.4.0
Rule
RUSTSEC-2024-0420
File role
production
Source
src-tauri/Cargo.lock
Expected scanner matches (14)

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script runs a fixed cargo command to update a lock file during release. No user-controlled data is injected into the command, so there is no security risk.

Technical evidence

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

Contextual assessment: This execSync call runs 'cargo update -p aventura' with a static command string and a fixed cwd. No external or untrusted input reaches the command. This is a standard release-tooling operation for updating a Cargo.lock file after a version bump.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:96

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script creates a git commit with a version number the developer typed on the command line. Since the developer controls the input and runs the script locally, this is normal release tooling with no security concern.

Technical evidence

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

Contextual assessment: This execSync call runs 'git commit -m "chore: bump version to ${newVersion}"' where newVersion is derived from a developer-supplied CLI argument. The script is a local release tool run by the developer themselves; the input source is the developer's own command line, not untrusted external data. This is a standard release-script pattern.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:109

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

This is a release helper script that a developer runs to create a version tag in git. Using shell commands for this is normal and expected in release tooling.

Technical evidence

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

Contextual assessment: The matched execSync call is part of a developer-run release tooling script that creates a git tag using a version string derived from the project's own release workflow. The command is invoked locally by a maintainer performing a release, not by application runtime code or untrusted user input. This is a standard use of shell execution in release automation.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:114

zizmor reported superfluous-actions

Expected behavior · high confidence

A tool noted that a build step might duplicate something the build system already does. This is a style or efficiency note, not a security problem.

Technical evidence

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

Contextual assessment: The scanner flags a release action as superfluous because the runner may already include equivalent functionality. This is an informational best-practice observation about redundancy, not a security defect. No untrusted input flows into a dangerous sink, and no credential or secret is exposed by using this action.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
superfluous-actions
File role
tooling
Source
.github/workflows/ci.yml:157

zizmor reported excessive-permissions

Expected behavior · high confidence

The workflow needs permission to create GitHub releases and upload files. This is the correct and necessary permission for a release workflow, and it is limited to just that scope.

Technical evidence

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

Contextual assessment: The workflow declares contents write permission at the top level. This permission is required because the Tauri release action creates GitHub releases and uploads assets using the GITHUB_TOKEN. The permission is scoped to contents only, not an all-permissions blanket, and matches the stated release workflow purpose.

Impact: none · Exploitability: unlikely

Developer action: none

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

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script checks for uncommitted changes using a fixed git command. No user input is involved, so there is no risk.

Technical evidence

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

Contextual assessment: This execSync call runs 'git status --porcelain' as a fully static command string. No variable or external input is interpolated. It is a pre-check to ensure the working tree is clean before releasing.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:60

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script runs a fixed linting command during release. No user input is involved, so there is no risk.

Technical evidence

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

Contextual assessment: This execSync call runs 'npm run lint:fix' as a fully static command string. No variable or external input is interpolated. It is a standard linting step in a release workflow.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:105

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script runs a fixed formatting command during release. No user input is involved, so there is no risk.

Technical evidence

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

Contextual assessment: This execSync call runs 'npm run format' as a fully static command string. No variable or external input is interpolated. It is a standard formatting step in a release workflow.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:104

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script stages all files for a release commit using a fixed git command. No user input is involved, so there is no risk.

Technical evidence

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

Contextual assessment: This execSync call runs 'git add .' as a fully static command string. No variable or external input is interpolated. It stages all changes for the release commit.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:110

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script updates the package version using a version number the developer typed on the command line. Since the developer controls the input and runs the script locally, this is normal release tooling with no security concern.

Technical evidence

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

Contextual assessment: This execSync call runs 'npm version ${newVersion} --no-git-tag-version' where newVersion is derived from a developer-supplied CLI argument. The script is a local release tool run by the developer; the input source is the developer's own command line, not untrusted external data. This is a standard release-script pattern.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:75

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

The script creates a release branch using a version number the developer typed on the command line. Since the developer controls the input and runs the script locally, this is normal release tooling with no security concern.

Technical evidence

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

Contextual assessment: This execSync call runs 'git checkout -b release/v${newVersion}' where newVersion is derived from a developer-supplied CLI argument. The script is a local release tool run by the developer; the input source is the developer's own command line, not untrusted external data. This is a standard release-script pattern.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:71

zizmor reported excessive-permissions

Expected behavior · high confidence

The workflow needs permission to create releases on GitHub, which is exactly what it does. The permission is limited to release creation and is not overly broad.

Technical evidence

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

Contextual assessment: The workflow declares permissions: contents: write at the top level. This permission is required because the tauri-action step creates GitHub releases using GITHUB_TOKEN. The permission is scoped to contents only, not a broad write-all grant. This is the minimum permission needed for the stated purpose of publishing pre-release builds.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
excessive-permissions
File role
tooling
Source
.github/workflows/ci.yml:13

OpenGrep reported tavernkeeper.dynamic-execution.node-shell

Expected behavior · high confidence

This is a release helper script that a developer runs to push a version branch and tag to a remote repository. Using shell commands for this is normal and expected in release tooling.

Technical evidence

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

Contextual assessment: The matched execSync call is part of a developer-run release tooling script that pushes the release branch and tag to a configured remote. The remote name and version string originate from the project's own release workflow and are not supplied by application users or untrusted external input. Shell execution in release automation is expected behavior.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.node-shell
File role
tooling
Source
scripts/release.js:118

zizmor reported superfluous-actions

Expected behavior · high confidence

The scanner notes the release tool might do something the build system can already do. This is a minor efficiency note, not a security problem.

Technical evidence

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

Contextual assessment: The scanner flags that the referenced action may duplicate functionality already provided by the GitHub runner. This is an informational code-quality observation with no security impact. The action is used for its stated purpose of uploading artifacts to a GitHub release, which is a normal CI operation for a release workflow.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
superfluous-actions
File role
tooling
Source
.github/workflows/release.yml:152

Related contextual observations

No artifact upload steps exist in this workflow

low risk · high confidence

The credential-persistence concern flagged by the scanner has no way to cause harm here because the workflow never uploads files as artifacts.

Technical assessment

The artipacked exfiltration vector requires an upload-artifact step that packages the .git directory containing the persisted token. This workflow only performs checkout, dependency installation, build, lint, and type-check with no upload steps, closing the exfiltration path entirely.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Additional unpinned action reference not flagged by scanner

low risk · high confidence

Another action in the same workflow also uses a floating tag and was not separately flagged. It carries the same supply-chain hardening gap.

Technical assessment

Line 66 references tauri-apps/tauri-action@v0, another floating tag. This step has access to GITHUB_TOKEN and Tauri signing secrets, so a tag redirection would be higher-impact than the upload-artifact step. It was not separately flagged by the scanner but shares the same unpinned-uses pattern.

Impact: medium · Exploitability: unlikely

Developer action: Pin to a specific commit SHA for consistency with the other actions in this workflow.

Sources:

Insufficient source context for precise dependency verification

low risk · low confidence

The evidence provided does not include enough of the dependency file to identify exactly which libraries are flagged. The assessments are based on the types of advisories and the nature of the app, but a more thorough review would be possible with the complete dependency list.

Technical assessment

The supplied source excerpt covers only the first 41 lines of a 192KB Cargo lockfile, and the scanner removed package details from all eight advisory candidates. This prevents confirming which specific crates and versions match each advisory, whether the vulnerable code paths are compiled into the application, and whether attacker-controlled input can reach them. The assessments above are based on the advisory IDs, severity levels, and the project context as a Tauri desktop application. A full lockfile or the specific package entries would allow more precise runtime-reachability analysis.

Impact: low · Exploitability: unlikely

Developer action: Run a dependency audit with package details visible and update all flagged crates to their latest patched or maintained versions.

Sources:

Coverage and limitations

Tools

Limitations

Technical scan identity