S2D2: Software Security Driven Development

Enviado por Manu García-Cervigón en Vie, 06/03/2015 - 11:24

El creciente número de datos alojados  en el mundo digital provoca la necesidad de disponer de una metodología para gestionar la seguridad que se pueda aplicar en los diferentes proyectos relacionados con el desarrollo de software, donde a la postre se alojará o por donde circulará uno de los activos más importantes: la información.

Si bien en los últimos años se han desarrollado  buenas prácticas para fases concretas de desarrollo  y ciertos lenguajes de programación, no existe en la actualidad ninguna metodología que cubra por completo la seguridad sobre todas las fases del desarrollo de aplicaciones.

Un equipo de inLab ha analizado el estado del arte a este respecto y ha generado una metodología para evitar la aparición de vulnerabilidades durante el desarrollo de un producto y facilitar su posterior auditoría.

Se ha creado una herramienta con el fin de facilitar la aplicación de la metodología creada a los responsables de proyecto. Igualmente se ha  probado el  procedimiento creado en varios proyectos realizados por nuestro personal.

 

Uso de la metodología

Para facilitar la gestión de la metodología se han creado tareas que permiten verificar si un control se cumple. Igualmente los controles se han agrupado según la fase del desarrollo en que se deben analizar.

La metodología parte del  estudio de las diferentes propuestas al respecto publicadas hasta el momento y ha sido complementada con la experiencia de expertos en seguridad y en desarrollo.

 

Las diferentes fases en que se estructura la metodología  parten del ciclo de vida del desarrollo según ISACA, la podemos usar para todas las fases en las que se dicide un proyecto de desarrollo de software:

  • Análisis de requisitos y viabilidad. En esta fase del proyecto se establecen cuales son los objetivos del proyecto y se forma el equipo de trabajo que lo llevará a cabo.
  • Infraestructura y comunicaciones. Una vez realizado el análisis se pone en marcha el conjunto de equipos informáticos que se utilizarán durante el desarrollo y puesta en marcha del proyecto. Esto incluye el equipo que utilizará cada miembro del equipo durante el desarrollo, los servidores y equipos de red que puedan ser necesarios para dar servicio a los miembros del equipo de trabajo y el equipamiento en que se ejecutarán las versiones en desarrollo del proyecto y las versiones a ser utilizadas por el cliente.
  • Metodologías de desarrollo. La metodología de desarrollo consiste en la forma en que el equipo de trabajo se organizará para repartir las diferentes tareas y establecer la prioridad con la que se irán completando de acuerdo a las necesidades del cliente.
  • Implementación. Durante la implementación  se lleva a cabo el trabajo necesario para cumplir los objetivos del proyecto, en el caso de proyectos de software suele consistir en el desarrollo de una o más aplicaciones.
  • Auditoria. Una vez desarrollado el producto  se debe comprobar  que el trabajo realizado cumple de manera efectiva con todos los requisitos de comportamiento y calidad establecidos.
  • Despliegue. En esta fase del proyecto se pone a disposición del cliente el trabajo realizado, en algunos casos puede significar hacer entrega del trabajo llevado a cabo, mientras que en otros puede suponer desplegar el proyecto en un servidor donde el cliente se dispondrá a utilizar el proyecto para sus necesidades.
  • Monitorización. Esta fase del proyecto consiste en controlar que  funciona tal y como estaba previsto y detectar problemas que puedan surgir debido tanto a acciones externas como a problemas del proyecto que hayan pasado inadvertidos hasta el momento.
  • Mantenimiento. En esta fase del proyecto se llevan a cabo pequeñas modificaciones que puedan ser necesarias debido a fallos que se hayan detectado como a cambios en las condiciones en que el proyecto debe trabajar. En el caso de ser necesario realizar modificaciones de mayor envergadura sería necesario iniciar un nuevo proyecto con el objetivo de llevarlas a cabo.

 

Dificultades encontradas a la hora de desarrollar la metodología

La primera dificultad  ha sido crear controles de la metodología, cuyo objetivo es protegerse de un ataque, a partir de los controles ofrecidos por metodologías cuyo objetivo es el opuesto (OSSTTMM o OWASP), es decir, lograr vulnerar la seguridad de un software.

La segunda dificultad fue llevar a cabo la fusión de los controles y sus tareas asociadas obtenidos de las diferentes fuentes de información. Esto se debe a que no toda la nomenclatura utilizada es la misma en las fuentes consultadas y obliga a tener cuidado a la hora de unir múltiples controles.

 

La tercera dificultad ha sido el volumen de controles y tareas obtenido. Con el fin de facilitar la aplicación de los controles y su adaptación a diferentes proyectos ha sido necesario desarrollar un software específico. Este software permite la edición de la metodología para su posterior aplicación en un proyecto.

El desarrollo de la herramienta S2D2 no ha estado exento de dificultades al ser necesario crear una interfaz de usuario capaz de adaptarse a la estructura cambiante del modelo de datos. Esto ha obligado a emplear capas de abstracción, en forma de Interface en Java, que en caso de no existir una interfaz gráfica habrían sido innecesarias.

 

Futuro de la metodología

Tanto la metodología como la herramienta serán implantadas en el ámbito de la Universitat Politècnica de Catalunya durante el año 2015 con el fin de minimizar los riesgos de las aplicaciones desarrolladas en los próximos años en el ámbito académico.

Síguenos en

Els nostres articles del bloc d'inLab FIB

         
         

inLab FIB incorpora esCert

Icona ESCERT

inLab es miembro de