[Actualización 28/09/2010] FINAL
Actualización de seguridad Microsoft Security Bulletin MS10-070 – Important Asi que a descargar…. Primeramente mediante Microsoft Download Center (forma manual), o puedes (si quieres) esperar unos días y estará entre nosotros por Windows Update /Windows Server Update Service.
[Actualización 24/09/2010]
Se actualizo la solución provisoria en el aviso de seguridad Microsoft Security Advisory (2416728) para agregar un filtro mas de “protección” para este caso especifico que lee los mensajes de error de nuestra aplicación. La idea es implementar el filtro de URL para no permitir peticiones con “aspxerrorpath=” en el IIS, aquí podremos utilizar Request Filtering o URLScan (leer mas abajo la Tarea 2)
[Actualización 21/09/2010]
Doy enlace a un post de Sergio Tarrillo donde da un timeline de los últimos días y un ejemplo de aplicar la solución provisional: Reciente vulnerabilidad de ASP.NET y BlogEngine.Net
[Actualización 20/09/2010]
Doy enlace al post de Alberto Diaz donde aplica la solución provisional en SP 2010: SharePoint 2010. Vulnerabilidad 0 days de ASP.NET.
Donde en los comentarios nos da el enlace al blog de Sharepoint: Security Advisory 2416728 (Vulnerability in ASP.NET) and SharePoint.
[Actualización 19/09/2010]
Doy enlace a un post de David Salgado donde da su punto de vista (el cual comparto): El 0 day de asp.net… modo de evitarlo? y referencias
Mas de uno ya se habrá enterado pero ayer se presento en una conferencia esta vulnerabilidad (ekoparty), yo por mi parte lo encontré por un comentario de un amigo en el trabajo cuando hace dos días me envió un articulo, así que lo venia siguiendo.
- Noticia: Uno de cada cuatro sitios web está expuesto a ciberataques (Clarín – Argentina)
… donde se comentaba que en la conferencia se dará a conocer “recién” la vulnerabilidad de ASP.NET
http://www.clarin.com/internet/cuatros-sitios-web-expuesto-ciberataques_0_335966623.html
Que me llevo ver los resultados de la Conferencia de Seguridad ekoparty http://www.ekoparty.org/ que presentaron el tema
- Padding Oracles Everywhere (por Juliano Rizzo y Thai Duong)
La vulnerabilidad fue publicada luego de presentarse:
- Security Advisory 2416728 Released
http://blogs.technet.com/b/msrc/archive/2010/09/17/security-advisory-2416728-released.aspx - Vulnerability in ASP.NET Could Allow Information Disclosure
http://www.microsoft.com/technet/security/advisory/2416728.mspx
Y como lo comenta Scott Guthrie… , It’s important (el tiene su blog mas información). También publicó unas preguntas frecuentes
Cuando se publica la vulnerabilidad tenemos unas “soluciones de compromiso/provisionales” y también unas herramientas para que los responsables de infraestructura pueda escudriñar los sitios del IIS de un server y detectar posibles configuraciones débiles
Problema
Ayer a la tarde en la conferencia se expuso una vulnerabilidad de ASP.NET para todas las versiones de ASP.NET(desde la 1.1 a la 4.0) para todos los sistemas operativos:
“Un atacante que aprovechara esta vulnerabilidad podría ver los datos, como el estado de vista, que fue cifrado por el servidor de destino, o leer datos de archivos en el servidor de destino, como el web.config…”
Como hablamos con Lautaro, si el web.config encima tiene datos sensibles (acuérdense que se puede encriptar la cadena de conexión) estamos en graves problemas.
Mas Técnico:
- Security Advisory 2416728 Released
- Vulnerability in ASP.NET Could Allow Information Disclosure
- Understanding the ASP.NET Vulnerability
- Frequently Asked Questions about the ASP.NET Security Vulnerability
Solución (provisional)
[Actualización 28/09/2010] FINAL
Ya esta la solución final (un parche de seguridad) leer aquí Microsoft Security Bulletin MS10-070 – Important
No es necesario aplicar las “soluciones provisionales” una vez aplicado la solución final
A las horas… se publicó “la contra oferta”, (para salir del paso como se diría) básicamente es:
“Habilitar los errores ASP.NET personalizado y mapear todos los códigos de error a la misma pagina de error”
Pero también utilizar una página de error “con un poco de código” (miren el enlace de Secuity Advisor) donde establece un timeout
Dos tareas a realizar “provisionalmente” para nuestra protección [Actualización 24/09/2010]
- [En la App Web] Habilitar los errores ASP.NET personalizado y mapear todos los códigos de error a la misma pagina de error (independientemente del error detectado)
- [En el Servidor IIS] Bloqueo de los request que especifican la ruta de error. Es decir no permitir “aspxerrorpath=” en el querystring
La solución final se desplegara mediante Windows Update, así que a estar atentos. Cuando vea la luz la solución final, estos “filtros de protección” ya no lo debemos aplicar.
TAREA 1: Habilitar los errores ASP.NET personalizado y mapear todos los códigos de error a la misma pagina de error
Ejemplos:
- ASP.NET 3.5 o anterior…
<location allowOverride="false"> <system.web> <customErrors mode="On" defaultRedirect="~/error.html" /> </system.web> </location>
- En ASP.NET 3.5 SP1 o superior (NET 4.0)
<location allowOverride="false"> <system.web> <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/ErrorPage.aspx" /> </system.web> </location>Como comenta Scott en su blog, también es recomendable un “delay” en la pagina de error
Ejemplo:
<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>
TAREA 2: Bloqueo de los request que especifican la ruta de error (aspxerrorpath)
Aquí tenemos dos alternativas,
- A) Característica de Request Filtering (Filtro de solicitudes) IIS 7
- B) URLScan (versión 3.1)
Opcion A) Request filtering
Si estamos en Windows Vista Service Pack 2, Windows Server 2008 Service Pack 2, Windows 7, Windows Server 2008 R2.
Podremos utilizar un característica del IIS 7 Request Filtering
Windows 7 Windows 2008 Activando una característica…
Agregando un rol…
Una vez instalado debemos ir a denegar: aspxerrorpath=
Por linea de comando utilizando AppCmd
appcmd set config /section:requestfiltering /+denyQueryStringSequences.[sequence=’aspxerrorpath=’]
Opcion B) URLScan
Aqui utilizaremos URLScan para filtrar las peticiones en nuestros IIS (versiones 5.1/6/7)
Hay que modificar la el archivo UrlScan.ini (%windir%system32inetsrvurlscan) y en la linea bajo [DenyQueryStringSequences] agregar:
aspxerrorpath=Nos quedaría:
[DenyQueryStringSequences]
aspxerrorpath=
Herramienta (Script) para detectar las aplicaciones vulnerables
Para comenzar a fixear, ejecute la herramienta (es un script) que nos informa en un servidor ”las web con la vulnerabilidad a flor de pecho”, que los responsables de infraestructura pueden ejecutar en un server y verificar todas las web del IIS.
Espero que les sirva de ayuda o guía,… o a modo informativo.
Enlaces
- Microsoft Security Bulletin MS10-070 – Important | Vulnerability in ASP.NET Could Allow Information Disclosure (2418042)
http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx - Security Advisory 2416728 Released
http://blogs.technet.com/b/msrc/archive/2010/09/17/security-advisory-2416728-released.aspx - Vulnerability in ASP.NET Could Allow Information Disclosure
http://www.microsoft.com/technet/security/advisory/2416728.mspx - Understanding the ASP.NET Vulnerability
http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx - Scott Guthrie’s blog
- Important: ASP.NET Security Vulnerability (by Scott Guthrie)
http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx - Update on ASP.NET Vulnerability
http://weblogs.asp.net/scottgu/archive/2010/09/24/update-on-asp-net-vulnerability.aspx - Frequently Asked Questions about the ASP.NET Security Vulnerability
http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx
- Important: ASP.NET Security Vulnerability (by Scott Guthrie)
Importante aviso!, Scott Guthrie da el aviso en su blog, sobre una falla de seguridad detectada en todas
Vamos a listar las noticias en orden cronológico, para intentar entender la vulnerabilidad: Miercoles