Compartir a través de


Información general sobre las amenazas para la seguridad de las aplicaciones Web

Actualización: noviembre 2007

Si a su aplicación Web tienen acceso usuarios desconocidos, existen muchas probabilidades de que algún usuario malintencionado intente también obtener acceso. Normalmente, los servidores de Internet accesibles al público se sondean constantemente para descartar vulnerabilidades. Por consiguiente, se recomienda que tome precauciones y adopte medidas de seguridad en todas sus aplicaciones Web.

Puede encontrar información más detallada sobre los procedimientos recomendados para escribir código seguro y garantizar la seguridad de las aplicaciones en el libro "Writing Secure Code", de Michael Howard y David LeBlanc, o a través de la especificación Microsoft Patterns and Practices.

La tecnología de seguridad es sólo parte de la solución

Implementar tecnología de seguridad es sólo parte de la solución. Otra parte consiste en la vigilancia. Aunque el sistema cuente con numerosos elementos de seguridad, es preciso vigilarlo de cerca de los modos siguientes:

  • Supervisando los registros de eventos del sistema. Observe si se producen intentos repetidos de iniciar sesión en su sistema o si el servidor Web recibe un número excesivo de solicitudes.

  • Mantenga continuamente actualizado el servidor de la aplicación con las últimas revisiones de seguridad de Microsoft Windows y de los Servicios de Internet Information Server (IIS), así como cualquier revisión de Microsoft SQL Server o de otros orígenes de datos que pueda utilizar su aplicación.

Modelo de amenazas

Una fase importante en el proceso de programación de aplicaciones más seguras consiste en ser capaz de anticipar las amenazas que se puede sufrir. Microsoft ha elaborado un sistema de clasificación de las amenazas en distintas categorías: suplantación, manipulación, repudio, revelación de información, denegación de servicio y concesión de privilegio. En las secciones siguientes se describen brevemente estas amenazas y cómo afectan a las aplicaciones Web.

Suplantación

Suplantar (spoof) es utilizar los datos de identificación de otro usuario o proceso de forma no autorizada. En su versión más simple, la suplantación consistiría en introducir las credenciales de un usuario diferente. Un usuario malintencionado podría también cambiar el contenido de una cookie para fingir que es otra persona o que la cookie proviene de un servidor diferente.

En general, es posible contribuir a evitar la suplantación mediante una autenticación estricta. Siempre que alguien solicita acceso a información privada, es preciso asegurarse de que es quien dice ser. También se puede contribuir a la defensa contra la suplantación manteniendo la información de credenciales a salvo. Por ejemplo, no se debe guardar nunca una contraseña ni otro tipo de datos confidenciales o privados en una cookie, donde un usuario malintencionado podría encontrarlos y modificarlos fácilmente.

Manipulación

Manipular significa cambiar o eliminar un recurso sin autorización. El ejemplo típico consiste en desfigurar una página Web, para lo cuál, el usuario malintencionado logra acceso al sitio y cambia algunos archivos. Un modo indirecto de manipulación son los ataques mediante secuencias de comandos. Un usuario malintencionado consigue que se ejecute código (secuencia de comandos) enmascarándolo como la entrada de datos de un usuario en una página o como un vínculo.

Una defensa fundamental contra la manipulación consiste en usar la seguridad de Windows para bloquear los archivos, directorios y otros recursos de Windows. La aplicación también debería ejecutarse con privilegios mínimos. Para reforzar la protección contra los ataques al sistema que aprovechan las secuencias de comandos, desconfíe ante cualquier información que proceda de un usuario o, incluso, de una base de datos. Siempre que se obtenga información de una fuente que no sea de confianza, es preciso asegurarse de que no contiene código ejecutable.

Repudio

Una amenaza de repudio implica llevar a cabo una transacción de manera que no haya pruebas fehacientes de los actores principales de la transacción. En una aplicación Web, esto puede significar que se está suplantando a un usuario inocente usando sus credenciales. Contribuir a la protección contra el repudio es posible, de nuevo, aplicando una autenticación estricta. Además, se deben usar las funciones de inicio de sesión de Windows para mantener un registro de auditoría de cualquier actividad en el servidor.

Revelación de información

Revelación de información significa simplemente robar o desvelar información que se supone que es confidencial. Un ejemplo típico es el robo de contraseñas, pero la revelación de información también incluye el acceso a cualquier archivo o recurso del servidor.

La mejor protección contra la revelación de información es no tener información que revelar. Por ejemplo, si se evita el almacenamiento de contraseñas, ningún usuario malintencionado podrá robarlas. Una alternativa al almacenamiento de las contraseñas consiste en guardar sólo un valor hash de éstas. De este modo, cuando un usuario presenta sus credenciales, se puede extraer el valor hash de su contraseña y compararlo con el almacenado. Si, aun así, se almacena información confidencial, se debe utilizar la seguridad de Windows para ayudar a protegerla. Como en todos los casos anteriores, se debería utilizar la autenticación para contribuir a garantizar que sólo los usuarios autorizados pueden tener acceso a la información restringida. Si tiene que exponer información confidencial, es recomendable que la cifre cuando la almacene y que utilice SSL (Secure Sockets Layer) para cifrar la información cuando se envía al explorador o se recibe de éste.

Denegación de servicio

Un ataque de denegación de servicio consiste en hacer deliberadamente que una aplicación esté menos disponible de lo que debería. Un ejemplo típico es sobrecargar una aplicación Web de forma que no pueda servir a los usuarios normales. Como alternativa, los usuarios malintencionados pueden intentar simplemente bloquear el servidor.

Los servicios IIS permiten limitar las aplicaciones de forma que sólo sirvan un número determinado de solicitudes, lo que podría resultar útil para denegar el acceso a los usuarios o direcciones IP que se sabe que tienen malas intenciones. Para mantener sus aplicaciones en línea, es esencial ejecutar código sólido. Debe probar exhaustivamente su aplicación y responder apropiadamente a los errores siempre que sea posible.

Concesión de privilegio

Un ataque de concesión de privilegio consiste en usar medios malintencionados para obtener más permisos de los asignados normalmente. Por ejemplo, en un ataque de concesión de privilegio que tenga éxito, un usuario malintencionado consigue obtener privilegios administrativos para el servidor Web, lo que le proporciona acceso a todos los datos del servidor, así como el control de las funciones de éste.

Como ayuda para protegerse contra ataques de concesión de privilegio, se debe ejecutar la aplicación en un contexto con los permisos mínimos, si resulta factible. Por ejemplo, se recomienda no ejecutar las aplicaciones de ASP.NET con la cuenta de usuario SYSTEM (administrador).

Vea también

Otros recursos

Proteger sitios web ASP.NET