Описание
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:
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.
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:
Ссылки
- https://github.com/dependabot/dependabot-core/security/advisories/GHSA-23f7-99jx-m54r
 - https://nvd.nist.gov/vuln/detail/CVE-2020-26222
 - https://github.com/dependabot/dependabot-core/pull/2727
 - https://github.com/dependabot/dependabot-core/commit/e089116abbe284425b976f7920e502b8e83a61b5
 - https://github.com/rubysec/ruby-advisory-db/blob/master/gems/dependabot-common/CVE-2020-26222.yml
 - https://github.com/rubysec/ruby-advisory-db/blob/master/gems/dependabot-omnibus/CVE-2020-26222.yml
 - https://rubygems.org/gems/dependabot-common
 - https://rubygems.org/gems/dependabot-omnibus
 
Пакеты
dependabot-omnibus
>= 0.119.0.beta1, < 0.125.1
0.125.1
dependabot-common
>= 0.119.0.beta1, < 0.125.1
0.125.1
Связанные уязвимости
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.