Aracılığıyla paylaş


Platform kodu bütünlüğü

Microsoft Azure gibi karmaşık bir sistemin çalıştırılmasında karşılaşılan önemli bir zorluk, sistemde yalnızca yetkili yazılımların çalıştığından emin olmaktır. Yetkisiz yazılım, herhangi bir işletme için çeşitli riskler sunar:

  • Özel saldırı araçları, özel kötü amaçlı yazılımlar ve bilinen güvenlik açıklarına sahip üçüncü taraf yazılımları gibi güvenlik riskleri
  • Onaylanan değişiklik yönetimi süreci yeni yazılım getirmek için kullanılmadığında uyumluluk riskleri
  • İşletmenin operasyonel gereksinimlerini karşılamayabilecek, harici olarak geliştirilmiş yazılımlardan kalite riski

Azure'da da aynı zorlukla ve önemli karmaşıklıklarla karşı karşıyayız. Binlerce mühendisin geliştirdiği ve bakımını yaptığı yazılımları çalıştıran binlerce sunucumuz var. Bu, tek başına iş süreçleriyle yönetilemeyen büyük bir saldırı yüzeyi sunar.

Yetkilendirme kapısı ekleme

Azure, dağıttığımız yazılımın güvenliği, uyumluluğu ve kalitesine yönelik geçitler uygulayan zengin bir mühendislik süreci kullanır. Bu işlem kaynak koduna erişim denetimini, eş kod incelemelerini yürütmeyi, güvenlik açıkları için statik analiz yapmayı, Microsoft'un Güvenlik Geliştirme Yaşam Döngüsü'ne (SDL) uymayı ve işlevsel ve kalite testlerini yürütmeyi içerir. Dağıttığımız yazılımın bu süreçte aktığını garanti etmemiz gerekir. Kod bütünlüğü bu garantiyi elde etmemize yardımcı olur.

Yetkilendirme kapısı olarak kod bütünlüğü

Kod bütünlüğü, Windows Server 2016'den başlayarak kullanılabilir hale gelen bir çekirdek düzeyi hizmetidir. Bir sürücü veya dinamik olarak bağlı kitaplık (DLL) yüklendiğinde, yürütülebilir bir ikili dosya yürütildiğinde veya bir betik çalıştırıldığında kod bütünlüğü katı bir yürütme denetimi ilkesi uygulayabilir. Linux için DM-Verity gibi benzer sistemler mevcuttur. Kod bütünlüğü ilkesi, bir ikili veya betik yüklemeden veya yürütmeden önce çekirdeğin eşleştiği kod imzalama sertifikaları veya SHA256 dosya karmaları gibi bir dizi yetkilendirme göstergesinden oluşur.

Kod Bütünlüğü, sistem yöneticisinin yalnızca belirli sertifikalar tarafından imzalanmış ikili dosyaları ve betikleri yetkilendirerek veya belirtilen SHA256 karmalarıyla eşleşen bir ilke tanımlamasına olanak tanır. Çekirdek, ayarlanan ilkeye uymayan her şeyin yürütülmesini engelleyerek bu ilkeyi zorlar.

Kod bütünlüğü ilkesiyle ilgili bir sorun, ilke mükemmel bir şekilde doğru olmadığı sürece üretimdeki kritik yazılımları engelleyip kesintiye neden olabilmesidir. Bu endişe göz önüne alındığında, yetkisiz yazılımların ne zaman yürütüldiğini algılamak için güvenlik izlemeyi kullanmanın neden yeterli olmadığını sorabilir. Kod bütünlüğü, yürütmeyi engellemek yerine yetkisiz yazılım çalıştırıldığında uyarı verebilen bir denetim moduna sahiptir. Uyarı, uyumluluk risklerini ele alma konusunda çok fazla değer katabilir, ancak fidye yazılımı veya özel kötü amaçlı yazılım gibi güvenlik riskleri için yanıtı birkaç saniye bile geciktirme, koruma ile filonuzda kalıcı bir dayanak elde eden bir saldırgan arasındaki fark olabilir. Azure'da, müşterinin kesintiyi etkilemesine neden olan kod bütünlüğü riskini yönetmek için önemli ölçüde yatırım yaptık.

Derleme işlemi

Yukarıda açıklandığı gibi Azure derleme sistemi, yazılım değişikliklerinin güvenli ve uyumlu olduğundan emin olmak için zengin bir test kümesine sahiptir. Derleme doğrulama işleminden geçtikten sonra, derleme sistemi bunu bir Azure derleme sertifikası kullanarak imzalar. Sertifika, derlemenin tüm değişiklik yönetimi işleminden geçtiğini gösterir. Derlemenin geçtiği son test Kod İmzası Doğrulaması (CSV) olarak adlandırılır. CSV, üretime dağıtmadan önce yeni oluşturulan ikili dosyaların kod bütünlüğü ilkesini karşıladığını onaylar. Bu, yanlış imzalanan ikili dosyalar nedeniyle bir müşterinin kesintiyi etkilemeyeceğinden büyük bir güven verir. CSV bir sorun bulursa, derleme bozulur ve sorunu araştırmak ve düzeltmek için ilgili mühendisler çağrılır.

Dağıtım sırasında güvenlik

Her derleme için CSV gerçekleştirsek de, üretimdeki bir değişiklik veya tutarsızlık, kod bütünlüğüyle ilgili bir kesintiye neden olabilir. Örneğin, bir makine kod bütünlüğü ilkesinin eski bir sürümünü çalıştırıyor olabilir veya kod bütünlüğünde hatalı pozitifler üreten iyi durumda olmayabilir. (Azure ölçeğinde hepsini gördük.) Bu nedenle, dağıtım sırasında kesinti riskine karşı korunmaya devam etmemiz gerekir.

Azure'daki tüm değişikliklerin bir dizi aşama üzerinden dağıtılması gerekir. Bunlardan ilki iç Azure test örnekleridir. Sonraki aşama yalnızca diğer Microsoft ürün ekiplerine hizmet vermek için kullanılır. Son aşama üçüncü taraf müşterilere hizmet eder. Bir değişiklik dağıtıldığında, sırayla bu aşamaların her birine taşınır ve aşamanın durumunu ölçmek için duraklar. Değişikliğin olumsuz bir etkisi olmadığı tespit edilirse bir sonraki aşamaya geçer. Kod bütünlüğü ilkesinde hatalı bir değişiklik yaptığımızda, bu aşamalı dağıtım sırasında değişiklik algılanır ve geri alınır.

Olay yanıtı

Bu katmanlı koruma ile bile, filodaki bazı sunucuların düzgün şekilde yetkilendirilmiş yazılımları engellemesi ve müşterinin karşılaştığı bir soruna neden olması mümkündür. Bu, en kötü durum senaryolarımızdan biridir. Son savunma katmanımız insan soruşturması. Kod bütünlüğü bir dosyayı her engellediğinden, aramadaki mühendislerin incelemesi için bir uyarı oluşturur. Uyarı, sorunun gerçek bir saldırının göstergesi mi, hatalı pozitif mi yoksa müşteriyi etkileyen başka bir durum mu olduğuyla ilgili güvenlik araştırmaları başlatmamıza ve müdahale etmemize olanak tanır. Bu, kod bütünlüğüyle ilgili sorunları azaltmak için gereken süreyi en aza indirir.

Sonraki adımlar

Windows 10'ın yapılandırılabilir kod bütünlüğünü nasıl kullandığını öğrenin.

Platform bütünlüğünü ve güvenliğini sağlamak için neler yaptığımız hakkında daha fazla bilgi edinmek için bkz: