Coordinated Disclosure Timeline
- 2023-05-05: Issue reported to security@hashicorp.com
- 2023-05-05: Report is acknowledged
- 2023-05-9: Fix is merged.
Summary
The hashicorp/terraform-cdk
repository is vulnerable to a command injection in Actions, allowing an attacker to take over the contents of the repository and leak secrets.
Product
CDK for Terraform
Tested Version
Details
Actions command injection in pr-copyright.yml
(GHSL-2023-104
)
The pr-copyright.yml
workflow is triggered on pull_request_target
(i.e., when a Pull Request against the base repository is created or updated), which also covers the case when a Pull Request originates from a fork.
Taking the above into account, this workflow runs the following step with data controlled by said fork (${{ github.event.pull_request.head.ref }}
– the name of the fork’s branch), allowing an attacker to take over the GitHub Runner and run custom commands (potentially stealing secrets and altering the repository).
- name: Push changes
if: steps.get_changes.outputs.changed != 0
run: |-
git add .
git commit -s -m "chore: add required copyright headers"
git push origin HEAD:${{ github.event.pull_request.head.ref }}
This issue was found by the Expression injection in Actions CodeQL query.
Proof of Concept
- Fork the hashicorp/terraform-cdk repository, whose name we will refer as
username/terraform-cdk-fork
. - Create a branch in
username/terraform-cdk-fork
with the namemain;echo${IFS}"hello";#
. - Push changes to the former branch.
- Create a pull request from
username/terraform-cdk-fork:main;echo${IFS}"hello";#
tohashicorp/terraform-cdk:master
. - Check the workflow runs for the new Actions run that will execute the command
echo "hello"
.
Impact
This issue may lead to stealing workflow secrets and modification of the repository.
Resources
- Keeping your GitHub Actions and workflows secure Part 2: Untrusted input
- Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests
Credit
This issue was discovered and reported by GHSL team member @jorgectf (Jorge Rosillo).
Contact
You can contact the GHSL team at securitylab@github.com
, please include a reference to GHSL-2023-104
in any communication regarding this issue.