AI Hacking - Hackerlar Siber Saldırılarda Yapay Zekayı Nasıl Kullanıyor?

Şimdi Oku
Site çevirileri için yapay zeka kullanıyoruz ve doğruluk için çaba göstersek de her zaman %100 kesin olmayabilir. Anlayışınız için teşekkür ederiz.

CVE-2024-32002 Git Güvenlik Açığını Analiz Etme ve Düzeltme

tarafından OPSWAT
Bu Gönderiyi Paylaş
OPSWAT Burs Programına katılan Ho Chi Minh Teknoloji Üniversitesi öğrencileri Minh Pham ve Thai Do
Öğrenciler OPSWAT Burs Programına katıldı.

Git'te RCE (uzaktan kod yürütme) saldırılarına olanak tanıyan kritik bir güvenlik açığı kısa süre önce Git ve Microsoft Visual Studio 2017'nin birden çok sürümünü etkileyerek ifşa edildi. Güvenlik açığı, saldırganların Git'teki dosyaların alt modülün çalışma ağacının dışına ve .git/ dizinine yazılmasına izin veren bir hatadan yararlanarak alt modülleri kullanarak Git depolarını manipüle etmesine olanak tanır. Bu hata, bir depo klonlama işlemi devam ederken kötü amaçlı bir kancanın yürütülmesini sağlar [1]. 

CVE-2024-32002 güvenlik açığı, Microsoft Visual Studio 2017 sürüm 15.9 ve 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 ve 2.39.4'ten önceki Git sürümlerini etkiler. Büyük/küçük harfe duyarlı olmayan işletim sistemlerinde sembolik bağlantı desteğinin etkin olduğu ortamlarda istismar edilebilir. 

CVSS (Common Vulnerability Scoring System) 3.x önem derecesi ve vektör bilgileri, GitHub, Inc. tarafından sağlanan 9.0 temel puanı ile kritik olarak etiketlenmiştir.

Git'i Anlamak

Git, yazılım geliştiricilerin kod tabanlarını hızlı ve verimli bir şekilde yönetmelerine yardımcı olmak için tasarlanmış ücretsiz ve açık kaynaklı bir dağıtılmış sürüm kontrol sistemidir. Dosya ve dizinlerdeki değişiklikleri standartlaştırılmış, yapılandırılmış bir şekilde düzenleyerek ve izleyerek geliştirme ekibi üyeleri arasındaki işbirliğini geliştirir. 

Git, yazılım geliştirmede yaygın olarak kullanılmaktadır. GitHub, GitLab ve Bitbucket gibi platformlar, güçlü özellikleri nedeniyle geliştiriciler arasındaki işbirliğini geliştirmek için Git'in üzerine inşa edilmiştir: 

  • Kod dosyalarındaki izlenebilir değişikliklerin kaydedilmesi, taahhütler olarak bilinir. 
  • Gerektiğinde kod düzenlemelerinin önceki sürümlere geri alınması. 
  • Farklı dallardan veya katılımcılardan gelen değişiklikleri verimli bir şekilde birleştirmek. 
  • Değişiklikleri kimin yaptığının ve tarihlerinin kaydının tutulması.
.git klasör yapısının config, HEAD, hooks, objects ve refs gibi dizinleri gösteren görsel bir temsili.

Git Kancaları 

git init veya git clone komutları kullanılarak bir Git deposu oluşturulduğunda veya klonlandığında, çalışma ağacının kökünde bir .gitdizini oluşturulur. .git dizininin dizin yapısı başlangıçta aşağıdaki gibi görünür: 

Git kancaları, .git/hooks dizininde veya .git/modules/module_type/module_name/hooks dizininde bulunan çalıştırılabilir komut dosyalarıdır. Kancalar, bir Git deposunda belirli olaylar meydana geldiğinde otomatik olarak tetiklenir.  

Hooks dizinindeki bir dosya .sample son ekine sahip değilse, bu dosyadaki komutlar dosya adında yer alan pre-commit, post-commit ve post-checkout gibi belirli bir Git eyleminden önce veya sonra yürütülür. 

Git Alt Modülleri

Git alt modülü, Git deposu içinde harici bir depodaki belirli bir işleme referans veren bir kayıttır. Bir depoya bir alt modül eklendiğinde, .gitmodules dizininde alt modülün URL'si ile yerel dizini arasındaki eşlemenin meta verilerini içeren yeni bir dosya oluşturulur. Bir depo birden fazla alt modül içerdiğinde, .gitmodules dosyası her biri için bir girdi içerecektir. [3] 

Depoların ve alt modüllerin etkileşimini gösteren, Depo A, Alt Modül B ve Klasör C arasındaki ilişkiyi gösteren diyagram
"Example" adlı bir alt modülün yapılandırmasını gösteren bir .gitmodules dosyasının örnek içeriği
Aşağıdaki resim bir .gitmodules dosyasının neye benzediğini göstermektedir: 

Sembolik Bağlantılar (Symlinks)

Sembolik bağlantı veya yazılım bağlantısı olarak da adlandırılan sembolik bağlantı, yolunu belirterek başka bir dosya veya dizine ("hedef" olarak adlandırılır) işaret eden bir dosyadır. Bir sembolik bağlantı silinirse, hedefi etkilenmeden kalır. [4] 

Git'te bir symlink, başka bir dosyaya referans veya kısayol olarak işlev görmesini sağlamak için meta veriler içeren bir dosya olarak oluşturulur. Symlinkler, içeriğini kopyalamadan bir dosyaya birden fazla referans oluşturmak için kullanılabilir.

Bir dosyaya (Dosya A) sembolik ve sabit bağlantıları gösteren ve bu bağlantıların aynı dosya içeriğine nasıl eriştiğini gösteren diyagram
Git, sembolik bağlantıları, başvurdukları dosya veya dizinin yolunu saklayan özel dosyalar olarak ele alır. 
Bir Git deposu içindeki sembolik bağlantıların görselleştirilmesi, dizin ve dosya yapılarının ve bunların sembolik bağlantı yollarının gösterilmesi
Sembolik bağlantı içeren bir depo veya şube klonlandığında veya kontrol edildiğinde, Git'te depolanan sembolik bağlantı yerel dosya sisteminde bir sembolik bağlantıya dönüştürülür. 

GIT Güvenlik Açığı Analizi

Yama Analizi

Güvenlik açıklarını daha iyi anlamak için güvenlik uzmanları genellikle yama analizi yaparlar. Bu, savunmasız işlevleri ve potansiyel saldırı vektörlerini belirlemeye yardımcı olan bir tekniktir. OPSWAT Fellows, CVE-2024-32002 güvenlik açığını gidermek için yamalı sürümde yapılan değişiklikleri inceledi ve bu CVE'yi gidermek için iki dosyanın güncellendiğini tespit etti.

Güncellenen dosyalardan biri, Git alt modül klonlamasını işleyen kodu içeren submodule--helper.c dosyasıdır. Yamalı sürümdeki yeni taahhüt aşağıdaki ikisini içeriyordu:  

  1. Alt modüller dizininin herhangi bir .git dosyası veya dizini içermediğinden emin olmak için dir_contains_only_dotgit işlevinin eklenmesi.
Git arayüzünde submodule-helper.c adlı bir dosyadaki kod değişiklikleri, silme olmadan 83 eklemeyi gösteriyor
  1. clone_submodule() fonksiyonunda, alt modül dizininin var olup olmadığını ve boş olup olmadığını kontrol etmek için bir koşul içerecek şekilde değişiklikler yapıldı. Dizin boş değilse, klonlama işlemi iptal edilecektir. 
Alt modül işlemleri sırasında dizin içeriğini kontrol eden bir işlevi vurgulayan bir Git commit'inden ayrıntılı kod parçası

Yeni taahhütteki ikinci güncelleme t/t7406-submodule-update.sh dosyasında yapıldı ve güvenlik açığının giderildiğini doğrulamak için bir test betiği eklendi. 

T7406-submodule-update.sh test dosyasında, alt modül yolları ve sembolik bağlantılar için test yapılandırmalarını detaylandıran genişletilmiş kod değişiklikleri

Analizden İstismara

Git'te Simbağların ve Alt Modüllerin İş Akışı Analizi

Yama analizinden ve CVE-2024-32002 güvenlik açığının tanımlanmasından elde edilen içgörülere ek olarak, OPSWAT Bursiyerleri Git'teki sembolik bağlantıların ve alt modüllerin iş akışını araştırmak için çalıştılar. Bir kullanıcı bir depoyu klonladığında gerçekleşen olayların sırasını çözdüler:

  1. Git, dosyaları ve dizinleri birincil depodan indirerek başlar. 
  2. Yerel dosya sisteminde karşılık gelen sembolik bağlantıları yeniden oluşturmak için sembolik bağlantı dosyalarında belirtilen tanımları kullanır.  
  3. Ortak bağlantı mevcut bir dosyaya işaret ediyorsa, ortak bağlantı işlevsel olacaktır; aksi takdirde, hedef geri yüklenene kadar ortak bağlantı çalışmaz durumda kalır.  
  4. Depo --recursive seçeneği ile klonlanırsa, Git alt modülleri (harici depolar) klonlar ve bunları .gitmodules dosyasında belirtildiği gibi dizin yollarına yerleştirir.  
  5. Bir sembolik bağlantı alt modül yolunun bir parçasıysa (örneğin, util/module/test, burada util sembolik bağlantı_klasör gibi başka bir dizine işaret eden bir sembolik bağlantıdır), Git alt modül içeriğini sembolik bağlantının referans verdiği asıl dizinde (örneğin, sembolik bağlantı_klasör/module/test) depolarken orijinal sembolik bağlantı yolu üzerinden erişime izin verir. 
Bir deponun klonlanması, dosya ve dizinlerin indirilmesi, ortak bağlantıların yeniden oluşturulması, alt modüllerin klonlanması ve doğru yola taşınması adımlarını gösteren görsel bir akış şeması

CVE-2024-32002 Git Güvenlik Açığını Anlama 

Kötü Amaçlı Depolar Oluşturma

OPSWAT Fellows,t/t7406-submodule-update.sh dosyası için yapılan güncellemelere dayanarak kötü amaçlı depoların oluşturulmasını daha ayrıntılı olarak inceledi ve bu süreci aşağıdaki adımlara ayırdı:

  1. Ödeme sonrası kancası içeren bir depo oluşturma
Dizin oluşturma ve komut dosyası ekleme dahil olmak üzere Git'te bir post-checkout kancası kurma komutlarını gösteren bir terminal kod parçacığı
  1. A/modules/x yolunda bulunan bir alt modülü içeren başka bir depo oluşturma. Yeni alt modül daha önce oluşturulan depoya referans verir.
Git komutlarını kullanarak bir depoya alt modül ekleme işlemini gösteren bir terminal kod parçacığı
  1. Git dizinindeki .git klasörüne işaret eden a adlı bir sembolik bağlantı oluşturma. 
Bir depoda yardımcı program olarak bir .git dosyası oluşturmak ve işlemek için komutları vurgulayan bir terminal betiği örneği
Kötü amaçlı bir kanca deposunun bir ana depoya alt modül olarak eklendiği ve komut dosyası yürütülmesine yol açan bir saldırı senaryosunu detaylandıran bir akış şeması
Bir saldırganın bir depoyu klonlayarak CVE'den nasıl yararlanabileceğini gösteren bir diyagram 

Güvenlik Açığını Anlama

Bir kullanıcı --recursive seçeneğini kullanarak önceki adımda oluşturulan kötü amaçlı bir depoyu klonladığında, post-checkout kancasındaki kötü amaçlı komut dosyası tetiklenir ve saldırganın kullanıcının cihazını tehlikeye atmasına izin verir. 

Bu uzaktan kod çalıştırma, ana deponun klonlandığında .git dizinini işaret eden a adlı sembolik bir bağlantı algılaması nedeniyle oluşur. Özyinelemeli mod etkinleştirildiğinde, alt modüller de klonlanan depoya çekilir. Bu depo, kontrol sonrası kanca komut dosyasını içeren bir hooks klasörü içerir ve yerel dizini A/modules/x dizinindedir.  

a,.git dizinine işaret ettiğinden ve dosya sistemi büyük/küçük harf duyarsız olduğundan, A, a'ya eşdeğer olarak yorumlanır. Git, post-checkout kanca betiğini .git/modules/query/fast/hooks/ dizinine yazması için yanlış yönlendirilir. . git/modules/{module_type}/{module_name}/hooks klasöründe bir post-checkout kanca betiği bulunursa, ana depo --recursive seçeneği ile klonlandığında tetiklenir. Sonuç olarak, saldırganlar uzaktan kod çalıştırarak kullanıcının cihazını başarıyla tehlikeye atabilir.

Klonlama, alt modülleri çekme ve istenmeyen komut dosyası yürütme dahil olmak üzere kurbanın kötü amaçlı bir depo ile etkileşimini gösteren bir diyagram
Saldırının akışını gösteren bir diyagram

Git Güvenlik Açığından Yararlanmanın Simülasyonu

Önceki bulgulara dayanarak, OPSWAT Fellows kötü niyetli bir depo oluşturmayı simüle etmek için bir ana depo ve kanca oluşturdu:

  1. Başlangıçta, Git'in her zaman protocol.file dosyasına izin verecek şekilde yapılandırılması, core.symlinks'in etkinleştirilmesi ve varsayılan dal adının main olarak ayarlanması (uyarı mesajından kaçınmak için) önerilir. 
Sembolik bağlantı işleme ve varsayılan şube kurulumu için Git ayarlarını global olarak yapılandırmaya yönelik komutları gösteren bir terminal snippet'i
  1. Hooks dizinine kötü amaçlı bir post-checkout kanca betiği eklenir. Post-checkout betiğinin kullanıcının cihazında çalıştırılabilmesini sağlamak için, bu kancayı oluşturan bash betiği chmod +x fast/hooks/post-checkout komutunu içerir. 
Git post-checkout kancasına gömülü kötü amaçlı kodlanmış bir Python komutunu görüntüleyen bir terminal betiği
  1. Ana depoda .git dizinine işaret eden bir sembolik bağlantı oluşturulur.
Yardımcı programları ve depodaki bir .git dosyasını dahil etmek için değişiklikleri işleme sürecini gösteren bir terminal betiği
Bir Git arayüzünde görüntülenen src, libs ve .gitmodules gibi klasörlerin bulunduğu bir depo dizini listesinin ekran görüntüsü
Savunmasız ana depo
Kontrol sonrası kancası olan bir dizini gösteren bir Git deposu arayüzünün ekran görüntüsü

Ödeme sonrası kancası içeren /hooks klasörü

Bir Git deposunu klonlamak için terminal komutlarını ve ağ bağlantısı kurulmuş bir PowerShell oturumunu gösteren ekran görüntüsü
Kullanıcı bu kötü amaçlı depoyu klonladığında, saldırgan kurbanın cihazını tehlikeye atabilir. 

İyileştirme

Tehdidi etkisiz hale getirmek için kullanıcılar Git'i kaldırabilir veya en son güvenlik yamasını uygulayabilir. Alternatif olarak, MetaDefender Endpoint gibi bir çözüm, kullanıcıyı anında bilgilendirebilir ve sezgisel arayüzü aracılığıyla ortamdaki bilinen tüm CVE'leri görüntüleyebilir. MetaDefender Endpoint , 3 milyondan fazla veri noktası ve 30.000'den fazla Önem Derecesi Bilgisine sahip İlişkili CVE ile yeteneklerinden yararlanarak en son CVE'leri tespit edebilir ve azaltabilir. Her iki karşı önlemin uygulanmasıyla, CVE tamamen kontrol altına alınacak ve yıkıcı bir siber saldırı riski ortadan kalkacaktır.

MetaDefender Endpoint 'i siber güvenlik stratejinizin ön saflarına koymaya hazır mısınız?


OPSWAT ile Güncel Kalın!

En son şirket güncellemelerini almak için bugün kaydolun, hikayeler, etkinlik bilgileri ve daha fazlası.