참고로 취약점의 위험도는 중요(Important)로 분류되고 있습니다.
http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx
끝.
===================== 원문 (2보) ====================
마이크로소프트는 9월 28일 오전 10시(PDT 기준) 경에 ASP.NET에 관련된 취약점을 해결하기 위한 긴급 보안 패치를 공개하기로 하였습니다.
출처: http://blogs.technet.com/b/msrc/archive/2010/09/27/out-of-band-release-to-address-microsoft-security-advisory-2416728.aspx
===================== 원문 (2보) ====================
마이크로소프트는 9월 24일에 ASP.NET 취약점을 차단할 수 있는 보안 업데이트를 개발하고 있는 중이며, 다만 이 문제점을 보완할 수 있는 대안을 추가적으로 발표했습니다.
대안으로는 URLScan 이라고 하는 IIS에 관련된 ISAPI 필터 프로그램을 이용하는 것입니다. 참, 무료입니다.
주의: URLScan의 최신 버전은 3.1 이며 이는 IIS v5.1+에서만 동작합니다. 따라서, 하위 IIS에서 이용하기 위해서는 URLScan 2.5 나 3.0을 이용해야 할 수도 있으므로 정확히 확인하신 후에 사용하시기 바랍니다.
URLScan을 설치하고 나서 환경 설정 파일에서 아래와 같이 섹션 및 문장을 추가합니다.
[DenyQueryStringSequence]
aspxerrorpath=
aspxerrorpath=
보다 자세한 사항은 아래 링크를 참고하십시오.
출처: http://weblogs.asp.net/scottgu/archive/2010/09/24/update-on-asp-net-vulnerability.aspx
끝.
===================== 원문 (1보) ====================
마이크로소프트는 윈도우 운영체제에서 웹서비스의 일부분으로 제공하는 ASP.NET의 취약점에 대한 사항을 정리하여 공개했습니다.
이 취약점은 Microsoft Security Advisory (2416728) 또는 CVE-2010-3332 로 이름붙여진 상태입니다.
이 취약점은 .NET FrameWork가 지원되는 IIS 버전에서 발생하며, 윈도우 XP/Vista/7과 같은 클라이언트 운영체제 뿐만 아니라 Windows 2003/2008/2008R2에서도 문제가 있습니다. 다만 Windows 2000 운영체제에서는 문제가 발생하지 않습니다.
이 취약점을 통해 웹서버에서 암호화되어 전송되는 View State(__VIEWSTATE)와 같은 데이터를 공격자가 알아 낼 수 있습니다. 또한, 웹 서버에 저장된 파일 - 예를 들어 ASP.NET의 환경 설정 파일인 web.conifg - 을 읽을 수 있습니다.

이렇게 암호화된 데이터를 예상하여 알아내는 기술을 패딩 오라클(padding oracle) 기법이라고 하며, 최근에 이에 대한 뉴스가 잠시 나온 적이 있어 ASP.NET에 관련된 무언가에 대한 문제점이 있다는 추측이 나오기도 했습니다.
현재까지 이 취약점을 이용하여 공격하는 코드가 출현했다는 보고는 들어오고 있지 않지만, 나타날 가능성도 배제할 수는 없습니다.
마이크로소프트는 이 문제점을 해결하기 위해 조사를 진행 중에 있으며, 대안으로는 오류 페이지를 하나로 통일하여 보여 주는 방식이 유일한 것으로 알려져 있습니다.
아래 코드는 web.config 파일과 C#으로 작성된 ErrorPage.aspx 예제입니다.
<configuration>
<location allowOverride="false">
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/ErrorPage.aspx" />
</system.web>
</location>
</configuration>
<location allowOverride="false">
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/ErrorPage.aspx" />
</system.web>
</location>
</configuration>
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
void Page_Load() {
byte[] delay = new byte[1];
RandomNumberGenerator prng = new RNGCryptoServiceProvider();
prng.GetBytes(delay);
Thread.Sleep((int)delay[0]);
IDisposable disposable = prng as IDisposable;
if (disposable != null) { disposable.Dispose(); }
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>
An error occurred while processing your request.
</div>
</body>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
void Page_Load() {
byte[] delay = new byte[1];
RandomNumberGenerator prng = new RNGCryptoServiceProvider();
prng.GetBytes(delay);
Thread.Sleep((int)delay[0]);
IDisposable disposable = prng as IDisposable;
if (disposable != null) { disposable.Dispose(); }
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>
An error occurred while processing your request.
</div>
</body>
보다 자세한 자료는 MS의 기술 자료를 참고하십시오.
https://www.microsoft.com/technet/security/advisory/2416728.mspx
이 취약점에 대한 공격코드가 아직 나타나지 않은 점에 대해 안도해야 할 수도 있을 것입니다. 만약, 공격코드가 있다면 전세계 수백, 수천만대의 웹서버가 위험에 처해질 수도 있는 매우 광범위하게 피해를 입힐 수 있는 문제점이기 때문입니다.
감사합니다.
2010년 9월 20일자로 마이크로소프트는 해당 취약점을 통해 제한적이지만 실제적으로 공격이 가능하다는 연구 결과를 발표했습니다.