Brian Sullivan, comenta los 10 errores más comunes que se cometen al configurar aplicaciones ASP.NET, estas configuraciones mal hechas podrían ayudar a los atacantes a vulnerar nuestras aplicaciones Web.
- Custom Errors deshabilitado: Al tener deshabilitado esta opción, los errores que se producen en la aplicación se muestran a todos. Los valores adecuados son
On
yRemoteOnly
, en el primero se puede especificar páginas personalizadas para mostrar mensajes de error más amigables. - Dejar habilitado el seguimiento de página (Tracing): Esta característica de ASP.NET contiene información bastante detallada de todo lo que pasa en la aplicación (registro de instrucciones relacionadas con el principio y el final de métodos de la ejecución, como Init, Render y PreRender; variables o encabezados de formulario y objetos QueryString, jerarquía de controles, estado de sesión y estado de aplicación). Un atacante puede utilizar toda esta información - accediendo simplemente a trace.axd - para lograr vulnerar nuestras aplicaciones, el valor adecuado para esta opción es:
xml:<trace enabled="false" localOnly="true">
- Depuración habilitada: Tener esta opción habilitada, no sólo afecta al rendimiento de la aplicación, sino también que se muestran errores más detallados.
- Cookies accesibles desde código de cliente: Esto básicamente se refiere al uso de cookies del tipo HttpOnly, técnica que mitiga de algún modo el robo de cookies. Hay que tener en cuenta que esta característica no es la panacea para asegurar nuestra aplicación, además si se habilita esta opción a nivel de la aplicación, puede traer ciertos problemas al momento de trabajar con cookies en código de cliente.
- Cookies de estado de sesión enviadas por Url: El autor recomienda usar cookies para almacenar el ID de la sesión, de este modo se evitaría que un atacante suplante a un usuario válido al robar este valor usando algún sniffer - personalmente no veo mucha diferencia entre usar uno u otro método.
- Cookies de autenticación enviadas por Url: Ídem al anterior.
- No usar SSL para transmitir las cookies de autenticación: El uso de SSL en teoría permite la comunicación segura de datos.
- Uso de slidingExpiration en la autenticación: El tener este valor habilitado (
<forms slidingExpiration="true">
), permite que el tiempo de vida de la sesión vaya cambiando a medida que el usuario vaya interactuando con la aplicación. Sin embargo, con esta opción deshabilitada sólo se dispone de un tiempo fijo para la sesión, de esta manera si alguien suplanta a usuarios legítimos sólo tendrá un espacio de tiempo limitado. - Cookies de autenticación no únicas: EL autor se refiere a usar diferentes valores para el nombre de la cookie de autenticación (
<forms name="otro_valor">
) en aplicaciones ASP.NET diferentes (para los casos en los que existen más de 2 aplicaciones en un mismo dominio) - Almacenar las credenciales de usuario en Web.config:
Para mayores detalles pueden visitar los artículos originales.