Dün (19.07.2024) yaşanan CrowdStrike olayı ile birçok sistem hizmet veremez hale geldi. Bu nedenle de normal yaşantıda ciddi aksamalar yaşandı. Sizlere, bazı yabancı kaynaklardan edindiğim bu sorunun kök nedenine dair bulguları paylaşmak istedim. Olayı ardındaki sistem hatası ve bunun bellek erişim sorunlarıyla nasıl ilişkili olduğunu inceleyelim. Bildiğiniz üzere olayımız, Crowdstrike’ın yayınladığı bir güncelleme sonrasında güncellemeyi alan sistemlerde meydana geliyor ve oldukça ilginç bir teknik arka plana sahip.
Crowdstrike’ın yayınladığı güncelleme, sistem sürücüsünde bir bellek erişim ihlali hatası oluşturmuş. Bu hata, bilgisayarın geçersiz bir bellek adresine erişmeye çalıştığını ve bu nedenle programın sonlandırıldığını gösteriyor. Hata raporunda, özellikle 0x000000000000009c adresine erişim girişimi yapılmış ve bu adres geçersiz olduğu için sistem hemen bu işlemi durdurmuş. Bu tür bir bellek erişim hataları, Mavi Ekran hatası (BSOD) olarak da bilinir ve sistemin çökmesine neden olmaktadır.
C++ programlama dili, bellek yönetiminde dikkatli olunması gereken bir dildir. Bu dilde, 0x0 adresi (NULL) özel bir anlam taşır ve “burada bir şey yok” demektir. Eğer bir programcı, bir nesnenin geçerli olup olmadığını kontrol etmeden bu adrese erişmeye çalışırsa, program hemen çöker.
Bu olayda da, sistem sürücüsünde NULL pointer hatası meydana gelmiş. Bu hata, bellek adresi 0x9c’ye (insan diliyle 156) erişim girişimi yaparken meydana gelmiş ve bu geçersiz bellek bölgesine erişim, programın hemen sonlandırılmasına yol açmış. Bu nedenle sistem çökmüş ve Mavi Ekran hatası ortaya çıkmış.
Bu tür hataların önüne geçmek için yapılan öneriler şunlardır:
- NULL Pointer Kontrolleri: Programcıların, nesneler üzerinde işlem yapmadan önce mutlaka NULL pointer kontrolü yapmaları gereklidir.
- Modern Araçlar Kullanımı: Bellek erişim hatalarını otomatik olarak tespit edebilen modern kod analiz araçları kullanılmalıdır.
- Dil Değişikliği: C++ yerine bellek güvenliğini daha iyi yöneten Rust gibi modern programlama dilleri tercih edilmelidir. Rust, NULL pointer hatalarını derleme aşamasında tespit eder ve bu tür hataların üretime geçmesini engeller.
Sonuç olarak;
Bu olay, bellek erişim ihlallerinin ve NULL pointer hatalarının ne kadar ciddi sonuçlar doğurabileceğini göstermektedir. Bu nedenle yaşanan sorunları en aza indirgemek adına Bilgi Güvenliği süreçlerini (özellikle de değişiklik yönetimi sürecini) uygulamak en önemli ve değerli önlemlerin başında gelir. Güvenlik ve sistem kararlılığı açısından, modern programlama dillerine ve gelişmiş kod analiz araçlarına geçiş, bu tür hataların önüne geçmek için diğer bir önemli adımdır.
Microsoft ve Crowdstrike gibi büyük firmaların bu konuda alacağı önlemler, kullanıcıların daha güvenli bir deneyim yaşamasını sağlayacaktır. Umarım bu tip olaylar tekrar yaşanmaz zira, hizmet kesintisi olarak gördüğümüz bu olay insan hayatlarını olumsuz yönde etkileyen ve cana bile mâl olabilecek olaylarla sonuçlanabilir.
Bilgilerinize.
CrowdStrike Vaka Analizi: Sistem Hatası ve Bellek Erişim Problemi