Coordinated Disclosure Timeline
- 2020-12-11: Issue reported to maintainers.
- 2020-12-12: Issue acknowledged.
- 2021-01-16: Asked the maintainers for update. No reply.
- 2021-02-23: Asked the maintainers for update. No reply.
- 2021-03-11: Partial fix was applied.
- 2021-03-11: Disclosure deadline reached.
- 2021-03-25: Publication as per our disclosure policy.
- 2021-03-26: Maintainers notified GitHub Security Lab that the issue was mitigated.
Summary
The client.yml GitHub workflow is vulnerable to unauthorized modification of the base repository and secret exfiltration.
Product
appsmithorg/appsmith GitHub repository
Tested Version
The latest changeset 75b3f18 to the date.
Details
Issue: Untrusted code is explicitly checked out and run on a Pull Request from a fork
pull_request_target
was introduced to allow triggered workflows to comment on PRs, label them, assign people, etc. In order to make it possible the triggered action runner has read/write token for the base repository and access to secrets. In order to prevent untrusted code from execution, it runs in the context of the base repository.
By explicitly checking out and running the build script from a fork, the untrusted code will be able to push to the base repository and access its secrets.
on:
...
pull_request_target:
branches: [release, master]
paths:
- 'app/client/**'
- '!app/client/cypress/manual_TestSuite/**'
...
# Checkout the code
- name: Checkout the merged commit from PR and base branch
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/checkout@v2
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
...
# Install all the dependencies
- name: Install dependencies
run: yarn install
...
- name: Run the jest tests
run: REACT_APP_ENVIRONMENT=${{steps.vars.outputs.REACT_APP_ENVIRONMENT}} yarn run test:unit
...
Impact
The vulnerability allows for unauthorized modification of the base repository and secrets exfiltration.
Credit
This issue was discovered and reported by GHSL team member @JarLob (Jaroslav Lobačevski).
Contact
You can contact the GHSL team at securitylab@github.com
, please include a reference to GHSL-2020-331
in any communication regarding this issue.