Local Code Execution through Argument Injection via dash leading git url parameter in Gemfile
`Bundler` is a package for managing application dependencies in Ruby. In `bundler` versions before 2.2.33, when working with untrusted and apparently harmless `Gemfile`'s, it is not expected that they lead to execution of external code, unless that's explicit in the ruby code inside the `Gemfile` itself. However, if the `Gemfile` includes `gem` entries that use the `git` option with invalid, but seemingly harmless, values with a leading dash, this can be false. To handle dependencies that come from a Git repository instead of a registry, Bundler uses various commands, such as `git clone`. These commands are being constructed using user input (e.g. the repository URL). When building the commands, Bundler versions before 2.2.33 correctly avoid Command Injection vulnerabilities by passing an array of arguments instead of a command string. However, there is the possibility that a user input starts with a dash (`-`) and is therefore treated as an optional argument instead of a positional one. This can lead to Code Execution because some of the commands have options that can be leveraged to run arbitrary executables. Since this value comes from the `Gemfile` file, it can contain any character, including a leading dash. To exploit this vulnerability, an attacker has to craft a directory containing a `Gemfile` file that declares a dependency that is located in a Git repository. This dependency has to have a Git URL in the form of `-u./payload`. This URL will be used to construct a Git clone command but will be interpreted as the upload-pack argument. Then this directory needs to be shared with the victim, who then needs to run a command that evaluates the Gemfile, such as `bundle lock`, inside. This vulnerability can lead to Arbitrary Code Execution, which could potentially lead to the takeover of the system. However, the exploitability is very low, because it requires a lot of user interaction. Bundler 2.2.33 has patched this problem by inserting `--` as an argument before any positional arguments to those Git commands that were affected by this issue. Regardless of whether users can upgrade or not, they should review any untrustred `Gemfile`'s before running any `bundler` commands that may read them, since they can contain arbitrary ruby code.
- Yayın
- 8 Ara 2021
- Güncelleme
- 17 Haz 2026
- EPSS
- %2,8 · 86. yüzdelik
- CWE
- CWE-88
Takip etmek için giriş yap · Takip ettiğin kayıt KEV’e girer, istismarı çıkar ya da güncellenirse bildirim alırsın.
Rapor araçları
Aksiyon skoru
30
İzleyin
Şimdilik düşük öncelik.
- CVSS
- 29 / 40 · 7.3 / 10
- CISA KEV
- 0 / 30 · Listede değil
- EPSS
- 1 / 30 · %2,8
CNA ile NVD puanı
- NVD
- 7,3
- CNA · GitHub_M
- 6,7
- 0,6 puan fark
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
Kaydı açan otoritenin puanı ile NVD’nin bağımsız puanı. İki puan arasındaki fark ciddiyetin tartışmalı olduğunu gösterir.
Etkilenen sistemler
| Üretici | Ürün | CPE |
|---|---|---|
| bundler | bundler | cpe:2.3:a:bundler:bundler |
Etkilenen sürümler
NVD sürüm aralıkları (katalogdaki ürünler için). Stack’ine sürümle eklersen eşleşme bunlarla yapılır.
- bundler bundler2.2.33 öncesi
Üreticinin bildirdiği sürümler
Kaydı açan otorite (GitHub_M) tarafından bildirilen etkilenen sürüm aralıkları. NVD'nin CPE analizinden bağımsızdır ve genellikle ondan önce gelir.
rubygems rubygems
- < 2.2.33etkilenir
Paket düzeyi etkilenme
OSV ve GitHub Advisory verisi: ekosistem, paket ve aralık. SBOM eşleşmesi bu tabloyu kullanır.
| Ekosistem | Paket | Etkilenen aralık | Düzeltme |
|---|---|---|---|
| AlmaLinux:8 | ruby | 2.5.9-114.module_el8.10.0+3991+5e651d4e öncesi | 2.5.9-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | ruby-devel | 2.5.9-114.module_el8.10.0+3991+5e651d4e öncesi | 2.5.9-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | ruby-doc | 2.5.9-114.module_el8.10.0+3991+5e651d4e öncesi | 2.5.9-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | ruby-irb | 2.5.9-114.module_el8.10.0+3991+5e651d4e öncesi | 2.5.9-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | ruby-libs | 2.5.9-114.module_el8.10.0+3991+5e651d4e öncesi | 2.5.9-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-abrt | 0.3.0-4.module_el8.5.0+2625+ec418553 öncesi | 0.3.0-4.module_el8.5.0+2625+ec418553 |
| AlmaLinux:8 | rubygem-abrt-doc | 0.3.0-4.module_el8.10.0+3871+342e2c2f öncesi | 0.3.0-4.module_el8.10.0+3871+342e2c2f |
| AlmaLinux:8 | rubygem-bigdecimal | 1.3.4-114.module_el8.10.0+3991+5e651d4e öncesi | 1.3.4-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-bson | 4.3.0-2.module_el8.5.0+2625+ec418553 öncesi | 4.3.0-2.module_el8.5.0+2625+ec418553 |
| AlmaLinux:8 | rubygem-bson | 4.3.0-2.module_el8.6.0+3170+4b08f9d4 öncesi | 4.3.0-2.module_el8.6.0+3170+4b08f9d4 |
| AlmaLinux:8 | rubygem-bson | 4.3.0-2.module_el8.5.0+259+8cec6917 öncesi | 4.3.0-2.module_el8.5.0+259+8cec6917 |
| AlmaLinux:8 | rubygem-bson-doc | 4.3.0-2.module_el8.5.0+2625+ec418553 öncesi | 4.3.0-2.module_el8.5.0+2625+ec418553 |
| AlmaLinux:8 | rubygem-bundler | 1.16.1-5.module_el8.10.0+3991+5e651d4e öncesi | 1.16.1-5.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-bundler-doc | 1.16.1-5.module_el8.10.0+3991+5e651d4e öncesi | 1.16.1-5.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-did_you_mean | 1.2.0-114.module_el8.10.0+3991+5e651d4e öncesi | 1.2.0-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-io-console | 0.4.6-114.module_el8.10.0+3991+5e651d4e öncesi | 0.4.6-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-json | 2.1.0-114.module_el8.10.0+3991+5e651d4e öncesi | 2.1.0-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-minitest | 5.10.3-114.module_el8.10.0+3991+5e651d4e öncesi | 5.10.3-114.module_el8.10.0+3991+5e651d4e |
| AlmaLinux:8 | rubygem-mongo | 2.5.1-2.module_el8.5.0+2625+ec418553 öncesi | 2.5.1-2.module_el8.5.0+2625+ec418553 |
| AlmaLinux:8 | rubygem-mongo-doc | 2.5.1-2.module_el8.5.0+2625+ec418553 öncesi | 2.5.1-2.module_el8.5.0+2625+ec418553 |
| AlmaLinux:8 | rubygem-mysql2 | 0.4.10-4.module_el8.5.0+259+8cec6917 öncesi | 0.4.10-4.module_el8.5.0+259+8cec6917 |
| AlmaLinux:8 | rubygem-mysql2 | 0.4.10-4.module_el8.5.0+2625+ec418553 öncesi | 0.4.10-4.module_el8.5.0+2625+ec418553 |
| AlmaLinux:8 | rubygem-mysql2 | 0.4.10-4.module_el8.6.0+3170+4b08f9d4 öncesi | 0.4.10-4.module_el8.6.0+3170+4b08f9d4 |
| AlmaLinux:8 | rubygem-mysql2-doc | 0.4.10-4.module_el8.5.0+2625+ec418553 öncesi | 0.4.10-4.module_el8.5.0+2625+ec418553 |
+73
Aynı üründe
bundler: tüm kayıtlarAynı birincil ürünün en yüksek skorlu diğer kayıtları.
- CVE-2016-7954Bundler 1.x might allow remote attackers to inject arbitrary Ruby code into an application by leveraging a gem name collision on a secondary42Planlayın
- CVE-2020-36327Bundler 1.16.0 through 2.2.9 and 2.2.11 through 2.2.16 sometimes chooses a dependency source based on the highest gem version number, which 37İzleyin
- CVE-2019-3881Bundler prior to 2.1.0 uses a predictable path in /tmp/, created with insecure permissions as a storage location for gems, if locations unde31İzleyin
- CVE-2013-0334Bundler before 1.7, when multiple top-level source lines are used, allows remote attackers to install arbitrary gems by creating a gem with 21İzleyin
Düzeltme
Hangi sürüme geçmeli
Üretici, paket deposu ve Microsoft kayıtlarından derlenen düzeltme sürümleri. Yükseltmeden önce üreticinin notunu doğrulayın.
| Ürün / paket | Düzeltilmiş sürüm | Kaynak |
|---|---|---|
| almalinux:ruby | 2.5.9-114.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:ruby-devel | 2.5.9-114.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:ruby-doc | 2.5.9-114.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:ruby-irb | 2.5.9-114.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:ruby-libs | 2.5.9-114.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-abrt | 0.3.0-4.module_el8.5.0+2625+ec418553 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-abrt-doc | 0.3.0-4.module_el8.10.0+3871+342e2c2f · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-bigdecimal | 1.3.4-114.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-bson | 4.3.0-2.module_el8.5.0+2625+ec418553 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-bson-doc | 4.3.0-2.module_el8.5.0+2625+ec418553 · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-bundler | 1.16.1-5.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| almalinux:rubygem-bundler-doc | 1.16.1-5.module_el8.10.0+3991+5e651d4e · AlmaLinux:8 | Paket deposu (OSV) |
| alpine:ruby-bundler | 2.2.33-r0 · Alpine:v3.15 | Paket deposu (OSV) |
| debian:rubygems | 3.3.5-1 · Debian:12 | Paket deposu (OSV) |
| opensuse:rubygem-bundler | 1.16.1-150000.3.6.1 · openSUSE:Leap 15.5 | Paket deposu (OSV) |
| red hat:ruby | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-debuginfo | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-debugsource | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-devel | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-doc | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-irb | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-libs | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:ruby-libs-debuginfo | 0:2.5.9-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:rubygem-abrt | 0:0.3.0-4.module+el8.10.0+22021+135c76a8 · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:rubygem-abrt-doc | 0:0.3.0-4.module+el8.10.0+22021+135c76a8 · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:rubygem-bigdecimal | 0:1.3.4-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| red hat:rubygem-bigdecimal-debuginfo | 0:1.3.4-114.module+el8.10.0+23088+750dc6ca · Red Hat:enterprise_linux:8::appstream | Paket deposu (OSV) |
| rocky linux:ruby | 0:2.5.9-114.module+el8.10.0+1979+815637df · Rocky Linux:8 | Paket deposu (OSV) |
| rocky linux:rubygem-abrt | 0:0.3.0-4.module+el8.5.0+738+032c9c02 · Rocky Linux:8 | Paket deposu (OSV) |
| rocky linux:rubygem-bson | 0:4.3.0-2.module+el8.9.0+1536+5f79634e · Rocky Linux:8 | Paket deposu (OSV) |
+6
İstismar durumu
Bilinen kamuya açık istismar yok
Şu an kamuya açık bir istismar görülmedi. Bu, güvende olduğunuz anlamına gelmez; yalnızca eşiğin biraz daha yüksek olduğunu gösterir.
Araştırma bağlamı
Pentester ve araştırmacı için: saldırı profili, puan anlaşmazlığı, zaman çizelgesi, yama commit’leri, kredi, varyant ve zincir adayları, bug bounty kapsamı. Hepsi mevcut veriden türetilir; istismar kodu içermez.
Zaman çizelgesi
Yayından bugüne: kavram kanıtı, Metasploit modülü, CISA KEV ve düzeltme kaydı. Tarihler kaynakların bildirdiği tarihlerdir.
Yayın dışında tarihli olay yok.
FIRST EPSS günlük puanı; yalnızca 0,01 ve üstü değişimler kaydedilir (adım grafiği).
Yama ve commit bağlantıları
Referanslardaki commit, PR ve diff adresleri. Patch-diff ve varyant avı için başlangıç noktası; istismar değil, düzeltmedir.
Kredi
Tüm araştırmacılarCNA kaydında adı geçen bulan, bildiren ve analistler. Ada tıkla, aynı araştırmacının diğer kayıtlarını gör.
CNA kaydında kredi yok.
Varyant adayları
Aynı üründe aynı zafiyet sınıfı, 18 ay içinde. Yama kök nedeni kapatmadıysa kardeş hata burada olur.
Gece hesaplanan ilişki yok.
Zincir adayları
Aynı üründe kimlik doğrulama atlatma ile yetki isteyen bir açık kısa aralıkla yayımlanmış: birlikte kimlik doğrulamasız bir yola dönüşebilir.
—
Bug bounty kapsamı
Bilinen herkese açık program yok.
Kaynak: bounty-targets-data (HackerOne, Bugcrowd, Intigriti, YesWeHack herkese açık listeleri).
Teknik detay
Saldırı koşulları
- Sisteme yerel erişimi olan biri tetikleyebilir.
- Düşük yetkili bir hesap yeterli.
- Bir kullanıcının bağlantıyı açması ya da sayfayı ziyaret etmesi gerekir.
- Özel bir koşul gerekmez; tekrarlanabilir.
Başarılı olursa
- Gizlilik
- yüksek · veriler okunabilir
- Bütünlük
- yüksek · veri ya da yapılandırma değiştirilebilir
- Erişilebilirlik
- yüksek · hizmet durdurulabilir
- Saldırı vektörü
- Yerel
- Karmaşıklık
- Düşük
- Gereken yetki
- Düşük
- Kullanıcı etkileşimi
- Gerekir
- Kapsam
- Değişmez
- Gizlilik etkisi
- Yüksek
- Bütünlük etkisi
- Yüksek
- Erişilebilirlik etkisi
- Yüksek
Zayıflık sınıfı (CWE)
CWE-88 · Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')CVSS vektörü
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
nvd-primary
Saldırı bağlamı
Bu zafiyet sınıfının (CWE) MITRE CAPEC saldırı desenleri ve ATT&CK teknikleri. Tespit kuralı ve tehdit avı için başlangıç noktası.
Saldırı desenleri (CAPEC)
- Parameter InjectionCAPEC-137olasılık: Medium · Medium
- Flash Parameter InjectionCAPEC-174olasılık: High · Medium
- Using Meta-characters in E-mail Headers to Inject Malicious PayloadsCAPEC-41olasılık: High · High
- HTTP Parameter Pollution (HPP)CAPEC-460Medium
- OS Command InjectionCAPEC-88olasılık: High · High
ATT&CK teknikleri
—
Noroxi analizi
Bu kayıt için henüz Noroxi analizi yok
385 binden fazla zafiyetin tamamına elle analiz yazmıyoruz; bu dürüst olmazdı. Öne çıkan ve sahada etkisi olan zafiyetler için mekanizma, tespit ve kapatma adımlarını ekibimiz yazıyor.
Bu ürünü kullanıyoruz, yardım isteyinDeğişiklik günlüğü
- Düzeltme✗ → ✓
Takip ettiğiniz kayıtlarda bu değişiklikler bildirim olarak da gelir. →
Referanslar
- github.com/rubygems/rubygems/commit/0fad1ccfe9dd7a3c5b82c1496df3c2b4842870d3
- github.com/rubygems/rubygems/commit/a4f2f8ac17e6ce81c689527a8b6f14381060d95f
- github.com/rubygems/rubygems/pull/5142
- lists.debian.org/debian-lts-announce/2025/05/msg00015.html
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.