Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/cut-dojo-tarball.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ on:
tag:
description: 'Release tag (e.g. v2026.5.22-dojo.3)'
required: true
notes:
description: 'Release notes (one line)'
required: false
default: 'Dojo fork tarball'

jobs:
cut:
Expand All @@ -23,8 +27,8 @@ jobs:
install-bun: "false"
- name: Build fork + Control UI
run: |
node scripts/build-all.mjs
node scripts/ui.js build
pnpm build
pnpm ui:build
- name: Pack tarball
id: pack
run: |
Expand All @@ -38,6 +42,6 @@ jobs:
run: |
gh release create "${{ inputs.tag }}" "${{ steps.pack.outputs.tgz }}" \
--title "${{ inputs.tag }}" \
--notes "AGT-051 — route retry steers through the system channel (nudge leak fix)."
--notes "${{ inputs.notes }}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 P1 (blocker) — Arbitrary shell command injection vulnerability detected. Directly expanding GitHub Actions expressions like ${{ inputs.notes }} and ${{ inputs.tag }} inside a run: block allows malicious input values (e.g., carrying quotes, semicolons, or shell metacharacters) to break out of the string context and execute arbitrary shell commands on the runner.

To resolve this safely, map the inputs to step-level environment variables (env:) and reference them inside the script using standard shell variable expansion ($VARIABLE).

Here is the secure implementation of this step:

      - name: Publish release
        env:
          GH_TOKEN: ${{ github.token }}
          RELEASE_TAG: ${{ inputs.tag }}
          RELEASE_NOTES: ${{ inputs.notes }}
          TGZ_FILE: ${{ steps.pack.outputs.tgz }}
        run: |
          gh release create "$RELEASE_TAG" "$TGZ_FILE" \
            --title "$RELEASE_TAG" \
            --notes "$RELEASE_NOTES"
          echo "SHA256 for the plugin Dockerfile ARG:"
          sha256sum "$TGZ_FILE"

[pass 1]

echo "SHA256 for the plugin Dockerfile ARG:"
sha256sum "${{ steps.pack.outputs.tgz }}"
Loading