DetailPage-MSS-KB

기술 자료

기술 자료: 2661403 - 마지막 검토: 2012년 11월 29일 목요일 - 수정: 4.0

요약

Microsoft 보안 업데이트 MS11-100은 HTTP 요청에서 폼 키, 파일 및 JSON 멤버의 최대 수를 1000개로 제한합니다. 이러한 변경 내용 때문에 ASP.NET 응용 프로그램은 이러한 요소가 1000개를 넘을 경우 요청을 거부합니다. 이러한 종류의 요청을 수행하는 HTTP 클라이언트는 거부되며 웹 브라우저에서 오류 메시지가 나타납니다. 이 오류 메시지는 일반적으로 HTTP 500 상태 코드를 포함합니다. 이러한 새로운 제한은 응용 프로그램 단위로 구성될 수 있습니다. 구성 지침에 대해서는 "해결 방법" 절을 참조하십시오.


현상

많은 수의 폼 키, 파일 또는 JSON 페이로드가 있는 ASP.NET 요청이 수행되면 서버에서 오류 응답이 수신됩니다. 서버의 응용 프로그램 로그는 특정 버전의 ASP.NET이 소스인 경고 항목과 이벤트 ID 1309를 포함합니다. 이벤트 로그에는 다음 메시지 중 하나가 포함됩니다.


메시지 1:
응용 프로그램 정보:
응용 프로그램 도메인: /LM/W3SVC/1/ROOT/<App Domain>
신뢰 수준: 보통
응용 프로그램 가상 경로: <VDIR 경로>
응용 프로그램 경로: <응용 프로그램 경로>
시스템 이름: <시스템 이름>
프로세스 정보:
프로세스 ID: 0001
프로세스 이름: w3wp.exe
계정 이름: IIS APPPOOL\DefaultAppPool

예외 정보:
예외 유형: HttpException
예외 메시지: URL로 인코딩된 폼 데이터가 잘못되었습니다.
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


메시지 2:
응용 프로그램 정보:
응용 프로그램 도메인: /LM/W3SVC/1/ROOT/<App Domain>
신뢰 수준: 보통
응용 프로그램 가상 경로: <VDIR 경로>
응용 프로그램 경로: <응용 프로그램 경로>
시스템 이름: <시스템 이름>

프로세스 정보:
프로세스 ID: 0001
프로세스 이름: w3wp.exe
계정 이름: IIS APPPOOL\DefaultAppPool

예외 정보:
예외 유형: InvalidOperationException
예외 메시지: 개체의 현재 상태 때문에 작업이 유효하지 않습니다.
at System.Web.HttpRequest.FillInFilesCollection()
at System.Web.HttpRequest.get_Files()
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

메시지 3:
응용 프로그램 정보:
응용 프로그램 도메인: /LM/W3SVC/1/ROOT/<App Domain>
신뢰 수준: 보통
응용 프로그램 가상 경로: <VDIR 경로>
응용 프로그램 경로: <응용 프로그램 경로>
시스템 이름: <시스템 이름>

프로세스 정보:
프로세스 ID: 0001
프로세스 이름: w3wp.exe
계정 이름: IIS APPPOOL\DefaultAppPool

예외 정보:
예외 유형: InvalidOperationException
예외 메시지: 개체의 현재 상태 때문에 작업이 유효하지 않습니다.
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 serializer, String input, Type type, 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(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


IIS 로그 파일에는 다음과 유사한 항목이 표시됩니다.
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




원인

보안 공지 MS11-100에 나오는 Microsoft 보안 업데이트는 요청에서 ASP.NET이 수락하는 폼 키, 파일 및 JSON 멤버의 최대 기본 개수를 1,000으로 변경합니다. 이러한 변경은 Microsoft 보안 공지 MS11-100에 설명된 서비스 거부 취약성을 해결하기 위해 수행되었습니다.


해결 방법

폼 키 또는 파일에 대해 이러한 제한에 도달한 응용 프로그램은 ASP.NET 응용 프로그램 구성 파일에 표시된 것처럼 ASP.NET appSetting aspnet:MaxHttpCollectionKeys를 수정할 수 있습니다. 이 설정은 "현상" 절의 오류 메시지 1과 오류 메시지 2를 해결합니다.
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


참고 x86 기반 시스템에서 ASP.NET 1.1을 사용하는 경우 다음 레지스트리 키에 DWORD 값을 추가하여 이 설정을 조정합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
x64 기반 시스템에서 ASP.NET 1.1을 사용하는 경우 다음 레지스트리 키에 DWORD 값을 추가하여 이 설정을 조정합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys



JSON 페이로드에 대해 이러한 제한에 도달한 응용 프로그램은 ASP.NET 응용 프로그램 구성 파일에 표시된 것처럼 ASP.NET appSetting aspnet:MaxJsonDeserializerMembers를 수정할 수 있습니다. 이 설정은 "현상" 절의 오류 메시지 3을 해결합니다.
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



참고 기본 설정보다 크게 이 값을 늘리면 서버는 보안 공지 MS11-100에 설명된 서비스 거부 문제에 좀 더 취약해집니다.


참조

보안 공지 MS11-100에 대한 자세한 내용은 다음 TechNet 문서를 참조하십시오.
Microsoft 보안 공지 MS11-100 - 중요 (http://technet.microsoft.com/ko-kr/security/bulletin/ms11-100)
자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
2638420  (http://support.microsoft.com/kb/2638420/ko/ ) MS11-100: .NET Framework 취약성으로 인한 권한 상승 문제: 2011년 12월 29일

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 2.0 Service Pack 1 (x86)
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.0
  • Windows 7 Service Pack 1 을(를) 다음과 함께 사용했을 때
    • Windows 7 Enterprise
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows 7 Home Premium
    • Windows 7 Home Basic
  • Windows Server 2008 R2 Service Pack 1 을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 R2 Standard
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Windows Vista Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Starter
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
  • Microsoft Windows Server 2003 Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Service Pack 3 을(를) 다음과 함께 사용했을 때
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
키워드: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.