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
The tj-actions/changed-files workflow allows for command injection in changed filenames, allowing an attacker to execute arbitrary code and potentially leak secrets.
Details
The changed-files action returns a list of files changed in a commit or pull request which provides an escape_json input enabled by default, only escapes " for JSON values.
This could potentially allow filenames that contain special characters such as ; and ` (backtick) which can be used by an attacker to take over the GitHub Runner if the output value is used in a raw fashion (thus being directly replaced before execution) inside a run block. By running custom commands an attacker may be able to steal secrets such as GITHUB_TOKEN if triggered on other events than pull_request. For example on push.
Proof of Concept
Submit a pull request to a repository with a new file injecting a command. For example $(whoami).txt which is a valid filename.
Upon approval of the workflow (triggered by the pull request), the action will get executed and the malicious pull request filename will flow into the List all changed files step below.
- name: List all changed filesrun: | for file in $; do echo "$file was changed" done
Example output:
##[group]Run for file in $(whoami).txt; dofor file in $(whoami).txt; doecho "$file was changed"doneshell: /usr/bin/bash -e {0}##[endgroup]runner.txt was changed
Impact
This issue may lead to arbitrary command execution in the GitHub Runner.
Resolution
A new safe_output input would be enabled by default and return filename paths escaping special characters like ;, ` (backtick), $, (), etc for bash environments.
A safe recommendation of using environment variables to store unsafe outputs.
- name: List all changed filesenv:
ALL_CHANGED_FILES: $run: | for file in "$ALL_CHANGED_FILES"; do echo "$file was changed" done
A supply chain attack compromised the tj-actions/changed-files GitHub Action, impacting over 23,000 repositories. Attackers retroactively modified multiple version tags to reference a malicious commit, exposing CI/CD secrets in workflow logs. The vulnerability existed between March 14 and March 15, 2025, and has since been mitigated. This poses a significant risk of unauthorized access to sensitive information.
The attack involved modifying the tj-actions/changed-files GitHub Action to execute a malicious Python script. This script extracted secrets from the Runner Worker process memory and printed them in GitHub Actions logs, making them publicly accessible in repositories with public workflow logs.
[!WARNING] Security Alert: A critical security issue was identified in this action due to a compromised commit.
This commit has been removed from all tags and branches, and necessary measures have been implemented to prevent similar issues in the future.
Action Required:
Review your workflows executed between March 14 and March 15. If you notice unexpected output under the changed-files section, decode it using the following command: echo 'xxx' | base64 -d | base64 -d
If the output contains sensitive information (e.g., tokens or secrets), revoke and rotate those secrets immediately.
If your workflows reference this commit directly by its SHA, you must update them immediately to avoid using the compromised version.
If you are using tagged versions (e.g., v35, v44.5.1), no action is required as these tags have been updated and are now safe to use.
Additionally, as a precaution, we recommend rotating any secrets that may have been exposed during this timeframe to ensure the continued security of your workflows.
What's Changed
docs: update docs to highlight security issues by @jackton1 in #2465
fix: update github workflow update-readme.yml by @jackton1 in #2466
fix: update permission in update-readme.yml workflow by @jackton1 in #2467
fix: update update-readme.yml to sign-commits by @jackton1 in #2468
uses: soos-io/soos-dast-github-action@98033e0e7fa4af5eee1a56f73d8fc1367294b4c8 # Use latest version from https://github.com/marketplace/actions/soos-dast
renovateBot
changed the title
Update tj-actions/changed-files action to v46 [SECURITY]
Update tj-actions/changed-files action to v46 [SECURITY] - autoclosed
Mar 27, 2026
renovateBot
changed the title
Update tj-actions/changed-files action to v46 [SECURITY] - autoclosed
Update tj-actions/changed-files action to v46 [SECURITY]
Mar 30, 2026
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer TIP This summary will be updated as you push new changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v35→v46Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
tj-actions/changed-files has Potential Actions command injection in output filenames (GHSL-2023-271)
CVE-2023-51664 / GHSA-mcph-m25j-8j63
More information
Details
Summary
The
tj-actions/changed-filesworkflow allows for command injection in changed filenames, allowing an attacker to execute arbitrary code and potentially leak secrets.Details
The
changed-filesaction returns a list of files changed in a commit or pull request which provides anescape_jsoninput enabled by default, only escapes"for JSON values.This could potentially allow filenames that contain special characters such as
;and ` (backtick) which can be used by an attacker to take over the GitHub Runner if the output value is used in a raw fashion (thus being directly replaced before execution) inside arunblock. By running custom commands an attacker may be able to steal secrets such asGITHUB_TOKENif triggered on other events thanpull_request. For example onpush.Proof of Concept
$(whoami).txtwhich is a valid filename.List all changed filesstep below.Example output:
Impact
This issue may lead to arbitrary command execution in the GitHub Runner.
Resolution
A new
safe_outputinput would be enabled by default and return filename paths escaping special characters like ;, ` (backtick), $, (), etc for bash environments.A safe recommendation of using environment variables to store unsafe outputs.
Resources
Severity
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
tj-actions changed-files through 45.0.7 allows remote attackers to discover secrets by reading actions logs.
CVE-2025-30066 / GHSA-mrrh-fwg8-r2c3
More information
Details
Summary
A supply chain attack compromised the tj-actions/changed-files GitHub Action, impacting over 23,000 repositories. Attackers retroactively modified multiple version tags to reference a malicious commit, exposing CI/CD secrets in workflow logs. The vulnerability existed between March 14 and March 15, 2025, and has since been mitigated. This poses a significant risk of unauthorized access to sensitive information.
This has been patched in v46.0.1.
Details
The attack involved modifying the tj-actions/changed-files GitHub Action to execute a malicious Python script. This script extracted secrets from the Runner Worker process memory and printed them in GitHub Actions logs, making them publicly accessible in repositories with public workflow logs.
Key Indicators of Compromise (IoC):
v1.0.0: 0e58ed8671d6b60d0890c21b07f8835ace038e67v35.7.7-sec: 0e58ed8671d6b60d0890c21b07f8835ace038e67v44.5.1: 0e58ed8671d6b60d0890c21b07f8835ace038e67Malicious Code Execution:
The malicious script downloaded and executed a Python script that scanned memory for secrets, base64-encoded them, and logged them in the build logs:
This script targeted the Runner Worker process, extracting and exfiltrating its memory contents.
Proof of Concept (PoC)
Steps to Reproduce:
Detection:
Analyze network traffic using Harden-Runner, which detects unauthorized outbound requests to:
gist.githubusercontent.comLive reproduction logs:
🔗 Harden-Runner Insights
This attack was detected by StepSecurity when anomaly detection flagged an unauthorized outbound network call to
gist.githubusercontent.com.Duration of Vulnerability
The vulnerability was active between March 14 and March 15, 2025.
Action Required
Review your workflows executed between March 14 and March 15:
Update workflows referencing the compromised commit:
Tagged versions:
v35,v44.5.1), no action is required as these tags have been updated and are now safe to use.Rotate potentially exposed secrets:
Impact
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N/E:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
tj-actions/changed-files (tj-actions/changed-files)
v46.0.1Compare Source
🐛 Bug Fixes
➕ Add
🔄 Update
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (9cc867c) - (github-actions[bot])
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (f2f439b) - (github-actions[bot])
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (531f5f7) - (github-actions[bot])
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (9237eb7) - (github-actions[bot])
📚 Documentation
⚙️ Miscellaneous Tasks
⬆️ Upgrades
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (45fb12d) - (github-actions[bot])
v46.0.0Compare Source
What's Changed
New Contributors
Full Changelog: tj-actions/changed-files@v45.0.5...v46.0.0
What's Changed
Full Changelog: tj-actions/changed-files@v45.0.5...v46.0.0
v46Compare Source
🚀 Features
➖ Remove
🔄 Update
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (3dbc1e1) - (github-actions[bot])
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (b1ccff8) - (github-actions[bot])
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (050a3d3) - (github-actions[bot])
📚 Documentation
🧪 Testing
⚙️ Miscellaneous Tasks
⬆️ Upgrades
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> (db731a1) - (github-actions[bot])
v45.0.9Compare Source
What's Changed
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.