CVE-2022-24826

Kritik

Açıklama

Windows üzerinde, eğer Git LFS, hem `..exe` dosyasına hem de `git.exe` isimli bir dosyaya sahip kötü niyetli bir depo üzerinde çalışıyorsa ve `git.exe` PATH içinde bulunamazsa, `..exe` programı yürütülür ve bu durum saldırganın rastgele kod çalıştırmasına izin verir. Bu durum Unix sistemlerini etkilemez. Benzer şekilde, kötü niyetli depo `..exe` ve `cygpath.exe` isimli dosyalar içeriyorsa ve `cygpath.exe` PATH içinde bulunamazsa, belirli Git LFS komutları çalıştırıldığında `..exe` programı yürütülür. Daha genel olarak, mevcut çalışma dizini temel adı `.` olan ve PATHEXT'ten herhangi bir dosya uzantısına (`.bat` ve `.cmd` hariç) sahip bir dosyanın yanı sıra, Git LFS'nin yürütmeyi amaçladığı bir programla (örneğin `git`, `cygpath` veya `uname) aynı temel ada ve PATHEXT'ten herhangi bir dosya uzantısına (`.bat` ve `.cmd` dahil) sahip başka bir dosya içeriyorsa; Windows'ta Git LFS hedeflenen programı yürütmeye çalıştığında, ancak hedeflenen program PATH listesindeki hiçbir dizinde bulunamadığı takdirde, bunun yerine `..exe`, `..com` vb. dosyası yürütülür. Güvenlik açığı, Git LFS'nin çalıştırmak istediği programın PATH listesindeki hiçbir dizinde olmadığını tespit ettiğinde, Go `os/exec` paketine yürütülebilir dosya yolu olarak boş bir dize iletmesinden kaynaklanmaktadır; söz konusu paket, Windows'ta boş dizeye yol ayırıcı eklemeden mevcut çalışma dizininin adını (yani `.`) başına ekleyen bir hata içermektedir ve sonuç olarak o dizinde temel adı `.` olup PATHEXT'teki herhangi bir dosya uzantısıyla birleşen bir dosya arayarak bulduğu ilk dosyayı yürütmektedir. (`..bat` ve `..cmd` dosyalarının aynı şekilde yürütülmemesinin nedeni, Go `os/exec` paketi bunları tıpkı bir `..exe` dosyası gibi yürütmeye çalışsa da, Microsoft Win32 API `CreateProcess()` fonksiyon ailesinin, çağırıcının bir toplu iş betiği dosyasını yürütmeye çalıştığını fark eden ve bunun yerine tüm komut satırı bağımsız değişkenlerini parametre olarak geçerek `cmd.exe` komut yorumlayıcısını çalıştıran belgelenmemiş bir özelliğe sahip olmasıdır. Bunlar Git LFS tarafından ayarlanan komut satırı bağımsız değişkenlerinden farklı değildir ve bu nedenle hedeflenen programın adı ilk sırada yer alır, bu da `cmd.exe /c git` gibi bir komut satırıyla sonuçlanır ve ardından işlem başarısız olur.) Git LFS, bu durumda Go `os/exec` paketine boş bir dize iletmek yerine, bir program PATH listesindeki hiçbir dizinde bulunmadığında her zaman bir hata raporlayarak bu güvenlik açığını gidermiştir. Go `os/exec` paketindeki hata Go projesine bildirilmiştir ve bu güvenlik duyurusu yayınlandıktan sonra yamalanması beklenmektedir. Sorun versiyon 2.12.1 ile ortaya çıkmış ve versiyon 3.1.3 ile düzeltilmiştir. Etkilenen versiyonların kullanıcıları versiyon 3.1.3'e yükseltmelidir. Şu anda bilinen bir geçici çözüm yoktur.

ÖnemKritik
CVSS9.8
İstismar olasılığı—
ÜrünGit Large File Storage
Yayın20 Nis 2022
İlk görülme20 Nis 2022
Zayıflık türüCWE-426CWE-426

Nasıl düzeltilir

Güncelleyin
  • git_large_file_storage_project git_large_file_storage3.1.3 ya da sonraki bir sürüm
  • github.com/git-lfs/git-lfs/v33.1.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
git_large_file_storage_project git_large_file_storage2.12.1 ≤ v < 3.1.33.1.3
github.com/git-lfs/git-lfs/v3Go3.0.0 ≤ v < 3.1.33.1.3
github.com/git-lfs/git-lfsGo2.12.1 ≤ v—

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2022-24826 · Git Large File Storage · Dark Radar