Skip to content

Warden weekly sweep #495

Description

@github-actions

Warden Scheduled Scan Results

Run: 2026-08-24T06:29:09.646Z
Commit: e6ef59b

Summary

Severity Count
High 1
Medium 4
Low 3

Findings

scripts/create-homebrew-formula.sh

  • BR3-5ST Unsanitized CLI arguments enable Ruby code injection into generated Homebrew formula (L81-L90) · high
    CLI arguments for version, SHA, and URL are interpolated into a Ruby formula template without sanitization, enabling arbitrary code injection into the generated Homebrew formula.

src/cli/cli-tool-catalog.ts

  • AVG-YAA finally block may suppress original invocation error (L75) · medium
    If service.disconnect() throws, the original error from invokeTool is lost because a finally block exception overrides the preceding try exception.

src/cli/daemon-control.ts

  • Z4X-7AS Unhandled spawn error in startDaemonBackground can crash process (L127-L137) · medium
    spawn() with stdio: 'ignore' and no 'error' listener will crash the Node.js process if spawn fails (e.g., EMFILE, ENOMEM, or the Node.js binary is no longer accessible). The returned ChildProcess emits an 'error' event asynchronously on spawn failure; without a listener, Node.js throws it as an uncaught exception.
  • M9Q-JQV ensureDaemonRunning returns early without ensuring daemon readiness (L186-L197) · medium
    When client.status() throws any error other than DaemonVersionMismatchError, ensureDaemonRunning returns silently instead of retrying or restarting the daemon, breaking its readiness guarantee.
  • 7B9-VVX startDaemonForeground masks signal exits as successful (L239-L240) · medium
    The 'exit' handler uses code ?? 0, which treats signal terminations (where code is null) as exit code 0, making crashes or kills indistinguishable from clean exits.

scripts/bundle-axe.sh

  • B3E-HLC Build script uses predictable temporary directory instead of mktemp (L12-L118) · low
    bundle-axe.sh creates its temporary directory with a hard-coded /tmp/axe-download-$$ path instead of using mktemp -d. Because $$ expands to the shell PID, the path is predictable. If the directory already exists (for example from a prior interrupted run), mkdir -p succeeds silently. curl -o then writes into that directory and will follow any symlink planted for axe-release.tar.gz, redirecting the downloaded content to an arbitrary file path. There is also no EXIT trap to clean up on failure, so interrupted runs leave the predictable directory behind.

scripts/package-macos-portable.sh

  • K4Y-ARB install_node_runtime_for_arch leaks temp directory on error exits (L195) · low
    The RETURN trap registered for temp directory cleanup does not execute on explicit exit inside a function, leaving behind the download directory when validation fails.

src/cli/commands/purge-ui.ts

  • 965-3L8 usageBar incorrectly renders non-zero usage for zero-byte entries (L78-L79) · low
    The Math.max(1, ...) clamp forces zero-byte items to render one filled bar character, making the usage chart visually misleading.

Generated by Warden

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions