CVE-2024-50338
Təsvir
Git Credential Manager (GCM), Windows, macOS və Linux əməliyyat sistemlərində işləyən, .NET üzərində qurulmuş təhlükəsiz Git etibarlılıq köməkçisidir. Git etibarlılıq protokolu standart giriş/çıxış vasitəsilə mətn əsaslıdır və `key=value` formatında açar-dəyər cütlüklərindən ibarət sətirlər ardıcıllığından təşkil olunub. Git-in sənədləri açarların və ya dəyərlərin tərkibində NUL (`\0`) simvolunun və yeni sətir simvollarının istifadəsini məhdudlaşdırır. Git standart girişdən oxuma zamanı, `strbuf_getdelim_strip_crlf` funksiyasını çağıran `strbuf_getline` vasitəsilə həm LF, həm də CRLF simvollarını etibarlılıq protokolu üçün yeni sətir simvolları kimi qəbul edir. Git həmçinin sətir axışı simvolunun (LF, `\n`) mövcudluğunu yoxlayaraq dəyərdə yeni sətirin olmadığını təsdiqləyir və belə olduqda xəta verir. Bu, həm LF, həm də CRLF tipli yeni sətirləri əhatə edir. Git Credential Manager standart giriş axınını sətir-sətir oxumaq və `key=value` etibarlılıq protokolu formatını analiz etmək üçün .NET standart kitabxanasının `StreamReader` sinfindən istifadə edir. `ReadLineAsync` metodunun tətbiqi LF, CRLF və CR simvollarını düzgün sətir sonları kimi qəbul edir. Bu o deməkdir ki, .NET tək bir CR simvolunu düzgün yeni sətir simvolu hesab edir, lakin Git bunu etmir. Git və GCM arasında yeni sətir emalındakı bu uyğunsuzluq hücumçunun zərərli uzaq URL yaratmasına imkan verir. İstifadəçi autentifikasiya tələb edən zərərli repozitoriyanı klonladığında və ya onunla digər şəkildə qarşılıqlı əlaqədə olduqda, hücumçu başqa bir Git uzaq ünvanı üçün etibarlılıq məlumatlarını ələ keçirə bilər. Hücum riski, `--recursive` klonlama seçimi ilə altmodullu (submodule) repozitoriyalardan klonlama zamanı daha da artır, çünki istifadəçi altmodul uzaq URL-lərini öncədən yoxlaya bilmir. Bu problem 2.6.1 versiyasında aradan qaldırılmışdır və bütün istifadəçilərə yeniləmə etmək tövsiyə olunur. Yeniləmə imkanı olmayan istifadəçilər yalnız etibarlı uzaq repozitoriyalarla qarşılıqlı əlaqədə olmalı və altmodulları klonlamazdan əvvəl onların URL-lərini yoxlamaq üçün `--recursive` parametri ilə klonlama aparmamalıdırlar.
Necə düzəltmək olar
- git-credential-manager2.6.1 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| git-credential-managerNuGet | v < 2.6.1 | 2.6.1 |
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.
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.