You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Stop interpolating release analyzer workflow inputs into shell commands #5271
The release analyzer workflow interpolates workflow_dispatch string inputs directly into the shell command used in run:. Shell metacharacters in start_tag or end_tag are parsed by bash before Python starts.
The workflow currently expands inputs like this inside run:: ${{ github.event.inputs.start_tag && format('--start-tag {0}', github.event.inputs.start_tag) || '' }}
A value such as v1.0.0; touch /tmp/proof # becomes part of the shell command line and executes as an additional command.
Expected behavior
Workflow inputs should be treated as data and passed to Python without shell interpretation.
Proposed fix
Move the dispatch inputs into environment variables and build the Python argument list in bash using an array before invoking the analyzer.
Validation
I have a PR prepared that:
removes direct interpolation of start_tag and end_tag into run:
passes the values through environment variables and a bash array
reproduces command execution with the pre-patch rendered command in Linux Docker
confirms the patched form passes the malicious value as a single argv element and does not create the proof file
Hi @petrmarinec , Thanks for reporting this.
Directly interpolating workflow_dispatch inputs into the run block leaves the workflow vulnerable to command injection. Binding these inputs to environment variables first is the correct and safest approach to handle arbitrary strings in GitHub Actions.
We see you have already opened a PR (#5272) to address this. Our team is currently reviewing your PR.
thanks for your contribution.
Fixed on main via #5272 (commit 5a129a4): the workflow_dispatch inputs are now bound to env vars instead of being interpolated into the run block, which closes the injection vector. Thanks for flagging. Closing as fixed.
Activity
sanketpatil06 commentedon Apr 14, 2026
Hi @petrmarinec , Thanks for reporting this.
Directly interpolating
workflow_dispatchinputs into the run block leaves the workflow vulnerable to command injection. Binding these inputs to environment variables first is the correct and safest approach to handle arbitrary strings in GitHub Actions.We see you have already opened a PR (#5272) to address this. Our team is currently reviewing your PR.
thanks for your contribution.
fix: Stop interpolating release analyzer workflow inputs into shell c…
GWeale commentedon Jun 17, 2026
Fixed on main via #5272 (commit 5a129a4): the workflow_dispatch inputs are now bound to env vars instead of being interpolated into the run block, which closes the injection vector. Thanks for flagging. Closing as fixed.
fix: Stop interpolating release analyzer workflow inputs into shell c…