Yapay Zeka Destekli Siber Saldırılar: Akıllı Tehditler Nasıl Tespit Edilir, Önlenir ve Savunulur?

Ş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-38063'ün Kapsamlı Dökümü: Windows TCP/IP Yığınında Kritik Bir Tehdit

tarafından OPSWAT
Bu Gönderiyi Paylaş
OPSWAT Burs Programı Katılımcısı Pham Ngoc Thien'in Vesikalık Fotoğrafı

13 Ağustos 2024 tarihinde MSTC (Microsoft Güvenlik Yanıt Merkezi), Windows TCP/IP yığınında bulunan ve işletim sistemindeki hayati ağ işlevlerini tehlikeye atmak için kullanılabilecek kritik bir güvenlik açığı olan CVE-2024-38063'ü açıkladı. Burada, OPSWAT Lisansüstü Burs Programı katılımcıları, bu açığın teknik detayları ve potansiyel etkisinin yanı sıra bu güvenlik açığı için önerilen hafifletme stratejilerinin kapsamlı bir incelemesini sunmaktadır.

OPSWAT Burs Programı Katılımcıları: Pham Ngoc Thien - Ho Chi Minh Bilgi Teknolojileri Üniversitesi 

Genel Bakış

CVE-2024-38063, IPv6 paketlerinin işlenmesini etkileyen, 9.8 CVSS puanına sahip kritik bir Windows TCP/IP yığını güvenlik açığıdır. Uzaktan saldırganlar, kötü amaçlı kod çalıştırmak veya DoS'a (Hizmet Reddi) neden olmak için IPv6 uzantı başlıklarını işlerken bir tamsayı düşük akışı kullanarak bu güvenlik açığından yararlanabilir.

IPv6 çoğu modern sistemde varsayılan olarak etkin olduğundan, bu sıfır tıklama açığı önemli bir risk oluşturmaktadır. Sonuç olarak, IPv6'nın etkin olduğu tüm yamalanmamış Windows 10, Windows 11 ve Windows Server 2008, 2012, 2016, 2019 ve 2022 sürümleri bu CVE'ye karşı savunmasızdır.

CVE-2024-38063'ün Windows ağ işlevleri üzerindeki etkisini gösteren diyagram

Anahtar Kavramlar

Windows TCP/IP Yığını

Windows TCP/IP yığını, İletim Kontrol Protokolü/İnternet Protokolü (TCP/IP) paketi aracılığıyla ağ iletişiminden sorumlu temel bir işletim sistemi bileşenidir. Yerel ve küresel ağlardaki cihazlar arasındaki iletişimi kolaylaştırarak tüm ağ etkileşimlerini yönetir.

Windows TCP/IP yığın mimarisinin ekran görüntüsü

IPv6 ve Uzantı Başlıkları

IPv6, IPv4'ün sınırlamalarını ele almak için geliştirilmiştir. Uzantı başlıkları aracılığıyla modülerlik ve esneklik gibi çeşitli geliştirmeler getirmiştir. IPv6 başlığı ve yükü arasına yerleştirilen başlıklar, isteğe bağlı verileri ve gelişmiş özellikleri destekler.

Anahtar IPv6 uzantı başlıkları şunları içerir:

  • Hop-by-Hop Seçenekleri (Sonraki Başlık = 0) 
  • Yönlendirme Başlığı (Sonraki Başlık = 43) 
  • Parça Başlığı (Sonraki Başlık = 44) 
  • Hedef Seçenekleri Üstbilgisi (Sonraki Üstbilgi = 60) 
  • Kimlik Doğrulama Başlığı (AH) (Sonraki Başlık = 51) 
  • Kapsülleyen Güvenlik Yükü (ESP) (Sonraki Başlık = 50) 

Her uzantı başlığı, Sonraki Başlık alanı aracılığıyla bir sonrakine işaret ederek sıralı bir zincir oluşturur. Bu modülerlik, paket işleme sürecine karmaşıklık ve potansiyel istismar vektörleri getirir.

IPv6 uzantı başlıklarını ve paket yapısını gösteren diyagram
IPv6 datagramının biçimi

Tamsayı Düşük Taşması

Bir hesaplama, bir veri türü için temsil edilebilir minimum değerden daha küçük bir değer ürettiğinde bir tamsayı düşük akışı meydana gelir. Örneğin, işaretsiz bir tamsayıda daha büyük bir değerin daha küçük bir değerden çıkarılması, sonucun çok büyük bir pozitif değer olmasına neden olabilir.

Bir tamsayı taşması, değer veri türünün maksimum sınırını aştığında ve temsil edilebilir minimum değere (örneğin, 0-10 aralığında 0) geri "taştığında" meydana gelir. Her iki senaryo da aritmetik işlemlerde sınır koşullarının yanlış ele alınması nedeniyle meydana gelir ve yazılım sistemlerinde ciddi güvenlik açıklarına yol açar.

Veri işlemede tamsayı alt akışı ve taşmasını açıklayan diyagram

Güvenlik Açığı Analizi

IPv6 İşleme İş Akışı

Bir IPv6 paketi aldıktan sonra, Windows ilk olarak IPv6 başlığını ayrıştırır. Ardından, IppReceiveHeaderBatch işlevi sonraki başlıklar için uygun işleyiciyi seçmek üzere Sonraki Başlık alanının değerini kontrol eder. Zincirdeki her uzantı başlığı için, IppReceiveHeaderBatch ilgili başlığı işlemek üzere ilgili rutini çağırır.

Windows'ta IPv6 paket işleme iş akışını özetleyen diyagram

Bu mekanizmanın esnek ve modüler tasarımına rağmen, potansiyel bir saldırı vektörü ortaya çıkarmaktadır. IPv6'da, parçalanmış paketler genellikle hedeflerinde yeniden birleştirilir ve burada parça yeniden birleştirme işleminde ve başlık işlemede bir güvenlik açığı vardır.

Bir saldırgan, manipüle edilmiş uzantı başlıklarına sahip çok sayıda hatalı biçimlendirilmiş paket göndererek belleğin yanlış yönetilmesine neden olabilir ve bir arabellek taşmasını tetikleyebilir. Bu, fazla verilerin istenmeyen bellek bölgelerinin üzerine yazılmasına olanak tanır ve bu da potansiyel olarak rastgele kodun yürütülmesine izin verir. Bu güvenlik açığı CVE-2024-38063 olarak tanımlanmıştır.

Hatalı biçimlendirilmiş IPv6 paketlerinden kaynaklanan arabellek taşması riskini gösteren diyagram

Windows TCP/IP Yığınında Kritik Açık

Microsoft'un CVE-2024-38063 güvenlik açığını gidermek için hazırladığı yama, güvenlik araştırmacısı Marcus Hutchins tarafından derinlemesine incelendi. Hutchins'in teknik blogu, bu güvenlik açığının temel nedenine ilişkin ayrıntılı bilgiler sunmaktadır. Hutchins'in bulgularından yola çıkan arkadaşımız, açığı daha iyi anlayabilmek için konuyu daha detaylı bir şekilde araştırdı.

Yama Analizi

Yama, tcpip.sys dosyasında Ipv6pProcessOptions işlevinde bir değişiklik içeren bir güncelleme içeriyordu. Tek satırlık bir değişiklik, IppSendErrorList() işlevindeki bir çağrıyı IppSendError() işlevine yapılan bir çağrı ile değiştirerek IppSendErrorList() işlevinin CVE'ye katkıda bulunmuş olabileceğini göstermiştir.

CVE-2024-38063 için yamadan önce tcpip.sys dosyasını gösteren kod ekran görüntüsü
Şekil 1. Yamadan önce
CVE-2024-38063 için yamadan sonra tcpip.sys dosyasını gösteren kod ekran görüntüsü
Şekil 2. Yamadan sonra

Sıfır paket boyutu

IppSendErrorList() işlevi daha yakından incelendiğinde, her biri için IppSendError() işlevini çağırarak bağlantılı bir paket listesini işlediği ortaya çıkmıştır. IppSendError() işlevi kusurlu paketlere STATUS_DATA_NOT_ACCEPTED durumunu atar. Ardından, sorunlu paket hakkında bilgi içeren bir ICMP hata mesajı oluşturur ve geri gönderir. Ancak, IppSendErrorList() birden fazla pakette always_send_icmp = true ile çağrıldığında, her paket için packet_size alanını sıfıra ayarlar.

Paket boyutunu sıfıra ayarlayan IppSendErrorList işlevini gösteren kod ekran görüntüsü

Ipv6pProcessOptions işlevi, hem Hop-by-Hop Seçenekleri hem de Hedef Seçenekleri başlıkları dahil olmak üzere seçenek değeri alanları içeren uzantı başlıklarını işlemek için tasarlanmıştır. Bir saldırgan, Seçenek Türünü 0x80'den büyük herhangi bir değere ayarlayarak, seçenekler başlığının işlenmesinde belirli bir hatayı tetikleyebilir, always_send_icmp'nin true olarak ayarlanmasına zorlayabilir ve sonuç olarak paket boyutunun sıfıra ayarlanmasına neden olabilir.

IPv6 Next Header alanının istismar için manipülasyonunu gösteren kod ekran görüntüsü

Sıfır boyutlu bir paket genellikle atılsa da, bir saldırgan orijinal IPv6 paketindeki Sonraki Başlık alanını manipüle edebilir. Bu manipülasyon, saldırganların paketin sonraki işlem aşamalarında nasıl yorumlanacağı üzerinde kontrol sahibi olmalarını sağlayarak paketin hemen reddedilmesini önler ve istismar için bir fırsat yaratır. 

IPv6 paket işleme üzerinde saldırgan kontrolünü gösteren diyagram

Parça İşlemede Tamsayı Düşük Akışı

Sonraki Başlık alanını 44 olarak ayarlayarak, bir Parça Başlığı belirten bir paket, IPv6 parçalama veya yeniden birleştirme rutinleri tarafından işlenir. Paket parça ayrıştırıcıya ulaştığında, Ipv6pReceiveFragment(), şunu belirtir: 

  • Paket boyutu sıfırdır. 
  • Parça başlığı, işlenecek ek verilerin kaldığını gösterir. 

Ipv6pReceiveFragment() fonksiyonunda, fragment_size için tahsis boyutu, herhangi bir doğrulama yapılmaksızın paket boyutundan 0x30 (paket başlığı uzunluğu) çıkarılarak hesaplanır. Paket boyutu sıfırsa, bu çıkarma işlemi alttan taşarak 16 bitlik büyük bir değerle (0xFFD0 veya 65488 civarında) sonuçlanır ve ayrıştırıcının paketin geçerli sınırları dışında aşırı bir bellek işlemesine ve bellek bozulmasına neden olur. 

IPv6 parça işlemede tamsayı düşük akışını gösteren kod ekran görüntüsü
Şekil 3 Parça İşlemede Tamsayı Düşük Akışı

Tahsiste Düşük Taşmadan Taşmaya ve Uyumsuzluğa

Ipv6pReassemblyTimeout() işlevi, tampon boyutlarını ve kopyalama işlemlerini belirlemek için 16 bit aritmetik kullanarak belirli bir süre sonra tamamlanmamış IPv6 parçalarını temizlemekten sorumludur. Packet_length veya fragment_size değerinin 0xFFD0 olduğu önceki adımdaki düşük taşma nedeniyle, tahsis sırasında bir taşma meydana gelir.  

Ortaya çıkan hesaplama, kaydın sıfırlanmasına neden olarak yalnızca 48 bayt bellek ayrılmasına yol açar. Ancak kopyalanan veri miktarı (reassembly->payload'dan 65.488 bayt) tahsis edilen belleğe karşılık gelmediği için çekirdek havuzunda kontrol edilebilir bir arabellek taşması meydana gelir. 

Bellek tahsisinde uyumsuzluk nedeniyle tampon taşmasını gösteren kod ekran görüntüsü

Bu tutarsızlık, saldırganların IPv6 işlemedeki güvenlik açığından yararlanan özel olarak hazırlanmış bir paket aracılığıyla kötü amaçlı kod çalıştırmasına kapı açmaktadır.

CVE-2024-38963 Kavram Kanıtı 

CVE-2024-38963 güvenlik açığını yeniden üretme girişiminde, arkadaşlarımız kusurdan yararlanmak için tasarlanmış bir dizi hatalı biçimlendirilmiş paket hazırladılar. İzledikleri süreç şöyleydi:

1. Kötü Biçimlendirilmiş IPv6 Paketleri Oluşturma

Temel IPv6 başlığının ardından bir IPv6 Hedef Seçenekleri uzatma başlığı (tip 60) ekleyin, ardından geçersiz bir seçeneği (örneğin, seçenek tipi 0x81) gömün. 

Bu manipülasyon Windows çekirdeğini (tcpip.sys) always_send_icmp = true olarak ayarlamaya zorlayarak IppSendErrorList() rutini aracılığıyla ICMPv6 hata üretimini tetikler.

2. Net Tampon Listesi (NBL) İşlemeye Zorlama

Hedefin bu hatalı biçimlendirilmiş paketlerin hızlı patlamalarıyla doldurulması, çekirdeğin birden fazla paketi tek bir Net-Buffer List (NBL) içinde gruplama şansını artırdı. İki veya daha fazla paket gruplandığında, savunmasız IppSendErrorList() döngüsü etkinleştirilir ve sonraki parçalardaki DataLength ve Offset meta verilerini yanlış bir şekilde sıfırlar (paket boyutu artık sıfırdır). 

3. Parçalanmış IPv6 Paketlerinin Enjekte Edilmesi

Hatalı biçimlendirilmiş paketlerin iletilmesinin ardından, Fragment uzantısı başlıklarını içeren parçalanmış IPv6 paketleri gönderilir. Bu parçalar, zaten bozuk olan DataLength değerleri kullanılarak işlenir. 

4. Yeniden Birleştirme Zaman Aşımından Yararlanma

Çekirdek, paketin yeniden birleştirilmesine izin vermek için parçaları 60 saniye boyunca tutar (Ipv6pReassemblyTimeout tarafından yönetilir). Bu zaman aşımı sırasında, bozuk DataLength değerleri Ipv6pReceiveFragment'ta bir tamsayı düşük akışını tetikleyerek yanlış hesaplanmış (aşırı büyük) bir parça boyutuna neden olur.

5. Yığın Arabellek Taşmasını Tetikleme

Çekirdek, taşan değerleri temel alarak bir yığın tamponu tahsis eder. Yeniden birleştirme işlemi sırasında iki farklı hesaplama gerçekleşir: biri bellek ayırma boyutunu belirler (16 bitlik taşma nedeniyle çok küçük olur), diğeri ise büyük, alttan taşan değeri kullanarak kopyalama uzunluğunu hesaplar.

Bu uyumsuzluk, sınırların dışında bir yazmaya yol açarak Hizmet Reddi (DoS) veya Uzaktan Kod Çalıştırmayı tetiklemek için kullanılabilecek yığın tabanlı bir arabellek taşmasına neden olur.

CVE-2024-38063 için konsept istismarının kanıtını özetleyen diyagram

Bu CVE'yi bir Hizmet Reddi saldırısı için yeniden üretmek için kullanılan kaynak kodu:

Bu güvenlik açığı bir saldırgan tarafından istismar edildiğinde, kurbanın sistemi derhal çökebilir ve mavi bir ölüm ekranıyla sonuçlanabilir: 

CVE-2024-38063 istismarından sonra Windows mavi ölüm ekranını gösteren UI ekran görüntüsü

İyileştirme

İşletim sisteminizi düzenli olarak güncellemeyi ihmal etmek, cihazınızı CVE'lere (Ortak Güvenlik Açıkları ve Maruziyetler) bağlı olanlar da dahil olmak üzere güvenlik tehditlerine maruz bırakır. Bu riskleri azaltmak için MetaDefender Endpoint™, işletim sisteminizin sürümünü algılayarak ve CVE-2024-38063 gibi bilinen CVE'ler de dahil olmak üzere güvenlik açıklarını kontrol ederek güçlü koruma sağlar. 

MetaDefender Endpoint , kritik BT/OT ağlarındaki cihazları çevresel ve çıkarılabilir medya tehditlerine karşı korumak için tasarlanmıştır. İşletim sisteminizin ve yüklü uygulamaların güncel olmasını sağlar, eski veya savunmasız sürümleri işaretler ve önerilen düzeltmelerle birlikte bilinen güvenlik açıkları ve CVE'leri olan uygulamaları listeler. Ayrıca, 180'den fazla dosya türünde Deep CDR™ gerçekleştirirken birden fazla kötü amaçlı yazılımdan koruma motoru kullanılarak taranıp temiz bulunana kadar USB sürücülere erişimi engelleyerek cihazların çıkarılabilir medya risklerinden korunmasına yardımcı olur.  

MetaDefender Endpoint 'in sektör lideri zeka ile güvenlik duruşunuzu nasıl dönüştürebileceğini görmek için bugün uzmanlarımızdan biriyle konuşun. 

OPSWAT ile Güncel Kalın!

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