domingo, 29 de mayo de 2016

Seguridad en el ciclo de desarrollo del software

La mayor parte de las organizaciones desarrolla o contrata el desarrollo de aplicaciones propias para su gestión de negocio. Como todo software,estas aplicaciones pueden contener fallas de seguridad y a diferencia del software comercial, no se dispone de actualizaciones o parches liberados en forma periódica por el fabricante. El tratamiento de las vulnerabilidades en aplicaciones propias corre por parte de la organización que las desarrolla.Lamentablemente es una práctica habitual en muchas organizaciones lapuesta en producción! de sistemas sin la participación del sector de seguridad de la información. Muchas otras veces, el sector de seguridad se entera demasiado tarde,y no tiene su%ciente margen de acción para el análisis de seguridad dela aplicación desarrollada. Por lo general, en el mejor de los casos, se coordina un testeo de seguridad una vez que la aplicación ya está desarrollada. Aquí muchas veces se encuentran errores que requieren el rediseño de parte de la aplicación, lo cual implica un costo adicional en tiempo y esfuerzo.



Seguridad en el análisis de requerimientos
En esta etapa, se deben identificar aquellos requerimientos funcionales que tendrán impacto en los aspectos de seguridad de la aplicación. Algunos de ellos son: requerimientos de compliance con normativas locales o internacionales, tipo de información que se transmitirá o procesará , datos personales, datos financieros, contraseñas, datos de pago electrónico, etc. y requerimientos de registros de auditoria.

Seguridad en el diseño
Una vez que se cuenta con el diseño detallado de la aplicación, una práctica interesante es la de realizar sobre el mismo un análisis de riesgo orientado a software. Existen técnicas documentadas al respecto,tales como Threat Modeling. Estas técnicas permiten definir un marco para identificar debilidades de seguridad en el software, antes de la etapa de codificación. Como valor agregado, del análisis de riesgo orientado a software se pueden obtener casos de prueba para ser utilizados en la etapa de testing.

Seguridad en la codificación
Una vez concluido el diseño, le toca a los desarrolladores el turno decodificar los distintos componentes de la aplicación. Es en este punto en donde suelen incorporarse, por error u omisión, distintos tipos de vulnerabilidades. Estas vulnerabilidades podríamos dividirlas en dos grandes grupos a saber: vulnerabilidades clásicas y vulnerabilidades funcionales. Las primeras son bien conocidas y categorizadas. Vulnerabilidades funcionales son aquellas ligadas específicamente a la funcionalidad de negocio que posee la aplicación, por lo que no están previamente categorizadas.

Testing Q/A de seguridad
Tradicionalmente, la labor del equipo de testing fue la de encontrar y reportar errores funcionales de la aplicación. Para esto, se desarrollan "casos de test" basados en la funcionalidad esperada. Estos denominamos "testing funcional" y básicamente consiste en validar que la aplicación haga lo que se esperaba que hiciera.



Confiabilidad del software

La confiabilidad de software significa que un programa particular debe de seguir funcionando en la presencia de errores. Los errores pueden ser relacionados al diseño, a la implementación, a la programación, o el uso de errores.

Conceptos asociados con la confiabilidad:




Atributos de la confiabilidad:

La confiabilidad se expresa mediante diferentes atributos o propiedades:

Disponibilidad
Medida en la cual el  sistema está listo para ser usado. 
 Fiabilidad
 Medida en la cual el sistema suministra su servicio de forma continua.
 seguridad
Medida en la cual un sistema evita consecuencias catastróficas en su entorno.
 Confidencialidad
 Se trata de una propiedad de la información que pretende garantizar el acceso solo a personas autorizadas
 Integridad
se refiere a la corrección y a la complementación de los datos en una base de datos.
 Mantenibilidad
 Medida en la cual el sistema es apto para reparaciones y modificaciones


Deterioros de la confiabilidad
Existen tres factores de deterioro de la confiabilidad:


1.-Falla o fracaso: es un comportamiento inaceptable del sistema que no cumple con su especificación.
2.-Error: estado interno del sistema que difiere de uno válido y que es susceptible de coincidir a un fallo.
3.-Defecto: condición que provoca un error.

Medios de la confiabilidad

Los medios son los métodos y técnicas que permiten:
1.-Proveer la capacidad de entregar un servicio.
2.-Que alcance la confianza en esa capacidad.

Son usados en el proceso de construcción de software con el propósito de adquirir la confiabilidad:

-Evitar de defectos: para evitar o prevenir la introducción y ocurrencia de defectos.
-Tolerancia a defectos: para suministrar servicios que cumplan con su especificación a pesar de la existencia de defectos.

Contribuyen a la validación del software luego de ser desarrollado con el propósito de asegurar la confiabilidad.
-Eliminación de defectos: Detectar la eliminación de defectos y eliminarlos
-Predicción de defectos/fallos: para estimar la presencia de defectos y la ocurrencia y la consecuencia de los fallos.

No hay comentarios.:

Publicar un comentario