Microsoft’un Güvenli Kanalı’ndaki bir güvenlik açığına yönelik yakın zamanda yapılan bir analiz, uzaktan kod çalıştırma için kullanılabilecek kritik bir açığı ortaya çıkardı.
Güvenlik açığı başlangıçta bir tamsayı taşması sorunu olarak tanımlandı. Ancak, daha detaylı inceleme bunun bir Use-After-Free (UAF) güvenlik açığı olduğunu belirledi.
Bu tür bir güvenlik açığı, bir programın başvurduğu bellek serbest bırakıldıktan sonra bile işaretçiyi kullanmaya devam etmesi durumunda ortaya çıkar ve öngörülemeyen davranışlara ve potansiyel istismara yol açar.
Cümleyi daha profesyonel bir üslupla yeniden yazmak gerekirse:
Açığı keşfeden ve Microsoft’a bildiren araştırmacı bugün teknik bir analiz yayınladı. Ayrıntıları inceleyelim.
Are you from SOC and DFIR Teams? Analyse Malware Incidents & get live Access with ANY.RUN -> Get 14 Days Free Access
Teknik Analiz
Güvenlik açığı şurada bulundu: CSsl3TlsContext::CSsl3TlsContext
fonksiyon. Microsoft tarafından, bir atama işlemini engellemek için koşullu bir kontrol getiren bir yama yayımlandı:
if ( !(unsigned __int8)wil::details::FeatureImpl<__WilFeatureTraits_Feature_2612696381>::__private_IsEnabled(&`wil::Feature<__WilFeatureTraits_Feature_2612696381>::GetImpl'::`2'::impl) )
{
*(_QWORD *)(this + 472) = *(_QWORD *)(a2 + 472);
*(_QWORD *)(a2 + 472) = 0i64;
}
Bu yama, belirli bir özellik etkinleştirildiğinde belirli bir alanın atama işlemini etkili bir şekilde engelledi.
İkili analiz için IDA kullanılarak, fonksiyon içinde ofset 472’deki (hex: 1D8h) alana yeni bir bellek tahsisinin (M1 olarak gösterilir) atandığı keşfedildi CSsl3TlsServerContext::ProcessRecord
. CTlsMessageFragment::Initialize
Bu yeni tahsis edilen belleğe bir işaretçi atayan ve olası bir UAF senaryosuna yol açan bir fonksiyon bulundu.
void __fastcall CTlsMessageFragment::Initialize(CTlsMessageFragment *this, struct CSsl3TlsContext *a2)
{
int v2; // eax
int v3; // edx
unsigned int v4; // edx
unsigned int v5; // eax
*(_QWORD *)this = a2;
......
v3 = 1536;
LABEL_9:
*((_DWORD *)this + 3) = v3;
v5 = *((_DWORD *)this + 2);
if ( v5 > 0xFFFFFF )
v5 = 0xFFFFFF;
*((_DWORD *)this + 2) = v5;
}
Analiz, yamanın 472. sahayı belirlediğini ortaya koydu a2
yapı sıfıra indirildiğinde, M1’in ilk alanı güncellenmedi. Bu gözetim, M1’in ilk alanının hala işaret etmesine izin verdi a2
yayın süreci sırasında bir UAF güvenlik açığı oluşturuyor.
“Son olarak, gerçek testlerden sonra, bu konumdaki UAF sorunu gerçekten de bu. Kullanılan konumdan, yapının sanal tablosunu kullanacağı görülebilir. Konum düzgün bir şekilde işgal edilirse, yırtılma doğrudan kontrol edilebilir. Makul aygıtlarla, uzaktan kod yürütme gerçekleştirilebilir.” dedi Araştırmacı.
Güvenlik açığının zarar verme potansiyeli önemlidir. Doğru şekilde kullanılırsa, kimliği doğrulanmamış uzaktan kod yürütülmesine izin verebilir. Bu, bir saldırganın önceden kimlik doğrulaması gerektirmeden uzak bir sistemde keyfi kod yürütebileceği ve ciddi bir güvenlik riski oluşturabileceği anlamına gelir.
Kusuru keşfeden araştırmacı, ilk gözden kaçırmalarının deneyimsizlikten ve UAF sorunundan ziyade bayt kodu ayrıştırmaya odaklanmaktan kaynaklandığını belirtti. Bu vaka, siber güvenlik araştırmalarında kapsamlı analiz ve sabrın önemini vurguluyor.
Güvenlik açığı yamalanmış olsa da, bunun bir UAF sorunu olarak gerçek doğasının ortaya çıkması, yazılım güvenliğinde yer alan karmaşıklıkların bir hatırlatıcısı olarak hizmet eder. Ayrıca, tüm olası güvenlik açıklarının ele alınmasını sağlamak için sürekli teyakkuz ve güvenlik yamalarının ayrıntılı bir şekilde incelenmesinin gerekliliğini vurgular.
Download Free Cybersecurity Planning Checklist for SME Leaders (PDF) – Free Download