CVE-2024-32002 ile atanan git klonunda kritik bir uzaktan kod yürütme güvenlik açığı keşfedildi ve ciddiyet 9.0 (Kritik).
Bu özel güvenlik açığı, yaygın olarak kullanılan clone komutunda mevcuttu.
Git geçen hafta Uzaktan Kod Yürütmeyle ilgili bir güvenlik tavsiyesi yayınladı.
Buna ek olarak, güvenlik açığının belirli bir şekilde tasarlanabilen ve uzaktan kod yürütülmesine neden olabilecek alt modüller nedeniyle mevcut olduğu açıklandı.
Ancak git tarafından bu güvenlik açığı giderildi ve yamalı versiyonlar yayınlandı.
Cyber Security News ile paylaşılan raporlara göre git, diğer depoların içine yerleştirilmiş depolar olan alt modülleri kullanıyor.
Her alt modülün ana dizin içinde, değişikliklerin doğru şekilde kaydedilmesini sağlamak için izlenen belirlenmiş bir dizin yolu vardır.
Daha ayrıntılı incelemelerde, Windows’un (A/modules/x) ve macOS’un (a/modules/x) varsayılan ayarlarında büyük/küçük harfe duyarlı olmayan dosya sistemlerinin olduğu keşfedildi.
Bu yolların her ikisine de aynı şekilde davranılır ve bu, uzaktan kod yürütmenin arkasındaki temel nedendir.
Buna ek olarak sembolik bağlantılar veya sembolik bağlantılar, diğer dosyalara veya dizinlere işaretçi görevi gören dosya sistemi nesneleridir.
Bununla birlikte, bu sembolik bağlantı, havuzun diğer bölümlerine referans vermek için kullanılabilir ve bu da onu kötü amaçlı amaçlarla kullanılabilir hale getirir.
ANYRUN kötü amaçlı yazılım korumalı alanının 8.’si Doğum Günü Özel Teklifi: 6 Aylık Ücretsiz Hizmet Kazanın
Kaynak Kodu Analizi
Bu güvenlik açığının düzeltilmesiyle ilgili olarak yalnızca yerleşik/submodule–helper.c ve t/t7406-submodule-update.sh olmak üzere iki dosyada değişiklik yapıldı.
Ek olarak, taahhütteki mesaj şunu belirtiyordu: “Ancak, büyük/küçük harfe duyarlı olmayan dosya sistemlerinde, klonlama işleminin bir parçası olarak oluşturulan bir dizini, ikincisine giden yol yalnızca öncekinin yolundan farklı olduğunda körü körüne bir sembolik bağlantıyla değiştiririz.” …..sembolik bağlantılara uymamaya dikkat etmeliyiz.
Aksi takdirde, örneğin klonlama sırasında bir gitdir’e işaret eden sembolik bir bağlantıyı takip edebiliriz (bunlar geçerli sembolik bağlantılardır!).
yerleşik/submodule–helper.c dosyası ve t/t7406-submodule-update.sh
Bu dosyadaki değişiklik, alt modüller için klonlama işlemini yöneten clone_submodule’u içeriyordu.
Bir dizinin yalnızca bir dizin içerip içermediğini kontrol eden yeni bir dir_contains_only_dotgit işlevi vardı. .git dosya veya dizin.
Ayrıca clone_submodule, alt modül dizininin mevcut mu yoksa boş mu olduğunu belirlemek için Git kontrolüyle birlikte eklendi.
Boş olması durumunda üzerine yazmayı önlemek için işlem iptal edilir. Oysa t/t7406-submodule-update.sh, Global yapılandırma, kanca deposu kurulumu ve ana depo kurulumu gibi birden fazla bilgiyi içeren bir test komut dosyasıdır.
RCE’nin İstismarı
Tüm bilgilerle birlikte, A/modules/x ve a/modules/x gibi yolları aynı olarak kabul eden büyük/küçük harfe duyarlı olmayan dosya sistemlerinde temel sorun mevcuttu.
Bundan yararlanmak için, alt modül içinde, alt modülün yolunun büyük/küçük harf varyasyonuyla adlandırılan, ancak sonunda .git/ dizinine işaret eden kötü amaçlı bir sembolik bağlantının oluşturulması gerekir.
Bir kurban kötü amaçlı depoyu klonladığında Git, alt modül için bir dizin oluşturur; bu dizin, kötü amaçlı sembolik bağlantının yeni oluşturulan dizinde değiştirilmesini sağlayan bir sembolik bağlantıyla sağlanır.
Komut dosyası farklı bir şekilde hazırlanmışsa, güvenlik açığı bulunan örnek sistemde uzaktan kod yürütülmesine yol açabilir.
Araştırmacı tarafından aşağıdaki komut kullanılarak tetiklenebilecek bir kavram kanıtı yayımlandı:
git klonu –özyinelemeli [email protected]:amalmurali47/git_rce.git
Ücretsiz Web Semineri Canlı API Saldırı Simülasyonu: Yerinizi Ayırın | API’lerinizi bilgisayar korsanlarından korumaya başlayın