WPF Güvenlik Stratejisi - Platform Güvenliği

Windows Presentation Foundation (WPF) çeşitli güvenlik hizmetleri sağlar, ancak işletim sistemi, CLR ve işletim sistemi gibi temel alınan platformun güvenlik özelliklerinden de Internet Explorer. Bu katmanlar, WPF'ye aşağıdaki şekilde gösterildiği gibi tek hata noktalarından kaçınmaya çalışan güçlü, derinlemesine savunma güvenlik modeli sağlamak için bir araya gelir:

Diagram that shows the WPF security model.

Bu konunun geri kalanında, bu katmanların her biri özel olarak WPF ile ilgili özellikler açıklanmıştır.

İşletim Sistemi Güvenliği

Bu Windows, WPF ile yerleşik olanlar da dahil olmak üzere tüm Windows için güvenlik temelini sağlayan çeşitli güvenlik özellikleri sağlar. Bu konu başlığında, WPF için önemli olan güvenlik özelliklerinin yanı sıra WPF'nin daha ayrıntılı bir savunma sağlamak için onlarla nasıl tümleştirildikleri açıklanmıştır.

Microsoft Windows XP Service Pack 2 (SP2)

Genel bir gözden geçirme ve Windows, bu konu başlığında ele atayacağız Windows XP SP2'den üç temel özellik vardır:

  • /GS derlemesi

  • Microsoft Windows Update.

/GS Derlemesi

Windows XP SP2, arabellek taşmalarını azaltmaya yardımcı olmak için CLR gibi tüm WPF bağımlılıkları da dahil olmak üzere birçok çekirdek sistem kitaplığını yeniden derlemek tarafından koruma sağlar. Bu, C/C++ komut satırı derleyicisi ile /GS parametresi kullanılarak elde edilir. Arabellek taşmalarından açıkça kaçınılmalıdır, ancak /GS derlemesi yanlışlıkla veya kötü amaçlı olarak oluşturulan olası güvenlik açıklarına karşı derinlemesine savunma örneği sağlar.

Geçmişte arabellek taşması, çok sayıda yüksek etkili güvenlik açığından neden oldu. Arabellek taşması, bir saldırgan bir arabellek sınırlarını aşarak kötü amaçlı kod eklemeye olanak sağlayan bir kod güvenlik açığından yararlanıyorsa gerçekleşir. Bu daha sonra bir saldırganın, bir işlevin dönüş adresinin üzerine yazarak kodun yürütülmekte olduğu işlemi ele geçirerek saldırganın kodunu yürütmesini sağlar. Sonuç, ele geçen işlemle aynı ayrıcalıklara sahip rastgele kod yürüten kötü amaçlı koddur.

-GS derleyici bayrağı, yerel dize arabelleklerine sahip bir işlevin dönüş adresini korumak için özel bir güvenlik tanımlama bilgisi eklemeyle bazı olası arabellek taşmalarına karşı koruma sağlar. İşlev döndürdikten sonra güvenlik tanımlama bilgisi önceki değeriyle karşılaştırıldı. Değer değişti ise arabellek taşması meydana geldi ve işlem bir hata koşuluyla durduruldu. sürecin durdurulması kötü amaçlı olabilecek kodun yürütülmesini önler. Daha fazla bilgi için bkz. -GS (Arabellek Güvenlik Denetimi).

WPF, WPF uygulamalarına başka bir savunma katmanı eklemek için /GS bayrağıyla derlenmiş.

Windows Vista

Windows Vista'da WPF kullanıcıları işletim sisteminin "En Az Ayrıcalıklı Kullanıcı Erişimi", kod bütünlüğü denetimleri ve ayrıcalık yalıtımı gibi ek güvenlik geliştirmelerinden yararlanabilecek.

Kullanıcı Hesabı Denetimi (UAC)

Günümüzde, Windows çoğu uygulama yükleme veya yürütme ya da her ikisi için gerekli olduğundan yönetici ayrıcalıklarıyla çalışma eğilimindedir. Varsayılan uygulama ayarlarını Kayıt Defteri'ne yazamıyor olmak bir örnektir.

Yönetici ayrıcalıklarıyla çalıştırma, uygulamaların yönetici ayrıcalıkları verilen işlemlerden yürütülebilir olduğu anlamına gelir. Bunun güvenlik etkisi, yönetici ayrıcalıklarıyla çalışan bir işlemi ele geçiren herhangi bir kötü amaçlı kodun kritik sistem kaynaklarına erişim de dahil olmak üzere bu ayrıcalıkları otomatik olarak devralmasıdır.

Bu güvenlik tehdidine karşı korumanın bir yolu, gerekli olan en az miktarda ayrıcalıkla uygulamaları çalıştırmaktır. Bu, en az ayrıcalık ilkesi olarak bilinir ve işletim sisteminin temel Windows özelliktir. Bu özellik Kullanıcı Hesabı Denetimi (UAC) olarak adlandırılan ve UAC Windows iki temel şekilde kullanılır:

  • Kullanıcı yönetici olsa bile çoğu uygulamanın varsayılan olarak UAC ayrıcalıklarıyla çalışması için; yalnızca yönetici ayrıcalıklarına ihtiyacı olan uygulamalar yönetici ayrıcalıklarıyla çalışır. Yönetim ayrıcalıklarıyla çalıştırmak için uygulamaların uygulama bildirimlerinde veya güvenlik ilkesinde bir giriş olarak açıkça işaretlerinin olması gerekir.

  • Sanallaştırma gibi uyumluluk çözümleri sağlamak için. Örneğin, birçok uygulama C:\Program Files gibi kısıtlı konumlara yazmayı dener. UAC altında yürütülen uygulamalar için, yazma yönetici ayrıcalıkları gerektirmeyen kullanıcı başına alternatif bir konum vardır. UAC altında çalışan uygulamalar için UAC, C:\Program Files'ı sanallaştırarak yazmalarını isteyen uygulamaların alternatif kullanıcı başına konuma yazmalarını sağlar. Bu tür bir uyumluluk çalışması, işletim sisteminin daha önce UAC'de çalıştırılana kadar birçok uygulama çalıştırmalarını sağlar.

Kod Bütünlüğü Denetimleri

Windows Vista, kötü amaçlı kodun yükleme/çalışma zamanında sistem dosyalarına veya çekirdek içine dahil edimsini önlemeye yardımcı olmak için daha derin kod bütünlüğü denetimleri içerir. Bu, sistem dosya korumasının ötesine geçmektedir.

Browser-Hosted Uygulamaları için Sınırlı Hak İşlemleri

Tarayıcıda barındırılan WPF uygulamaları, İnternet bölgesi korumalı alanı içinde yürütülür. Microsoft Internet Explorer WPF tümleştirmesi, bu korumayı ek destekle genişlettir.

XAML tarayıcı uygulamaları (XBAP'ler) genellikle İnternet bölgesi izin kümesi tarafından korumalı alanlara sahip olduğu için, bu ayrıcalıkların kaldırılması uyumluluk açısından XAML tarayıcı uygulamalarına (XBAP)zarar vermez. Bunun yerine ek bir derinlemesine savunma katmanı oluşturulur; Korumalı alan kullanan bir uygulama diğer katmanlardan yararlanıp işlemi ele geçirene kadar yalnızca sınırlı ayrıcalıklara sahip olur.

Bkz. Least-Privileged Hesabı Kullanma.

Ortak Dil Çalışma Zamanı Güvenliği

Ortak dil çalışma zamanı (CLR), doğrulama ve doğrulama, Kod Erişim Güvenliği (CAS) ve Güvenlik Açısından Kritik Metodoloji gibi birçok önemli güvenlik avantajları sunar.

Doğrulama ve Doğrulama

ClR, derleme yalıtımı ve bütünlüğü sağlamak için bir doğrulama işlemi kullanır. CLR doğrulaması, derlemenin dışındaki adresler için Taşınabilir Yürütülebilir (PE) dosya biçimlerini doğrular ve derlemelerin yalıtılmış olduğundan emin olur. CLR doğrulaması, bir derlemenin içine eklenmiş meta verilerin bütünlüğünü de doğrular.

Tür güvenliğini sağlamak, yaygın güvenlik sorunlarını önlemeye yardımcı olmak (arabellek taşması gibi) ve alt işlem yalıtımı aracılığıyla korumalı alan kullanımına olanak sağlamak için, CLR güvenliği doğrulama kavramını kullanır.

Yönetilen uygulamalar Microsoft Ara Dili'ne (MSIL) derlenmiş. Yönetilen bir uygulamanın yöntemleri yürütülürken, MSIL'i Tam Zamanında (JIT) derlemesi aracılığıyla yerel koda derlenmiş olur. JIT derlemesi, kodun şunların yapılmaması için birçok güvenlik ve sağlamlık kuralı uygulanan bir doğrulama işlemi içerir:

  • Tür sözleşmelerini ihlal

  • Arabellek taşmalarını tanıtma

  • Belleğe büyük erişim.

Doğrulama kurallarına uymayan yönetilen kodun, güvenilir kod olarak kabul edilene kadar yürütmesine izin verilmez.

Doğrulanabilir kodun avantajı, WPF'nin doğrulanabilir kod üzerinde derleme .NET Framework. Doğrulanabilir kodun kullanıla kadar olası güvenlik açıklarından yararlanma olasılığı büyük ölçüde düşürülür.

Kod Erişimi Güvenliği

İstemci makinesi, yönetilen bir uygulamanın dosya sistemi, Kayıt Defteri, yazdırma hizmetleri, kullanıcı arabirimi, yansıma ve ortam değişkenleri dahil olmak üzere erişimi olan çok çeşitli kaynakları ortaya çıkarır. Yönetilen bir uygulamanın istemci makinede yer alan kaynaklara erişemeden önce bu .NET Framework izinlerine sahip olması gerekir. CAS'de izin, bir alt CodeAccessPermission sınıfıdır; CAS, yönetilen uygulamaların erişebilirsiniz her kaynak için bir alt sınıf uygulanır.

Yönetilen bir uygulamanın CAS tarafından yürütülmaya başladığında verilen izin kümesi, izin kümesi olarak bilinir ve uygulama tarafından sağlanan kanıtlarla belirlenir. WPF uygulamaları için sağlanan kanıt, uygulamaların başlatıldı olduğu konum veya bölgedir. CAS aşağıdaki bölgeleri tanımlar:

  • Bilgisayarım. İstemci makineden başlatılan uygulamalar (Tam Güvenilir).

  • Yerel İntranet. İntranetten başlatılan uygulamalar. (Biraz Güvenilir).

  • İnternet . İnternet'den başlatılan uygulamalar. (En Az Güvenilen).

  • Güvenilen Siteler. Bir kullanıcı tarafından güvenilen uygulamalar. (En Az Güvenilen).

  • Güvenilmeyen Siteler. Bir kullanıcı tarafından güvenilmeyen uygulamalar. (Güvenilmeyen).

Cas, bu bölgelerin her biri için, her biri ile ilişkili güven düzeyiyle eşleşen izinleri içeren önceden tanımlanmış bir izin kümesi sağlar. Bu modüller şunlardır:

  • FullTrust. Bilgisayarım bölgesinden başlatılan uygulamalar için. Tüm olası izinler verildi.

  • LocalIntranet. Yerel İntranet bölgesinden başlatılan uygulamalar için. Yalıtılmış depolama, sınırsız kullanıcı arabirimi erişimi, sınırsız dosya iletişim kutuları, sınırlı yansıma, ortam değişkenlerine sınırlı erişim dahil olmak üzere istemci makine kaynaklarına orta düzeyde erişim sağlamak için izinlerin bir alt kümesine izinler sağlanmıştır. Kayıt Defteri gibi kritik kaynaklar için izinler sağlanmaz.

  • İnternet . İnternet veya Güvenilen Siteler bölgesindenbaşlatılan uygulamalar için. Yalıtılmış depolama, yalnızca dosya açma ve sınırlı kullanıcı arabirimi dahil olmak üzere bir istemci makinenin kaynaklarına sınırlı erişim sağlamak için bir izin alt kümesi verilmiştir. Temelde, bu izin kümesi, uygulamaları istemci makineden ayırır.

Güvenilmeyen siteler bölgesinde olduğu şekilde tanımlanan uygulamalara, CA 'lar tarafından hiçbir izin verilmez. Sonuç olarak, önceden tanımlanmış bir izin kümesi onlar için mevcut değildir.

Aşağıdaki şekilde bölgeler, izin kümeleri, izinler ve kaynaklar arasındaki ilişki gösterilmektedir:

Diagram that shows CAS permission sets.

Internet bölgesi güvenlik sanal alanının kısıtlamaları, bir XBAP 'nin WPF dahil bir sistem kitaplığından içeri aktardığı herhangi bir koda eşit olarak uygulanır. Bu, kodun her bitini, hatta WPF 'in kilitli olmasını sağlar. Ne yazık ki, yürütebilmek için, bir XBAP 'nin Internet bölgesi güvenlik korumalı alanı tarafından etkinleştirilenden daha fazla izin gerektiren işlevselliği yürütmesi gerekir.

Aşağıdaki sayfayı içeren bir XBAP uygulaması düşünün:

FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();

// Perform operation that uses the assert

// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();
Dim fp As New FileIOPermission(PermissionState.Unrestricted)
fp.Assert()

' Perform operation that uses the assert

' Revert the assert when operation is completed
CodeAccessPermission.RevertAssert()

Bu XBAP 'yi yürütmek için, temel alınan WPF kodu, çağıran XBAP tarafından kullanılabilir olandan daha fazla işlevsellik yürütmelidir, örneğin:

  • İşleme için pencere tutamacı (HWND) oluşturma

  • İletileri dağıtma

  • Tahoma yazı tipi yükleniyor

Bir güvenlik noktasından, korumalı uygulamadan bu işlemlerden herhangi birine doğrudan erişim verilmesi çok zararlı olabilir.

Neyse ki, bu işlemlerin korumalı bir uygulama adına yükseltilmiş ayrıcalıklarla yürütülmesine izin vererek WPF bu duruma göre yapılır. Tüm WPF işlemleri, XBAP 'nin uygulama etki alanının sınırlı Internet bölgesi güvenlik izinlerine karşı denetlenirken, WPF (diğer sistem kitaplıklarında olduğu gibi) tüm olası izinleri içeren bir izin kümesi verilir.

Bunun yapılması, bu ayrıcalıkların konak uygulama etki alanının Internet bölgesi izin kümesi tarafından yönetilmesini engellerken, WPF 'nin yükseltilmiş ayrıcalıklar almasını gerektirir.

WPF bunu bir iznin onaylama yöntemini kullanarak yapar. Aşağıdaki kod bunun nasıl gerçekleştiğini gösterir.

FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();

// Perform operation that uses the assert

// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();
Dim fp As New FileIOPermission(PermissionState.Unrestricted)
fp.Assert()

' Perform operation that uses the assert

' Revert the assert when operation is completed
CodeAccessPermission.RevertAssert()

Bu onay, WPF 'ın, XBAP 'nin Internet bölgesi izinleriyle kısıtlanması için gereken sınırsız izinleri önler.

WPF, bir platform perspektifinden doğru onay kullanmaktan sorumludur; Hatalı bir onaylama kullanımı, kötü amaçlı kodun ayrıcalıkların yükseltilmesini sağlayabilir. Sonuç olarak, yalnızca gerektiğinde onay çağrısı yapmak ve korumalı alan kısıtlamalarının bozulmadan kalmasını sağlamak önemlidir. Örneğin, korumalı kodun rastgele dosyaları açmasına izin verilmez, ancak yazı tiplerini kullanmasına izin verilir. WPF , korumalıuygulamaların onay çağırarak yazı tipi işlevselliğini kullanmasına ve bu yazı tiplerini korumalı uygulama adına içerdiği bilinen dosyaları okumasına olanak sağlar.

ClickOnce dağıtımı

ClickOnce, .NET Framework dahil edilen ve Visual Studio ile tümleşen kapsamlı bir dağıtım teknolojisidir (ayrıntılı bilgi için bkz. ClickOnce güvenlik ve dağıtıma dağıtım ). tek başına WPF uygulamaları ClickOnce kullanılarak dağıtılabilir, tarayıcıda barındırılan uygulamalar ClickOnce birlikte dağıtılmalıdır.

ClickOnce kullanılarak dağıtılan uygulamalara, kod erişim güvenliği (CAS) üzerinden ek bir güvenlik katmanı verilir; temelde, ClickOnce dağıtılan uygulamalar gereksinim duydukları izinleri ister. Yalnızca uygulamanın dağıtıldığı bölge için izin kümesini aşmazsa, bu izinlere izin verilir. İzin kümesini, başlatma bölgesinin izin kümesi tarafından sağlananlardan daha az olsalar bile yalnızca gerekli olanlarla azaltarak, uygulamanın erişimi olan kaynak sayısı en az bir değer olacak şekilde azaltılır. Sonuç olarak, uygulama ele geçirilmiş ise, istemci makinesine zarar verme olasılığı azalır.

Security-Critical yöntemi

XBAP uygulamaları için Internet bölgesi korumalı alanını etkinleştirmek üzere izinleri kullanan WPF kodu, en yüksek düzeyde güvenlik denetimi ve denetimi için tutulmalıdır. bu gereksinimi kolaylaştırmak için .NET Framework, ayrıcalıkları destekleyen kodu yönetmek için yeni destek sağlar. CLR, ayrıcalıkları destekleyen kodu tanımlamanızı ve ile işaretlemenizi sağlar SecurityCriticalAttribute ; işaretli olmayan herhangi bir kod SecurityCriticalAttribute Bu metodolojisi kullanılarak SecurityCriticalAttribute hale gelir. Buna karşılık, ile işaretlenmemiş yönetilen kodun SecurityCriticalAttribute ayrıcalık yükseltme işlemi engellenir.

Security-Critical metodolojisi, ayrıcalıkları korunan WPF kodu kuruluşunun, geri kalan saydam olan güvenlik açısından kritik çekirdeğeerişmesini sağlar. Güvenlik açısından kritik kodu yalıtmak, WPF Mühendisliği ekibinin yukarıdaki güvenlik açısından kritik çekirdekte ve standart güvenlik uygulamalarının ötesinde ek bir güvenlik çözümlemesi ve kaynak denetimi odağa (bkz. WPF güvenlik stratejisi-güvenlik mühendisliği).

.NET Framework, geliştiricilerin AllowPartiallyTrustedCallersAttribute (aptca) ile işaretlenmiş ve kullanıcının genel derleme önbelleği 'ne (GAC) dağıtılan yönetilen derlemeler yazmasına izin vererek, güvenilen kodun XBAP ınternet bölgesi sanal alanını genişletmesine izin verdiğini unutmayın. Derlemeyi APTCA ile işaretlemek, Internet 'ten gelen kötü amaçlı kod dahil olmak üzere herhangi bir kodun bu derlemeyi çağırmasını olanaklı olduğundan, yüksek oranda duyarlı bir güvenlik işlemidir. Bu işlem sırasında çok dikkatli ve en iyi uygulamalar kullanılmalıdır ve kullanıcıların yüklenebilmesi için bu yazılıma güvenmeyi seçmesi gerekir.

Microsoft Internet Explorer güvenliği

Güvenlik sorunlarını azalttıktan ve güvenlik yapılandırmasını basitleştirerek, Microsoft Internet Explorer 6 (SP2), XAML tarayıcı uygulamaları (XBAP) kullanıcılarına yönelik güvenlik geliştirmelerinden oluşan çeşitli özellikler içerir. Bu özelliklerin bu özellikleri, kullanıcıların gözatma deneyimi üzerinde daha fazla denetime izin vermeyi dener.

IE6 SP2 'den önce, kullanıcılar aşağıdakilerden birine tabi olabilir:

  • Rastgele açılan pencereler.

  • Kafa karıştırıcı betiği yeniden yönlendirme.

  • Bazı web sitelerinde çok sayıda güvenlik iletişim kutusu.

bazı durumlarda, güvenilir olmayan Web siteleri, kullanıcı tarafından iptal edilmiş olsa bile yükleme kullanıcı arabirimi (uı) veya sürekli olarak bir Microsoft ActiveX yükleme iletişim kutusu göstererek kullanıcıları aldatmaya çalışır. Bu teknikleri kullanarak, casus yazılım uygulamalarının yüklenmesiyle sonuçlanan kötü kararlar almaya çok sayıda kullanıcı daha karmaşık bir şekilde ele alınmış olabilir.

IE6 SP2, bu tür sorunları hafifletmek için Kullanıcı başlatma kavramını kapsayan çeşitli özellikler içerir. IE6 SP2, bir Kullanıcı başlatmaolarak bilinen bir eylemden önce bir bağlantı veya sayfa öğesine tıkladığını algılar ve bir sayfada betik tarafından bunun yerine benzer bir eylem olduğu gibi davranır. Örnek olarak, ıE6 SP2 bir kullanıcının açılır pencere oluşturmadan önce bir düğmeye tıkladığını algılayan bir açılır pencere engelleyicisi içerir. Bu, ıE6 SP2'NIN çoğu zararsız açılır pencerelere izin vermesini sağlar, ancak kullanıcıların veya istediği açılan pencereleri önler. Engellenen açılır pencereler, kullanıcının engellemeyi el ile geçersiz kılmasını ve açılır pencereyi görüntülemesini sağlayan yeni bilgi çubuğualtında yakalanmalıdır.

Aynı Kullanıcı başlatma mantığı Ayrıca, Güvenlikkaydetme komut istemlerini aç ' a uygulanır. ActiveX yükleme iletişim kutuları, daha önce yüklenmiş bir denetimden bir yükseltmeyi temsil etmediği takdirde, her zaman bilgi çubuğu altında yakalanırlar. Bu ölçümler kullanıcılara daha güvenli, daha denetimli bir kullanıcı deneyimi sağlamak için birleşerek, istenmeyen veya kötü amaçlı yazılım yüklemeleri için bunları tacler eden sitelere karşı koruma sağlar.

Bu özellikler ayrıca, ıE6 SP2 kullanan müşterileri, WPF uygulamalarını indirip yüklemelerine izin veren Web sitelerine gözatmaya karşı korur. Bunun nedeni, ıE6 SP2'NIN, WPF dahil olmak üzere hangi teknolojinin kullanıldığı bağımsız olarak kötü amaçlı veya en yüksek uygulamalar yükleyebilme olasılığını azaltan daha iyi bir kullanıcı deneyimi sunmasıdır. WPF, uygulamalarını ınternet üzerinden indirmeyi kolaylaştırmak için ClickOnce kullanarak bu korumaların sonuna ekler. XAML tarayıcı uygulamaları (XBAP) bir Internet bölgesi güvenlik korumalı alanı içinde yürütülmesinden, sorunsuz bir şekilde başlatılabilir. Öte yandan, tek başına WPF uygulamaları yürütmek için tam güven gerektirir. bu uygulamalar için ClickOnce, uygulamanın ek güvenlik gereksinimlerinin kullanımını bildirmek üzere başlatma işlemi sırasında bir güvenlik iletişim kutusu görüntüler. Ancak, bu kullanıcı tarafından başlatılmış olması gerekir ve Kullanıcı tarafından başlatılan mantığa göre yönetilir ve iptal edilebilir.

Internet Explorer 7, güvenlik çabalarının bir parçası olarak ıE6 SP2'NIN güvenlik yeteneklerini içerir ve genişletir.

Ayrıca bkz.