lunes, 8 de marzo de 2010

Análisis de riesgos en la fase de desarrollo software

Hace un par de post, cuando hablaba de la operación Mariposa, un comentario anónimo apuntaba que además de las estrategias de defensa que planteaba a nivel de gestión de los sistemas informáticos, otra de las piezas claves es la programación segura ( o más bien, la programación considerando los requisitos de seguridad). En este sentido, no es la primera vez que en este blog comento la iniciativa SDLC (Secure Development Life Cycle) de Microsoft como parte de su estrategia global para lograr la mejora de la seguridad en sus productos.

Sin embargo, no dejan de sorprenderme las iniciativas que Microsoft utiliza para dar a conocer las herramientas que han desarrollado para dar a conocer SDLC.


La más importante es Threat Modeling Tool que básicamente sirve para elaborar el análisis de riesgos básico que todo desarrollo debe contemplar. Es esencial que un programador entienda que su aplicación puede ser atacada y cuales son los puntos posibles de ataque. Para ello, lo primero que todo lector de este post debe ver es el video A walk through the Threat Modeling Tool donde podrá comprobar la importancia que puede tener esta herramienta dentro de la fase de análisis de requisitos software.

Identificar a priori los puntos de control o las verificaciones técnicas que hay que realizar en una aplicación antes de empezar a tirar líneas de código es esencial. Básicamente esto es lo que se realiza en la fase de análisis de requisitos de toda metodología de desarrollo.

Contar además con un completo análisis de las amenazas que pueden darse una vez que el producto esté funcionando sirve para diseñar una aplicación que esté preparada para "defenderse o resistir". Esto es el nuevo matiz que hay que aprender. Hacer una aplicación utilizando "programación defensiva", es decir, pensar en los "casos de uso", pero también en los "casos de abuso".

La herramienta SDL Threat Modeling Tool proporciona las siguientes características:
  • Integración: Un sistema de seguimiento de los problemas detectados durante el análisis.

  • Automatización: orientación e información en la elaboración de un modelo de seguridad para la aplicación en desarrollo.

  • Análisis STRIDE por elemento del sistema: guía de análisis de amenazas y mitigación de los vectores de ataque STRIDE.

  • Informes: Actividades sobre el diseño de la seguridad y ensayos en la fase de análisis y verificación.


STRIDE es un acrónimo que resume 6 categorías de amenazas: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege. Dado que cada categoría tiene un conjunto específico de medidas de seguridad que las puede evitar, una vez que se analizan las amenazas y las clasificamos, ya podemos saber que será necesario para mitigarlas. Voy a explicar cada una de las categorías aglutinadas bajo el acrónimo STRIDE:
    S Suplantación (Spoofing)
    Un ataque de suplantación se produce cuando un atacante se hace pasar por alguien que no es.

    T Manipulación (Tampering)La manipulación ataques se producen cuando el atacante modifica los datos en tránsito.

    R Repudio (Repudiation)
    Negar la autoría de una acción o evento en los sistemas de información.

    I Revelación de información (Information Disclosure)
    Cuando la aplicación revela información sensible de forma no controlada debido a un error en la programación o un fallo en la configuración del servicio o aplicación.

    D Denegación de servicio (Denial of Service)
    Introducción de información maliciosa que logre la saturación o el bloqueo de la aplicación y de los servicios que esta proporciona generando como consecuencia la caída de la aplicación o el sistema informático.

    E Elevación de privilegios (Elevation of Privilege)
    Una elevación de privilegios se produce cuando un atacante tiene la capacidad para obtener privilegios que normalmente no tendrían. Esto se logra mediante la alteración o ataque a la aplicación obteniendo unos niveles de acceso mayores de los inicialmente otorgados, saltándose así la política de control de acceso predefinida.


Con mucho ingenio, la gente de Microsoft ha sacado un juego llamado Elevation of Privilege (EoP) card game que plantea al programador los diferentes escenarios de amenazas para que piense en ellos y cómo evitarlos.

Las cartas del juego las podéis descargar aquí. El resto de información sobre esta herramienta de análisis de requisitos de seguridad puede ser obtenida en The Microsoft SDL Threat Modeling Tool.
Get Microsoft Silverlight

4 comentarios:

Juan Mármol dijo...

He estado trabajando por más de 20 años en sistemas de información. Por doquier implementar una funcionalidad es la prioridad, cuya seguridad se presupone o se subestima, o más bien no se está preparado en otras dimensiones de la programación.

Programar requiere considerar los requisitos del cliente y otros, que como profesionales deben estar siempre presentes.
Pero para ello hay que concienciar, formar, profesionalizar,...estandarizar y exigir.

Áudea dijo...

Muchas gracias por la información y los links. Un programa ingenioso, didáctico y creativo de Microsoft, que se debería difundir aún más.

Hosting dijo...

Excelente blog y muy buen post, la verdad concuerdo con los 2 comentarios anteriores y aunque llevo poco trabajando con los sistemas de información considero que los puntos que Juan Mármol menciona son realmente importantes y lo que dice Áudea es preciso, "deberia difundirse más".

Un saludo.

Arsenio Aguirre dijo...

Conocen algun software para el Análisis de Riesgos de Seguridad de la Información.??
Muchas gracias de antemano.

 
;