Context
Security review (defense-in-depth); fixed in PR #28.
Problem
python-setup/pip used eval on strings built from install-groups, and pip/uv/pixi/release-pypi
interpolated caller inputs (install-groups, package, activate-environment, pypi-repository-url, …) directly
into run: bodies. A consumer wiring an input from untrusted event data would get command injection.
Affected locations
| File |
Location |
actions/python-setup/pip/action.yml |
eval "$install_cmd" / eval "$dep_groups_cmd" |
actions/python-setup/{pip,uv,pixi}/action.yml |
${{ inputs.install-groups }} / activate-environment in run bodies |
actions/release/pypi/action.yml |
${{ inputs.package }} in find_pkg_dir; REPO_ARGS string |
Fix (PR #28)
Removed both evals (argv arrays); routed inputs through env:; built REPO_ARGS as a bash array.
Severity / Effort
Low (defense-in-depth) · S
Definition of Done
Context
Security review (defense-in-depth); fixed in PR #28.
Problem
python-setup/pipusedevalon strings built frominstall-groups, andpip/uv/pixi/release-pypiinterpolated caller inputs (
install-groups,package,activate-environment,pypi-repository-url, …) directlyinto
run:bodies. A consumer wiring an input from untrusted event data would get command injection.Affected locations
actions/python-setup/pip/action.ymleval "$install_cmd"/eval "$dep_groups_cmd"actions/python-setup/{pip,uv,pixi}/action.yml${{ inputs.install-groups }}/activate-environmentin run bodiesactions/release/pypi/action.yml${{ inputs.package }}infind_pkg_dir;REPO_ARGSstringFix (PR #28)
Removed both
evals (argv arrays); routed inputs throughenv:; builtREPO_ARGSas a bash array.Severity / Effort
Low (defense-in-depth) · S
Definition of Done
evalin the pip action${{ }}in anyrun:body of these actions