Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-23f7-99jx-m54r

Опубликовано: 13 нояб. 2020
Источник: github
Github: Прошло ревью
CVSS3: 8.7

Описание

Remote code execution in dependabot-core branch names when cloning

Impact

Remote code execution vulnerability in dependabot-common and dependabot-go_modules when a source branch name contains malicious injectable bash code.

For example, if Dependabot is configured to use the following source branch name: "/$({curl,127.0.0.1})", Dependabot will make a HTTP request to the following URL: 127.0.0.1 when cloning the source repository.

When Dependabot is configured to clone the source repository during an update, Dependabot runs a shell command to git clone the repository:

git clone --no-tags --no-recurse-submodules --depth=1 --branch=<BRANCH> --single-branch <GITHUB_REPO_URL> repo/contents/path

Dependabot will always clone the source repository for go_modules during the file fetching step and can be configured to clone the repository for other package managers using the FileFetcher class from dependabot-common.

source = Dependabot::Source.new( provider: "github", repo: "repo/name", directory: "/", branch: "/$({curl,127.0.0.1})", ) repo_contents_path = "./file/path" fetcher = Dependabot::FileFetchers.for_package_manager("bundler"). new(source: source, credentials: [], repo_contents_path: repo_contents_path) fetcher.clone_repo_contents

Patches

The fix was applied to version 0.125.1: https://github.com/dependabot/dependabot-core/pull/2727

Workarounds

Escape the branch name prior to passing it to the Dependabot::Source class.

For example using shellwords:

require "shellwords" branch = Shellwords.escape("/$({curl,127.0.0.1})") source = Dependabot::Source.new( provider: "github", repo: "repo/name", directory: "/", branch: branch, )

Пакеты

Наименование

dependabot-omnibus

rubygems
Затронутые версииВерсия исправления

>= 0.119.0.beta1, < 0.125.1

0.125.1

Наименование

dependabot-common

rubygems
Затронутые версииВерсия исправления

>= 0.119.0.beta1, < 0.125.1

0.125.1

EPSS

Процентиль: 69%
0.00623
Низкий

8.7 High

CVSS3

Дефекты

CWE-74

Связанные уязвимости

CVSS3: 8.7
nvd
почти 5 лет назад

Dependabot is a set of packages for automated dependency management for Ruby, JavaScript, Python, PHP, Elixir, Rust, Java, .NET, Elm and Go. In Dependabot-Core from version 0.119.0.beta1 before version 0.125.1, there is a remote code execution vulnerability in dependabot-common and dependabot-go_modules when a source branch name contains malicious injectable bash code. For example, if Dependabot is configured to use the following source branch name: "/$({curl,127.0.0.1})", Dependabot will make a HTTP request to the following URL: 127.0.0.1 when cloning the source repository. The fix was applied to version 0.125.1. As a workaround, one can escape the branch name prior to passing it to the Dependabot::Source class.

EPSS

Процентиль: 69%
0.00623
Низкий

8.7 High

CVSS3

Дефекты

CWE-74