Kesintilerin İçinden Null Pointer İstisnası: Crowdstrike Teknik Analizi
Uç nokta koruma yazılımı sağlayıcısı olan siber güvenlik firması "Crowdstrike", 19 Temmuz 2024 Cuma günü dünya çapında milyonlarca Windows bilgisayarı mahveden bir güncelleme yayınladığında dünya şoka girdi.
Bu yazımda, tam olarak ne olduğunu, bunun nasıl asla gerçekleşmemesi gerektiğini ve 3. parti uç nokta koruma yazılımının kendisinin neden tehlikeli bir güvenlik tehdidi olduğunu inceleyeceğim.
Windows'un halka açık mavi ekranları 19 Temmuz'da tüm dünyada hakim oldu
CrowdStrike'a ve 19 Temmuz 2024'te milyonlarca insanın hayatını altüst eden fiyaskoya derinlemesine dalmadan önce, CrowdStrike'ın ne yaptığına ve Microsoft'un bu konuda neden suçlanamayacağına bir göz atmamız gerekecek.
"Uç nokta koruması" siber güvenlik dünyasındaki savunmasız en açık kapıdır ve kötü amaçlı yazılım ya da istenmeyen kodların çalıştırılmamasını sağlamak için yerel makinelerde çalışan yazılımları tanımlar.
Tanıdık geliyor mu?
Evet, öyle. Açıkça söylemek gerekirse, uç nokta koruması, eski güzel anti-virüs ve güvenlik duvarı yazılımınızın süslü bir adıdır.
ZoneAlarm, Norton AntiVirus ve benzerlerinin 90'ların sonu ve 2000'lerin başında yaşattığı senaryolardan sadece birkaçı. Yani bu vaka ile söyleyebilirim ki 90’lara geri döndük :)
Peki uç nokta koruması nasıl çalışır?
Uç nokta koruma sistemleri iki ana bileşenden oluşur: bir arka uç kontrol merkezi ve uç noktalara yüklenen bir ajan yazılımı. Uç noktalar burada mobil cihazlar, bilgisayarlar, sunucular ve ağ cihazları anlamına gelir.
Bu tür uç nokta koruma aracı yazılımlarıyla ilgili temel sorun on yıllardır aynıdır: işletim sisteminin (Windows) koruma ve güvenlik önlemlerini atlayarak kendisini işletim sistemine derinlemesine yerleştirmesi gerekir.
Bu ajan yazılımı uç noktalarda kalıcı olarak çalışır. Kullanıcı arayüzü (GUI) ve süreçleri ve yürütmeleri engellemek için işletim sistemine bağlanan "sensörler" dahil olmak üzere bir çekirdek uygulama ile birlikte gelir. Windows'ta aracı yazılımın engellemesi gereken bir programı çalıştırmaya çalışırsanız, bir "sensör" işletim sistemi tarafından bu yürütme hakkında bilgilendirilir, yürütülebilir dosyayı kontrol eder ve tabii yürütülmesini engeller. Daha sonra engellenen yürütmeyi ana uygulamaya bildirir, o da İnternet üzerinden kontrol merkezine bildirir.
Bu on yıllık bir "zorluk": derinlemesine iç içe geçmiş sistem yazılımları işletim sistemlerini çökertiyor. Bu tür bir "uç nokta koruması" ile BT yöneticileri ekipmanlarının kullanımını denetleyebilir ve kötü niyetli veya istenmeyen eylemler gerçekleştirmesini önleyebilir. Bu aslında bir gözetim sistemidir. Bu tür sistemlerin sorunu, işletim sistemine derinlemesine yuvalanma ihtiyaçlarıdır. İşletim sistemi (CrowdStrike örneğinde: Microsoft Windows) zaten kendi koruma mekanizmasını getirmektedir.
Böyle bir ajan yazılımın sistem süreçlerine müdahale edebilmesi ve tüm işletim sistemini "denetleyebilmesi" için, güvenlik yazılımının kendisinin çok çeşitli dahili güvenlik mekanizmalarını atlaması ve etkisiz hale getirmesi gerekir. Bu durum birçok kişinin Antivirüs ve Uç Nokta Korumasının kendisinin bir güvenlik tehdidi olduğunu belirtmesine yol açmıştır. Blackhat Europe 2008'de Feng Xue tarafından hazırlanan "Antivirüse Saldırmak" başlıklı whitepaper'da bu konu ana hatlarıyla ele alınmıştı.
CrowdStrike milyonlarca sistemi nasıl mahvetti?
CrowdStrike, 19 Temmuz 2024 tarihinde saat 04:09 UTC'de (18 Temmuz 2024 tarihinde saat 09:09 civarında), uç nokta koruma aracı yazılımının bir "algılayıcısının" düzenli bir sürümünü gerçekleştirdi.
Bu "sensör", Windows'un derinliklerine kancalanması ve yuvalanması gerektiği için bir Windows aygıt sürücüsü biçiminde gelir. Sadece çok özel izinlere sahip aygıt sürücülerinin yapabileceği bir şey. Bu aygıt sürücüleri, tıpkı Windows'un kendi çekirdeği ve çekirdek kütüphaneleri (DLL'ler vb.) içinde olduğu gibi C ve C++ dillerinde yazılır.
"19 Temmuz 2024 tarihinde 04:09 UTC'de, devam eden network operasyonlarının bir parçası olarak CrowdStrike, Windows sistemleri için bir sensör yapılandırma güncellemesi yayınladı. Sensör yapılandırma güncellemeleri, Falcon platformunun koruma mekanizmalarının devam eden bir parçasıdır.
Bu yapılandırma güncellemesi, etkilenen sistemlerde sistem çökmesine ve mavi ekrana (BSOD) neden olan bir mantık hatasını tetikledi."
CrowdStrike Ağındaki Kesintiyle İlgili Teknik Analiz
Aygıt sürücüsü CrowdStrike aracı yazılımı tarafından Windows sürücülerinin bulunduğu C:\Windows\System32\drivers\CrowdStrike\ klasörüne C-00000291-*.sys gibi bir uhs blogu olarak yüklendi.
Bu güncellenmiş sürücü yüklendiğinde, var olmayan bir bellek adresine erişmeye çalıştı. Bu durum, bir uygulama var olmayan bir belleğe erişmeye çalıştığında ortaya çıkan bir sistem istisnası olan NullPointer Exception'a (NPE) neden oldu.
Null Pointer Exception'ın oluştuğu bölümün Hex dökümü(Yukarıdaki mavi ekran görüntü), sürücünün geçersiz belleğe erişmeye çalıştığı bölümü vurgulamaktadır. Genellikle, Windows bu tür sorunlara karşı söz konusu uygulamayı down ederek ve kullanıcıya çöktüğüne dair bir hata mesajı vererek kendini korur. Ancak, CrowdStrike sürücüsünün (onlar buna "sensör" diyor) Windows'un içine çok derin bir şekilde yerleşmiş olması ve Windows'un güvenlik önlemlerini de atlaması nedeniyle, 1994 yılına geri dönmüşüz gibi tüm işletim sistemini devre dışı bıraktı. Bu "sensör" yazıcılar, web kameraları, klavyelerle birlikte gelenler gibi sıradan bir aygıt sürücüsü değildir.
Bu kadar tehlikeli bir yazılım neden bu tür bellek hatalarını daha iyi önleyebilecek Rust veya Go gibi dillerde değil de C veya C++ ile yazılıyor?
Bu tür bir aracı yazılım için gereken Windows API'leri genellikle 3. taraflarca kullanılmak üzere tasarlanmamıştır.
Antivirüs, sistem ayarlama veya özelleştirme ve uç nokta koruma yazılımlarının ortak bir noktası vardır: genellikle belgelenmemiş ve desteklenmeyen, yalnızca çalışma zamanı sırasında doğrudan etkileşime girerek kullanılabilen Windows API'lerini kullanırlar - şu anda yalnızca C ve C ++ ile güvenli bir şekilde yapabileceğiniz bir şey (tabii ki Assembly dili de).
Windows Defender'ın "aygıt sürücülerine" ihtiyacı yoktur, Windows'un içine yerleştirilmiştir. Windows'un ilk günlerinden Windows XP'ye kadar, Windows 9x'teki aygıt sürücülerinin tüm işletim sistemini kızartması alışılmadık bir durum değildi. Antivirüs yazılımı, grafik kartı sürücüleri ve benzerleri, mavi ekranlara ve yasadışı bellek erişimiyle tam sistem arızalarına neden olmakla ünlüydü.
Microsoft'un Windows XP'de sunduğu ve Windows 10'da önemli ölçüde artırdığı koruma önlemleri sayesinde bu tür senaryoların çok nadir görülmesi gerekir.
Ayrıca Microsoft, Windows Defender ve Windows Güvenlik Duvarı'nı da yıllar önce kullanıma sunmuştur. Microsoft, güvenlik yazılımını işletim sistemine dahil ederek, güvenlik mekanizmasının kendisinin bir güvenlik tehdidi haline gelmemesini sağlamaktadır. Microsoft'un CrowdStrike ve SentinelOne'a kendi alternatifi olan Windows Defender, Windows'un temel bir bileşeni olduğu için tehlikeli aygıt sürücülerine ve diğer "hacky" uygulamalara güvenmek zorunda değildir. Güvenlik dünyasında her şey yolundaydı - ta ki o güne kadar.
Bu hata asla olmamalıydı…
Bu siber güvenlik için bir deja vu ve uç nokta koruma yazılımlarının 3. taraf satıcılarını zor durumda bırakıyor.
İş modelleri, Windows ve diğer işletim sistemlerine derinlemesine "yuvalanabilmelerine" veya "bağlanabilmelerine" dayanıyor. Bu da sadece işletim sistemi satıcısının güvenle yapabileceği bir şey. Böyle bir yazılımı Linux üzerinde güvenli bir şekilde çalıştırmak bile aynı derecede tehlikeli ve risklidir.
Kesintiler sürpriz değildi - hatta felaketin başlangıcıydı
CrowdStrike müşterilerine Windows için, Windows işletim sistemiyle tehlikeli bir şekilde etkileşime girdiği için kendi içinde zaten aşırı bir tehdit potansiyeline sahip olan bir yazılım sağlamıştır.
Muhtemelen böylesine tehlikeli bir yazılımı oluşturmak ve kullanıma sunmak için gerekli olan sıkı güvenlik önlemlerini de almamışlardır. Üstelik yazılımı bir Cuma günü gece yarısı kullanıma sunmaları da süprizi tetikleyen adım oldu
Bu küresel kesinti bir sürpriz değildi.
Bahsettiğim gibi yaşanan bu kriz, ne yazıkki felaketin başlangıcı oldu.
Kendinizi en iyi nasıl koruyabilirsiniz?
İşletim sisteminizin satıcısı tarafından sağlanan güvenlik araçlarını ve önlemlerini kullanın: Oyuncular belli Microsoft, Apple veya Linux. İşletim sistemine, özellikle de Windows'a derinlemesine yerleşen bir yazılımın kendisi bir güvenlik tehdididir. Bu nedenle, güvenlik sistemlerinin işletim sisteminin bir parçası olması gerekir.
Peki siz CrowdStrike olayından nerede ve nasıl etkilendiniz?