miércoles, octubre 18, 2006

Seguridad ASP.NET

Las aplicaciones Web ASP.NET versión 2.0 configuradas para la autenticación de formularios utilizan un vale de autenticación que se transmite entre el servidor Web y el explorador en una cookie o en una cadena de consulta URL. El vale de autenticación se genera cuando el usuario inicia sesión por primera vez y se utiliza en ocasiones posteriores para representar al usuario autenticado. Contiene un identificador de usuario y, con frecuencia, el conjunto de las funciones a las que pertenece el usuario. El explorador transmite al servidor Web el vale de autenticación en todas las solicitudes posteriores que forman parte de la misma sesión. Además del almacén de identidades de usuario, también debe proteger este vale para no poner en peligro el mecanismo de autenticación.

No proteger debidamente la autenticación de formularios es una vulnerabilidad habitual que puede traducirse en:

Elevación de privilegios: un intruso puede elevar los privilegios de su aplicación actualizando el nombre de usuario o la lista de funciones contenida en el vale y enviando a continuación la información actualizada al servidor. Un intruso capaz de insertar código malintencionado en su aplicación (en una nueva página ASPX, por ejemplo), también será capaz de crear y modificar los vales de autenticación de formularios

Secuestro de sesión: puede ocurrir que un intruso se haga con el vale de autenticación de otro usuario y lo utilice para obtener acceso a su aplicación. Esto puede suceder de varias maneras:

Como consecuencia de una vulnerabilidad de secuencias de comandos entre sitios.

Si el transporte no se protege mediante un mecanismo de seguridad como Secure Sockets Layer (SSL).

Si el vale se almacena en la caché del explorador.

Utilización de la sesión después de cerrarla: incluso después de que el usuario haya cerrado la sesión de la aplicación y el desarrollador haya llamado a FormsAuthentication.SignOut, el vale de autenticación sigue siendo válido hasta que caduca su tiempo de vida (TTL), de manera que cabe la posibilidad de que un intruso lo utilice para suplantar la identidad de otro usuario.

Interceptación: puede ocurrir que un intruso mire el contenido de un vale de autenticación para obtener información confidencial y utilizar esta información para poner en peligro la aplicación.

Exposición del almacén de identidades de usuario: un intruso con acceso al almacén de identidades de usuario puede obtener acceso a los nombres de usuario y contraseñas, directamente desde el almacén de datos o mediante un ataque de inyección SQL.

Para proteger el sistema de estas amenazas, la autenticación de formularios en ASP.NET ofrece las contramedidas siguientes:

Algoritmos hash MAC (HMAC): utilizan SHA1 o MD5 para proporcionar protección frente a posibles alteraciones. Cualquier cambio realizado en el vale de autenticación se detecta en el servidor y se genera una excepción si se ha modificado.

Cifrado: el cifrado convierte los datos de texto sin cifrar contenidos en el vale de autenticación de formularios en texto cifrado ilegible. ASP.NET versión 2.0 utiliza el cifrado simétrico AES para impedir que cualquiera pueda ver el contenido del vale de autenticación de formularios.

Restricción de la duración de la sesión: puede aplicar restricciones de la duración para reducir la ventana de tiempo durante la cual un intruso puede suplantar la identidad de otro usuario utilizando para ello el vale de autenticación de éste.

Transmisión obligatoria a través de HTTPS: puede impedir que los vales de autenticación se transmitan a través de conexiones HTTP. Esto impide que un intruso pueda ver o modificar el contenido del vale de autenticación mientras éste atraviesa la red.

1 comentario:

EddSR dijo...

Hola, bastante interesante tu blog, lo encontre por ese articulo de seguridad y revisando los demas posts me ha resultado muy util pues soy nuevo en ASP.NET y me esta gustando jeje
me podrias decir cuales fueron tus fuentes de infroamcion para este post de seguridad? es q estoy haciendo un trabajo de investigacion y quisiera citar esta info q tienes.
de antemano gracias por la ayuda y ojala que sigas aportando contenidod e calidad como este ;)