viernes, 18 de marzo de 2011

Vulnerabilidad en la seguridad de las aplicaciones ASP.NET

Hoy en día el tópico de la seguridad es muy discutido, es importare el saber que al desarrollar una aplicación y sobre todo una web las aplicaciones pueden ser un punto importare de entrada para aquellas personas que de forma mail intencionada o "ética" intentan vulnerar los sistemas.Y como siempre descuidos del hombre son los mas fáciles de encontrar. Pues bien navegando en la red buscando las funciones de unas clases me tope con la advertencia de esta vulnerabilidad la cual es fácil de resarcir y no presenta mucha dificultad. y de alguna forma es responsabilidad de nosotros como programadores el tomarla en cuenta.

¿De qué forma impacta es ta vulnerabilidad?

ASP .NET utiliza el cifrado para ocultar datos confidenciales y proteger a los mismos de manipulación por parte del cliente. Solo existe un problema en la implementacion del cifrado permite al atacante descifrar y manipular los datos.

Pero, ¿qué puede hacer el atacante con esta capacidad? Parte de la respuesta depende de la aplicación ASP.Net ala cual se va atacadar. Por ejemplo, si la aplicación ASP.Net almacena información confidencial, como contraseñas o cadenas de conexión de base de datos, en el objeto ViewState estos datos podrían verse comprometidos. El objeto ViewState se cifra y se envía al cliente en una variable de formulario oculto, por lo que es un posible objetivo de este ataque.


       Si la aplicación ASP.Net utiliza ASP.Net 3.5 SP1 o posterior, el atacante podría utilizar esta vulnerabilidad de cifrado para solicitar el contenido de un archivo arbitrario dentro de la aplicación ASP.Net. La revelación pública demostrado mediante esta técnica para recuperar el contenido de web.config. Cualquier archivo en la aplicación ASP.Net que este ejecutando el proceso de trabajo si se tiene acceso se devolverán al atacante.

Como funciona esta Vulnerabilidad

` Para entender cómo funciona esta vulnerabilidad, necesita saber acerca de los oráculos criptográficos. Un oráculo en el contexto de la criptografía es un sistema que proporciona sugerencias a medida que se le hacen preguntas. En este caso, existe una vulnerabilidad en ASP.Net que actúa como un oráculo de relleno. Esto permite a un atacante enviar el texto cifrado elegido al servidor y aprender si se descifra correctamente examinando qué código de error fue devuelta por el servidor. Haciendo muchas peticiones, el atacante puede aprender lo suficiente como para correctamente descifrar el resto del texto cifrado. El atacante puede alterar el texto sin formato y cifrarlo.

Como solucionar esta Vulnerabilidad

Una solución que puede utilizar para evitar esta vulnerabilidad es para activar la función CustomErrors de ASP.NET, y explícitamente configurar sus aplicaciones para volver siempre la misma página de error - sin importar el error encontrado en el servidor. Mediante el mapeo de todas las páginas de error a una sola página de error , esto impide que un hacker pueda distinguir entre los diferentes tipos de errores que se producen en el servidor.
El ejemplo que se describe a continuacion pretende como solucionar la vulnerabilidad existente en las Aplicaciones ASP.NET o para tener mas informacion acerca de como funciona esta vulnerablidad.
Si está utilizando ASP.NET 3.5 o ASP.NET 4.0, entonces debería seguir los siguientes pasos para habilitar CustomErrors y mapear todos los errores a una sola página de error.
  1. Editar el archivo de su aplicación ASP.NET raíz Web.config. Si el archivo no existe, crear uno en el directorio raíz de la aplicación.
  2. Creación o modificación de la sección de CustomErrors del archivo web.config para tener la siguiente configuración Observe el uso de redirectMode = "ResponseRewrite" con NET 3.5 SP1 y NET 4.0.               
  < customErrors mode ="On" redirectMode ="ResponseRewrite" defaultRedirect ="~/error.aspx" />