10 Yıllık Güvenlik Açığı Halen Etkili: Dosya Doğrulama Kusurları Nasıl Düzeltilir?

10 yıllık bir Windows açığı, yürütülebilir dosyaların yasal olarak imzalanmış gibi görünmesini sağlamak için halen çeşitli kötü amaçlı amaçlarla kullanılıyor. Microsoft geçmişte bu güvenlik açıkları için bazı yamalar hazırlamıştı ancak tehlike halen bitmiş değil.

İşin kötüsü, Windows 10 işletim sistemine sahip bir bilgisayar Windows 11’e yükseltme yapıldığında bu düzeltmeler otomatik olarak kaldırılıyor. VoIP iletişim şirketi 3CX, kısa bir süre öncesinde Windows masaüstü uygulamasının trojanlaştırılmış versiyonlarını dağıtmak üzere geniş çaplı bir tedarik zinciri saldırısına maruz kaldı. Bu saldırıda Windows masaüstü uygulaması tarafından kullanılan iki DLL’nin değiştirildiği, bilgisayardan bilgi toplayan bir trojan gibi ek kötü amaçlı yazılımlar indirildiği belirtiliyor.


Değiştirilmiş DLL, geçerli bir imzaya sahip olarak görülüyor.

Saldırıda kullanılan kötü amaçlı DLL’lerden biri de Microsoft tarafından imzalanmış, meşru bir dosya gibi görünen “d3dcompiler_47.dll” dosyası. Ancak kötü amaçlı kişiler DLL’yi dosyanın sonuna şifrelenmiş kötü amaçlı veriler içerecek şekilde değiştirmiş. Kötü senaryoya gelince, dosya değiştirilmiş olsa da Windows dosyayı Microsoft tarafından doğru şekilde imzalanmış olarak gösteriyor.

DLL veya EXE dosyası gibi bir yürütülebilir dosya eğer imzalanmış ise, Windows kullanıcıları bu dosyanın gerçek olduğunu, kötü amaçlı kod içerecek şekilde değiştirilmediğini düşünür. En azından bu imza onayı kullanıcıya güvence vermek içindir.

İmzalı bir yürütülebilir dosya değiştirildiğinde, Windows “nesnenin dijital imzasının doğrulanmadığını” belirten bir mesaj görüntülemekte. Ancak güvenlik açıklarının kullanıldığı sırada “d3dcompiler_47.dll” isimli dosya değiştirilmiş olmasına rağmen Windows’ta hala “imzalı” olarak gösteriliyordu.

ANALYGENCE’ta kıdemli bir güvenlik açığı analisti olan Will Dormann ile DLL dosyası paylaşıldı. Sonrasında ise DLL’nin bir CVE-2013-3900 etiketiyle bilinen WinVerifyTrust İmza Doğrulama Güvenlik Açığı’ndan (WinVerifyTrust Signature Validation Vulnerability) yararlandığı bildirildi.

Microsoft bu zafiyeti ilk olarak 10 Aralık 2013 tarihinde açıklamıştı. Yazılım devi, açığın imzalı bir yürütülebilir dosyada EXE’nin imza doğrulama bölümüne (WIN_CERTIFICATE yapısı) içerik eklenmesine (imzayı geçersiz kılmadan) imkan tanıdığını söyledi.

Örneğin Dormann attığı tweetlerde Google Chrome yükleyicisinin Authenticode (kimlik doğrulama) yapısına veri ekleyerek “Google’a kullanım istatistikleri ve çökme raporları göndermeyi” tercih edip etmediğinizi belirlediğini açıkladı. Google Chrome yüklendiğinde, tanılama raporlarının etkinleştirilip etkinleştirilmeyeceğini belirlemek için authenticode imzasını bu veriler için kontrol etmekte.

Microsoft, muhtemelen bir yürütülebilir dosyanın imza bloğunda veri depolayan meşru, imzalı yürütülebilir dosyaları geçersiz kılacağı için düzeltmeyi isteğe bağlı hale getirmeye karar verdi. 10 Aralık 2013 tarihinde desteklenen tüm Windows sürümleri için “Windows Authenticode” imza formatıyla imzalanmış ikili dosyalar için imzaların doğrulanma şeklini değiştiren bir güncelleme yayınlandı:

Etkinleştirildiğinde, Windows Authenticode imza doğrulaması için yeni eylem artık WIN_CERTIFICATE yapısında gereksiz bilgilere izin vermeyecek ve Windows artık uyumlu olmayan ikili dosyaları imzalanmış olarak tanımayacaktır.

Aradan on yıla yakın bir süre geçti ve güvenlik açığının çok sayıda tehdit aktörü tarafından istismar edildiği biliniyor. Yine de, yalnızca Windows Kayıt Defteri üzerinden düzenleme yaparak düzeltmeyi etkinleştirmek mümkün.

Düzeltmeyi etkinleştirmek için 64 bit sistemlerde aşağıdaki Kayıt Defteri değişikliklerini yapabilirsiniz:

  • Arama bölümüne Kayıt Defteri yazın ve Kayıt Defteri Düzenleyicisi’ni açın.
  • Sırasıyla “HKEY_LOCAL_MACHINESoftwareMicrosoftCryptographyWintrustConfig” yolunu izleyin. Sonrasında “EnableCertPaddingCheck” isimli girdinin değerini “1” olarak ayarlayın.
  • Ayrıca “HKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftCryptographyWintrustConfig” yolunu izleyin ve “EnableCertPaddingCheck” isimli kaydı “1” olarak ayarlayın.

Bu Kayıt Defteri anahtarları etkinleştirildiğinde, tedarik zinciri saldırısında kullanılan kötü amaçlı d3dcompiler_47.dll DLL’sindeki imzayı ne kadar farklı doğruladığını görebilirsiniz; sol tarafta kötü amaçlı DLL, imzalı önek olarak görünüyor. Sağ tarafta ise düzeltmeden sonra imzasız olarak (dijital imzalar sekmesi de kayıp) görünüyor.

Daha da kötüsü, bu işlemleri yapsanız bile Windows 11’e yükseltme yaptığınızda her şey otomatik olarak kaldırılıyor ve cihaz tekrar savunmasız hale geliyor. Güvenlik açığı, 3CX tedarik zinciri ve Ocak ayındaki Zloader kötü amaçlı yazılım dağıtım kampanyası gibi farklı saldırılarda kullanıldı. Yani eski tarihlerde keşfedilmiş olsa bile düzeltilmesinde fayda var.

Ne yazık ki çoğu kişi bu açıktan haberdar değil ve dosyayı kontrol etseniz bile imzalı olduğu için güvenilir olduğunu düşünebilirsiniz. Dormann, “Bir düzeltme isteğe bağlı olduğunda, kitleler korunmayacaktır.” diye uyarıyor.

Bu işlem sonrasında Google Chrome gibi bazı yükleyicilerin imzalı olarak gösterilmediği söyleniyor. Ancak kötü sonuçlara yol açmasındansa ek koruma için aktif etmekte fayda var.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir