Özet
Microsoft güvenlik güncelleştirmesi MS11-100, bir HTTP isteğinde en fazla form anahtarı, dosya ve JSON üyesi sayısını 1000 ile sınırlar. Bu değişiklik nedeniyle, ASP.NET uygulamaları bu öğelerden 1000'den fazlasını içeren istekleri reddeder. Bu tür isteklerde bulunan HTTP istemcileri reddedilir ve web tarayıcısında bir hata iletisi gösterilir. Hata iletisi genellikle bir HTTP 500 durum kodu içerir. Bu yeni sınır, her uygulama için ayrı ayrı yapılandırılabilir. Yapılandırma talimatları için lütfen "Çözüm" bölümüne bakın.
Belirtiler
Çok sayıda form anahtarı, dosya veya JSON yükü olan ASP.NET istekler sunucudan bir hata yanıtı alır. Sunucudaki uygulama günlüğünde, Kaynağı belirli bir ASP.NET sürümü olan bir Uyarı girdisi ve 1309 Olay Kimliği var. Olay günlüğü aşağıdaki iletilerden birini içerir:
1. İleti:
Not
Uygulama Bilgileri:
Uygulama etki alanı: /LM/W3SVC/1/ROOT/<App Etki Alanı>
Güven düzeyi: Orta
Uygulama Sanal Yolu: <VDIR Yolu>
Uygulama Yolu: <Uygulama Yolu>
Makine adı: <Makine Adı>
Proses bilgileri:
İşlem Kimliği: 0001
İşlem adı: w3wp.exe
Hesap adı: IIS APPPOOL\DefaultAppPool
Özel durum bilgileri:
Özel durum türü: HttpException
Özel durum iletisi: URL ile kodlanmış form verileri geçerli değil.
at System.Web.HttpRequest.FillInFormCollection()
System.Web.HttpRequest.get_Form() konumunda
System.Web.HttpRequest.get_HasForm() konumunda
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boole includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Mesaj 2:
Not
Uygulama Bilgileri:
Uygulama etki alanı: /LM/W3SVC/1/ROOT/<App Etki Alanı>
Güven düzeyi: Orta
Uygulama Sanal Yolu: <VDIR Yolu>
Uygulama Yolu: <Uygulama Yolu>
Makine adı: <Makine Adı>
Proses bilgileri:
İşlem Kimliği: 0001
İşlem adı: w3wp.exe
Hesap adı: IIS APPPOOL\DefaultAppPool
Özel durum bilgileri:
Özel durum türü: InvalidOperationException
Özel durum iletisi: Nesnenin geçerli durumu nedeniyle işlem geçerli değil.
at System.Web.HttpRequest.FillInFilesCollection()
System.Web.HttpRequest.get_Files() konumunda
at FileUpload.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint
Mesaj 3:
Not
Uygulama Bilgileri:
Uygulama etki alanı: /LM/W3SVC/1/ROOT/<App Etki Alanı>
Güven düzeyi: Orta
Uygulama Sanal Yolu: <VDIR Yolu>
Uygulama Yolu: <Uygulama Yolu>
Makine adı: <Makine Adı>
Proses bilgileri:
İşlem Kimliği: 0001
İşlem adı: w3wp.exe
Hesap adı: IIS APPPOOL\DefaultAppPool
Özel durum bilgileri:
Özel durum türü: InvalidOperationException
Özel durum iletisi: Nesnenin geçerli durumu nedeniyle işlem geçerli değil.
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serileştirici, Dize girişi, Tür türü, Int32 depthLimit)
at System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
at Failing.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boole includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
IIS günlük dosyasında aşağıdakine benzer bir girdi gösterilir:
2011-01-01 00:00:00 ::1 POST /makine/default.aspx - 80 - ::1 - 500 0 0 187
Neden
MS11-100 güvenlik bülteninin ele aldığı Microsoft güvenlik güncelleştirmesi, ASP.NET bir istekte kabul edeceği varsayılan form anahtarı, dosya ve JSON üyesi sayısı üst sınırını 1.000 olarak değiştirir. Bu değişiklik, Microsoft güvenlik bülteni MS11-100 belgelerinde yer alan Hizmet Reddi güvenlik açığını gidermek için yapılmıştır.
Çözüm
Form anahtarları veya dosyalar için bu sınıra ulaşan uygulamalar, aşağıda bir ASP.NET uygulamasının yapılandırma dosyasında gösterildiği gibi appSetting aspnet:MaxHttpCollectionKeys ASP.NET değiştirebilir. Bu ayar, "Belirtiler" bölümündeki hata iletisi 1 ve hata iletisi 2 ile giderilir.
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>
Not
x86 tabanlı bir sistemde ASP.NET 1.1 kullanıyorsanız, aşağıdaki kayıt defteri anahtarına bir DWORD değeri eklenerek ayar değiştirilir:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
x64 tabanlı bir sistemde ASP.NET 1.1 kullanıyorsanız, aşağıdaki kayıt defteri anahtarına bir DWORD değeri eklenerek ayar değiştirilir:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
JSON yükleri için bu sınıra ulaşan uygulamalar, aşağıda bir ASP.NET uygulamasının yapılandırma dosyasında gösterildiği gibi appSetting aspnet:MaxJsonDeserializerMembers ASP.NET değiştirebilir. Bu ayar, "Belirtiler" bölümündeki hata iletisi 3'ü giderir.
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>
Not Bu değeri varsayılan ayarın üzerine çıkarmak, sunucunuzun MS11-100 güvenlik bülteninde açıklanan Hizmet Reddi güvenlik açığına duyarlılığını artırır.
Başvurular
Güvenlik bülteni MS11-100 hakkında daha fazla bilgi için, aşağıdaki TechNet makalesine bakın:
Microsoft Güvenlik Bülteni MS11-100 - Kritik Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2638420 MS11-100: .NET Framework'teki güvenlik açığı ayrıcalıkların yükseltilmesine izin verebilir: 29 Aralık 2011