Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

요약

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 - 중요 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.

2638420 MS11-100: .NET Framework 취약성으로 인한 권한 상승 문제: 2011년 12월 29일

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×