CVE-2023-24941:Microsoft Ağ Dosya Sistem Açığı Nedir ?

a3b2jeo.png

logo.png

:siberataystaff:


CVE-2023-24941: Microsoft Ağ Dosya Sistem Açığı Nedir ?

CVE-2023-24941, Microsoft Ağ Dosya Sistemine yönelik bir Uzaktan Kod Yürütme (RCE) açığıdır

Bu açık, desteklenen Windows Server sürümlerini etkileyen kritik bir güvenlik açığıdır ve CVSSv3 skoru 9.8 olarak değerlendirilmiştir.
Bu açığın etkilenen bir sunucuda kötü niyetli bir saldırganın sistem düzeyinde ayrıcalıklar elde etmesine olanak tanıdığı belirtilmektedir.




Güvenlik Açığını İnceleyelim

Microsoft Windows, bazıları Windows olmayan dosya paylaşımlarıyla iletişim kurmak için kullanılabilen çeşitli ağ özellikleriyle birlikte gelir. Bu modüllerden biri de NFS'dir.
Ağ Dosya Sistemi (NFS), ilk olarak 1984 yılında Sun Microsystems tarafından geliştirilen bir ağ dosya sistemi protokolüdür. Sürüm 2, RFC 1094'te belgelenmiştir . Sürüm 3, RFC 1813'te belgelenmiştir . Sürüm 4, IETF tarafından geliştirilmiştir ve RFC 3010 (Aralık 2000'de yayımlanmıştır) ve RFC 3530'da belgelenmiştir.(Nisan 2003'te yayınlandı). NFS, kullanıcıların uzak dosya paylaşımlarına, yerel dosya sistemine erişildiği gibi erişmesine olanak tanır. Paylaşımda okuma-yazma ve salt okunur gibi farklı erişim düzeyleri ve izinler ayarlanabilir. Ayrıca IP/UID/GID/Kerberos güvenliği de kullanılabilir. NFS, kontrol mesajları alışverişinde bulunmak için Açık Ağ Bilgi İşlem (ONC) Uzaktan Prosedür Çağrısını (RPC) kullanır. ONC RPC orijinal olarak Sun Microsystems tarafından geliştirilmiştir, Sun RPC olarak da adlandırılabilir .
ONC RPC mesajları TCP üzerinden aktarıldığında, mesajların başına mesajın uzunluğunu belirten bir Parça başlık yapısı (aşağıdaki tabloda gösterildiği gibi) eklenir. Bu, alıcının tek bir TCP oturumu üzerinden gönderilen birden fazla mesajı ayırt etmesine olanak tanır. UDP gibi diğer protokoller bu alanı kullanmaz. Tüm çok baytlı değerlerin big-endian bayt sırasına göre kodlandığına dikkat edin.
NFS4 protokolünde bir utf8string aşağıdaki formatta aktarılır:


Kod:
Offset      Size  Description
---------   ----- ----------------------------------
0x0000      4     LEN
0x0004      LEN   String data

Güvenlik açığı, sunucunun belleği yetersiz olduğunda utf8strings içeren gelen NFSv4.1 çağrıları işlenirken tetikleniyor. Bir sunucu alınan bir dizeyi ayrıştırırken, dize verilerini depolamak için bir arabellek ayrılır. Kod, ayırma başarısızlığını düzgün bir şekilde işlemez, bu da boş sonlandırma baytının hala geçersiz bir arabelleğin sonuna yazılmasına neden olur.
Kimliği doğrulanmamış uzak bir saldırgan, kurbanın Ağ Dosya Sistemi hizmetine hazırlanmış bir çağrı göndererek bu güvenlik açığından yararlanabilir. Bu güvenlik açığından başarıyla yararlanılması, uzaktan kod yürütülmesine neden olabilir.

Kaynak Kodu Çözümü

Aşağıdaki kod nfssvr.sys 10.0.17763.4252 sürümünden alınmıştır .


Kod:
               **************************************************************
               *                          FUNCTION                          *
               **************************************************************
               undefined __fastcall XdrDecodeString(longlong param_1, uint pa
      undefined         AL:1           <RETURN>
      longlong          RCX:8          param_1
      uint              EDX:4          param_2
      void *            R8:8           param_3
               XdrDecodeString
1c001dfec     MOV         qword ptr [RSP + 0x8],RBX
1c001dff1     MOV         qword ptr [RSP + 0x10],RSI
1c001dff6     PUSH         RDI
1c001dff7     SUB         RSP,0x20
1c001dffb     CMP         dword ptr [RCX + 0x108],0x0
1c001e002     MOV         RSI,R8
1c001e005     MOV         EDI,EDX
1c001e007     MOV         RBX,RCX
1c001e00a     JL         LAB_1c001e091
1c001e010     MOV         R9,qword ptr [RCX + 0x48]
1c001e014     TEST         R9,R9
1c001e017     JNZ         LAB_1c001e01d
1c001e019     XOR         EAX,EAX
1c001e01b     JMP         LAB_1c001e040
                    LAB_1c001e01d
1c001e01d MOV         EDX,dword ptr [R9 + 0x40]
1c001e021 SUB         EDX,dword ptr [R9 + 0x38]
1c001e025 MOV         R8D,dword ptr [R9 + 0x4c]
1c001e029 CMP         R8D,EDX
1c001e02c JC         LAB_1c001e035
1c001e02e MOV         ECX,R8D
1c001e031 SUB         ECX,EDX
1c001e033 JMP         LAB_1c001e038
             LAB_1c001e035
1c001e035 OR         ECX,0xffffffff
             LAB_1c001e038
1c001e038 XOR         EAX,EAX
1c001e03a CMP         R8D,EDX
1c001e03d CMOVNC         EAX,ECX
             LAB_1c001e040
1c001e040 CMP         EAX,EDI
1c001e042 JC         LAB_1c001e091
1c001e044 TEST         R9,R9
1c001e047 JNZ         LAB_1c001e04d
1c001e049 XOR         EDX,EDX
1c001e04b JMP         LAB_1c001e051
             LAB_1c001e04d
1c001e04d MOV         RDX,qword ptr [R9 + 0x40]
             LAB_1c001e051
1c001e051 MOV         R8,RDI
1c001e054 MOV         RCX,RSI
1c001e057 CALL         memcpy
1c001e05c MOV         RAX,qword ptr [RBX + 0x48]
1c001e060 ADD         qword ptr [RAX + 0x40],RDI
1c001e064 MOV         RCX,qword ptr [RBX + 0x48]
1c001e068 TEST         RCX,RCX
1c001e06b JNZ         LAB_1c001e077
1c001e06d MOV         R8,qword ptr [RCX + 0x40]
1c001e071 XOR         EAX,EAX
1c001e073 XOR         EDX,EDX
1c001e075 JMP         LAB_1c001e082
             LAB_1c001e077
1c001e077 MOV         RDX,qword ptr [RCX + 0x40]
1c001e07b MOV         RAX,qword ptr [RCX + 0x38]
1c001e07f MOV         R8,RDX
             LAB_1c001e082
1c001e082 SUB         RAX,RDX
1c001e085 AND         EAX,0x3
1c001e088 ADD         RAX,R8
1c001e08b MOV         qword ptr [RCX + 0x40],RAX
1c001e08f JMP         LAB_1c001e09e
             LAB_1c001e091
1c001e091 MOV         R8,RSI
1c001e094 MOV         EDX,EDI
1c001e096 MOV         RCX,RBX
1c001e099 CALL         XdrDecodeOpaqueSlow
             LAB_1c001e09e
1c001e09e MOV         byte ptr [RDI + RSI*0x1],0x0 ;Always writes null terminator
1c001e0a2 MOV         RBX,qword ptr [RSP + 0x30]
1c001e0a7 MOV         RSI,qword ptr [RSP + 0x38]
1c001e0ac ADD         RSP,0x20
1c001e0b0 POP         RDI
1c001e0b1 RET

Bu güvenlik açığından yararlanan bir saldırıyı tespit etmek için, tespit cihazının 2049/TCP ve 2049/UDP bağlantı noktalarındaki trafiği izlemesi ve ayrıştırması gerekir.
ONC RPC mesajları TCP üzerinden aktarıldığında, mesajların başına mesajın uzunluğunu belirten bir Parça başlık yapısı (yukarıdaki tabloda gösterildiği gibi) eklenir. Bu, alıcının tek bir TCP oturumu üzerinden gönderilen birden fazla mesajı ayırt etmesine olanak tanır. UDP gibi diğer protokoller bu alanı kullanmaz. Güvenlik açığı bulunan yöntem
XdrDecodeString bu güvenlik açığını yalnızca adresinden çağrıldığında tetikleyebilir
güvenlik açığını yalnızca adresinden çağrıldığında tetikleyebilir
Nfs4SvrXdrpDecode_STRING.

Aşağıdaki alanlar RFC 3530 kullanılarak ayrıştırılır ve RFC 3530'da
Nfs4SvrXdrpDecode_STRING tanımlanır :


Kod:
OPEN4args.claim.file
OPEN4args.claim.delegate_cur_info.file
OPEN4args.claim.delegate_cur_info.file_delegate_prev
EXCHANGE_ID4args.eia_client_impl_id.nii_domain
EXCHANGE_ID4args.eia_client_impl_id.nii_name
RENAME4args.oldname
RENAME4args.newname
SECINFO4args.name
CREATE4args.objname
CREATE4args.linkdata

NFS4 mesajlarındaki yukarıdaki alanları izlemelidir. Herhangi bir geçerli alan değeri bu güvenlik açığını tetikleyebilir, ancak bir saldırgan, dize işleme sırasında başarısız tahsisin gerçekleşme olasılığını artırmak için büyük bir arabellek talep edebilir. Belirtilenden daha büyük dize uzunlukları 0x1000 şüpheli olarak değerlendirilmelidir. Bulunursa, bu güvenlik açığından yararlanan bir saldırının gerçekleştirilmesi muhtemeldir.

Bundan daha büyük dizelerin algılanmasının
, 0x1000 dosya yolu dizelerinin izin verilen tipik sınırına dayandığını ve çeşitli sunucu yapılandırmalarını hesaba katacak şekilde daha yüksek veya daha düşük ayarlanabileceğini unutmayın.


CVE-2023-24941 Çözümü


Microsoft bu hatayı Mayıs ayında CVE-2023-24941 olarak düzeltti . Yazılarında, NFSv4.1'i devre dışı bırakmanın ve NFSv2 veya NFSv3'e düşürmenin bu güvenlik açığını geçici olarak azaltmak için kullanılabileceğini belirtiyorlar. Ancak, Mayıs 2022 Windows güvenlik güncelleştirmelerinden CVE-2022-26937'yi zaten yüklemediyseniz bu azaltıcı yöntemi kullanmamanız gerektiğini de belirtiyorlar . Daha iyi seçenek, bu güvenlik açığını tamamen ortadan kaldırmak için NFSv1'e yönelik en son yamayı test edip dağıtmaktır.

Konumu Okuduğun İçin Teşekkür Ederim.

Yararlandığım Kaynaklar:
1:zerodayınvıte Şirketi
2.trendmicro
3.ieft org
4.Microsoft

a3b2jeo.png


 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.