CVE-2022-24826

Kritik

Təsvir

Windows əməliyyat sistemində, əgər Git LFS tərkibində həm `..exe` faylı, həm də `git.exe` adlı fayl olan zərərli repozitoriya ilə işləyirsə və `git.exe` `PATH`-də tapılmırsa, `..exe` proqramı icra olunacaq ki, bu da hücumçuya ixtiyari kodun icrasına imkan verəcəkdir. Bu, Unix sistemlərinə təsir etmir. Eynilə, əgər zərərli repozitoriya `..exe` və `cygpath.exe` adlı faylları ehtiva edirsə və `cygpath.exe` `PATH`-də tapılmırsa, müəyyən Git LFS əmrləri icra edildikdə `..exe` proqramı işə düşəcəkdir. Daha ümumi şəkildə, əgər cari işçi kataloqda baza adı `.` olan və `PATHEXT`-dən hər hansı bir fayl genişlənməsinə (`.bat` və `.cmd` istisna olmaqla) malik fayl, həmçinin Git LFS-in icra etmək istədiyi proqramla (məsələn, `git`, `cygpath` və ya `uname) eyni baza adına və `PATHEXT`-dən hər hansı bir fayl genişlənməsinə (o cümlədən `.bat` və `.cmd`) malik digər bir fayl varsa, Windows-da Git LFS həmin proqramı icra etməyə çalışdıqda, yalnız həmin proqram `PATH`-də sadalanmış heç bir kataloqda tapılmadıqda, onun əvəzinə `..exe`, `..com` və s. faylı icra olunacaqdır. Zəiflik ondan qaynaqlanır ki, Git LFS icra etmək istədiyi proqramın `PATH`-də sadalanmış heç bir kataloqda olmadığını aşkar etdikdə, Go `os/exec` paketinə icra edilə bilən fayl yolu kimi boş sətir ötürür; bu paketdə isə belə bir xəta var ki, Windows-da o, yol ayırıcısı əlavə etmədən boş sətrin önünə cari işçi kataloqun adını (yəni `.`) əlavə edir və nəticədə həmin kataloqda baza adı `.` olan və `PATHEXT`-dən hər hansı bir genişlənməyə malik ilk tapılan faylı icra edir. (`..bat` və `..cmd` fayllarının eyni şəkildə icra edilməməsinin səbəbi budur ki, Go `os/exec` paketi onları `..exe` faylı kimi icra etməyə çalışsa da, Microsoft Win32 API `CreateProcess()` funksiyaları ailəsinin sənədləşdirilməmiş bir xüsusiyyəti var: onlar çağıranın toplu skript faylını icra etməyə çalışdığını anlayırlar və bunun əvəzinə bütün komanda sətri arqumentlərini parametr kimi ötürərək `cmd.exe` komanda interpretatorunu işə salırlar. Bunlar Git LFS tərəfindən təyin edilmiş komanda sətri arqumentləri ilə eynidir və buna görə də, hədəf proqramın adı birinci gəlir və nəticədə `cmd.exe /c git` kimi bir komanda sətri yaranır ki, bu da uğursuz olur.) Git LFS, proqram `PATH`-də sadalanmış heç bir kataloqda tapılmadıqda, Go `os/exec` paketinə boş sətir ötürmək əvəzinə həmişə xəta bildirməklə bu zəifliyi aradan qaldırmışdır. Go `os/exec` paketindəki xəta Go layihəsinə bildirilmişdir və bu təhlükəsizlik məsləhəti dərc edildikdən sonra düzəldilməsi gözlənilir. Problem 2.12.1 versiyasında ortaya çıxmış və 3.1.3 versiyasında düzəldilmişdir. Təsirə məruz qalan versiyalardan istifadə edənlər 3.1.3 versiyasına yüksəltmə etməlidirlər. Hazırda məlum olan alternativ həll yolları yoxdur.

CiddilikKritik
CVSS9.8
İstismar ehtimalı—
MəhsulGit Large File Storage
Dərc20 apr 2022
İlk görülmə20 apr 2022
Zəiflik növüCWE-426CWE-426

Necə düzəltmək olar

Yeniləyin
  • git_large_file_storage_project git_large_file_storage3.1.3 və ya daha yeni versiya
  • github.com/git-lfs/git-lfs/v33.1.3 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
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—

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.

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