Elevation of Privilege (Ayrıcalık Yükseltme)
Ayrıcalıkların yükseltilmesi, bir saldırgana başlangıçta verilenlerin ötesinde yetkilendirme izinleri vermenin sonucudur. Örneğin, "salt okunur" izinlerine sahip bir saldırgan, kümeyi bir şekilde "okuma ve yazma" içerecek şekilde yükseltir.
Güvenilen STS SAML Belirteci Taleplerini İmzalamalıdır
Güvenlik Onayları Biçimlendirme Dili (SAML) belirteci, verilen belirteçler için varsayılan tür olan genel bir XML belirtecidir. SAML belirteci, son Web hizmetinin tipik bir değişimde güvendiği bir Güvenlik Belirteci Hizmeti (STS) tarafından oluşturulabilir. SAML belirteçleri deyimlerde talepler içerir. Saldırgan, talepleri geçerli bir belirteçten kopyalayabilir, yeni bir SAML belirteci oluşturabilir ve farklı bir verenle imzalayabilir. Amaç, sunucunun verenleri doğrulayıp doğrulamadığını belirlemek ve değilse, güvenilir bir STS tarafından hedeflenenlerin ötesinde ayrıcalıklara izin veren SAML belirteçleri oluşturmak için zayıflığı kullanmaktır.
sınıfı SamlAssertion bir SAML belirtecinin içinde yer alan dijital imzayı doğrular ve varsayılan olarakSamlSecurityTokenAuthenticator, SAML belirteçlerinin sınıfı olarak ayarlandığında ChainTrustgeçerli CertificateValidationModeIssuedTokenServiceCredential olan bir X.509 sertifikası tarafından imzalanması gerekir. ChainTrust
modu, SAML belirtecinin verenine güvenilip güvenilmediğini belirlemek için yeterli değildir. Daha ayrıntılı bir güven modeli gerektiren hizmetler, verilen belirteç kimlik doğrulaması tarafından oluşturulan talep kümelerini vereni denetlemek için yetkilendirme ve zorlama ilkeleri kullanabilir veya izin verilen imzalama sertifikaları kümesini kısıtlamak için üzerinde X.509 doğrulama ayarlarını IssuedTokenServiceCredential kullanabilir. Daha fazla bilgi için bkz . Kimlik Modeli ve Federasyon ve Verilen Belirteçlerle Beyanları ve Yetkilendirmeyi Yönetme.
Güvenlik Bağlamı Olmadan Kimlik Değiştirme
Aşağıdakiler yalnızca WinFX için geçerlidir.
bir istemci ile sunucu arasında bir bağlantı kurulduğunda, istemcinin kimliği tek bir durum dışında değişmez: WCF istemcisi açıldıktan sonra, aşağıdaki koşulların tümü doğruysa:
Güvenlik bağlamı oluşturma yordamları (aktarım güvenlik oturumu veya ileti güvenlik oturumu kullanılarak) kapatılır (EstablishSecurityContext ileti güvenliği veya aktarım güvenlik oturumları oluşturabilen aktarım durumunda özelliği olarak ayarlanır
false
) aktarım güvenliği durumunda kullanılır. HTTPS, bu tür aktarımların bir örneğidir).Windows kimlik doğrulaması kullanıyorsunuz.
Kimlik bilgilerini açıkça ayarlamazsınız.
Kimliğine bürünülen güvenlik bağlamı altında hizmeti çağırıyorsunuz.
Bu koşullar doğruysa, WCF istemcisi açıldıktan sonra istemcinin hizmette kimliğini doğrulamak için kullanılan kimlik değişebilir (kimliğine bürünülen kimlik değil, bunun yerine işlem kimliği olabilir). Bunun nedeni, hizmette istemcinin kimliğini doğrulamak için kullanılan Windows kimlik bilgilerinin her iletiyle iletilmesi ve kimlik doğrulaması için kullanılan kimlik bilgilerinin geçerli iş parçacığının Windows kimliğinden alınmasıdır. Geçerli iş parçacığının Windows kimliği değişirse (örneğin, farklı bir çağıranın kimliğine bürünerek), iletiye eklenen ve hizmette istemcinin kimliğini doğrulamak için kullanılan kimlik bilgisi de değişebilir.
Windows kimlik doğrulamasını kimliğe bürünmeyle birlikte kullanırken belirleyici bir davranışa sahip olmak istiyorsanız Windows kimlik bilgilerini açıkça ayarlamanız veya hizmetle bir güvenlik bağlamı oluşturmanız gerekir. Bunu yapmak için ileti güvenlik oturumu veya aktarım güvenliği oturumu kullanın. Örneğin, net.tcp aktarım bir aktarım güvenlik oturumu sağlayabilir. Ayrıca, hizmeti çağırırken istemci işlemlerinin yalnızca zaman uyumlu bir sürümünü kullanmanız gerekir. İleti güvenlik bağlamı oluşturursanız, hizmet bağlantısını yapılandırılan oturum yenileme süresinden daha uzun süre açık tutmamalısınız, çünkü kimlik oturum yenileme işlemi sırasında da değişebilir.
Kimlik Bilgileri Yakalama
Aşağıdakiler .NET Framework 3.5 ve sonraki sürümler için geçerlidir.
İstemci veya hizmet tarafından kullanılan kimlik bilgileri geçerli bağlam iş parçacığını temel alır. kimlik bilgileri, istemcinin Open
veya hizmetin yöntemi (veya BeginOpen
zaman uyumsuz çağrılar için ) çağrıldığında elde edilir. hem hem de ServiceHost sınıfları için ve ClientBase<TChannel>BeginOpen
yöntemleri sınıfının Open
ve BeginOpen yöntemlerinden Open devralırCommunicationObject.
Not
yöntemi kullanılırken BeginOpen
, yakalanan kimlik bilgilerinin yöntemini çağıran işlemin kimlik bilgileri olduğu garanti edilemez.
Belirteç Önbellekleri Eski Verileri Kullanarak Yeniden Yürütmeye İzin Verir
WCF, kullanıcıların kimliğini kullanıcı adı ve parolayla doğrulamak için yerel güvenlik yetkilisi (LSA) LogonUser
işlevini kullanır. Oturum açma işlevi maliyetli bir işlem olduğundan WCF, performansı artırmak için kimliği doğrulanmış kullanıcıları temsil eden belirteçleri önbelleğe almanızı sağlar. Önbelleğe alma mekanizması, sonuçları LogonUser
sonraki kullanımlar için kaydeder. Bu mekanizma varsayılan olarak devre dışıdır; özelliğini olarak ayarlayın CacheLogonTokens veya userNameAuthentication> özniteliğini< kullanıncacheLogonTokens
.true
Özelliğini TimeSpanolarak ayarlayarak CachedLogonTokenLifetime önbelleğe alınan belirteçler için Yaşam Süresi (TTL) ayarlayabilir veya öğesinin cachedLogonTokenLifetime
userNameAuthentication
özniteliğini kullanabilirsiniz; varsayılan değer 15 dakikadır. Bir belirteç önbelleğe alınırken, kullanıcı hesabı Windows'tan silinmiş olsa veya parolası değiştirilmiş olsa bile, aynı kullanıcı adı ve parolayı sunan tüm istemciler belirteci kullanabilir. TTL'nin süresi dolana ve belirteç önbellekten kaldırılana kadar, WCF (büyük olasılıkla kötü amaçlı) kullanıcının kimlik doğrulaması yapmasına izin verir.
Bunu azaltmak için: Değeri kullanıcılarınızın ihtiyaç duyduğu en kısa süreye ayarlayarak cachedLogonTokenLifetime
saldırı penceresini azaltın.
Verilen Belirteç Yetkilendirmesi: Süre Sonu Büyük Değere Sıfırlama
Belirli koşullar altında, ExpirationTime özelliğinin AuthorizationContext özelliği beklenmedik şekilde daha büyük bir değere ( MaxValue alan değeri bir gün eksi veya 20 Aralık 9999) ayarlanabilir.
Bu, istemci kimlik bilgisi türü olarak verilen bir belirtece sahip olan ve sistem tarafından sağlanan bağlamalardan herhangi biri kullanılırken WSFederationHttpBinding oluşur.
Bu durum, aşağıdaki yöntemlerden birini kullanarak özel bağlamalar oluşturduğunuzda da oluşur:
Bunu azaltmak için yetkilendirme ilkesinin eylemi ve her yetkilendirme ilkesinin sona erme süresini denetlemesi gerekir.
Hizmet, hedeflenen istemciden farklı bir sertifika kullanıyor
Belirli koşullar altında, istemci X.509 sertifikasıyla iletiyi dijital olarak imzalayabilir ve hizmetin hedeflenen sertifikadan farklı bir sertifika almasını sağlayabilir.
Bu, aşağıdaki koşullarda oluşabilir:
İstemci bir X.509 sertifikası kullanarak iletiyi dijital olarak imzalar ve iletiye X.509 sertifikasını eklemez, bunun yerine yalnızca konu anahtarı tanımlayıcısını kullanarak sertifikaya başvurur.
Hizmetin bilgisayarı aynı ortak anahtara sahip iki veya daha fazla sertifika içerir, ancak farklı bilgiler içerir.
Hizmet, konu anahtarı tanımlayıcısı ile eşleşen bir sertifika alır, ancak istemcinin kullanmayı amaçladığı sertifika değildir. WCF iletiyi aldığında ve imzayı doğruladığında, WCF istenmeyen X.509 sertifikasındaki bilgileri farklı ve istemcinin beklediğinden yükseltilmiş bir dizi taleple eşler.
Bunu azaltmak için, X.509 sertifikasına kullanmak IssuerSerialgibi başka bir yolla başvurun.