Sei sulla pagina 1di 3

SEGURIDAD EN LAS ESTAPAS DE DESARROLLO DEL SOFTWARE Las etapas pueden variar segn la modalidad de cada organizacin, pero

a grandes rasgos son las siguientes: anlisis de requerimientos, diseo funcional y detallado, codificacin, testing/QA, implementacin/puesta en produccin.

Seguridad en el anlisis de requerimientos


En esta etapa, se deben identificar aquellos requerimientos funcionales que tendrn impacto en los aspectos de seguridad de la aplicacin. Algunos de ellos son: Requerimientos de compliance1 con normativas locales o internacionales (ej: PCI, SOX, A 4609, etc.), Tipo de informacin que se transmitir o procesar (ej: Informacin pblica o confidencial, datos personales, datos financieros, contraseas, datos de pago electrnico, etc.) y Requerimientos de registros de auditora (ej: Qu debe registrar la aplicacin en sus Logs).

Seguridad en el diseo
Para garantizar la seguridad en esta etapa se debe tener en cuenta los siguientes aspectos: Diseo de autorizacin (ej: Definir los roles, permisos y privilegios de la aplicacin), Diseo de autenticacin (aqu se debe disear el modo en el que los usuarios se van a autenticar, contemplando aspectos tales como los mecanismos o factores de autenticacin con contraseas, tokens, certificados, etc.) Posibilidades de integrar la autenticacin con servicios externos como LDAP, Radius o Active Directory y los mecanismos que tendr la aplicacin para evitar ataques de diccionario o de fuerza bruta (ej: bloqueo de cuentas, implementacin de captchas, etc.),

1 Compliance: principales grupos de inters de nuestro entorno (clientes, accionistas, empleados, proveedores y las comunidades en las que
vivimos)

Diseo de los mensajes de error y advertencia, para evitar que los mismos brinden demasiada informacin y que sta sea utilizada por atacantes y diseo de los mecanismos de proteccin de datos (aqu se debe contemplar el modo en el que se proteger la informacin sensible en trnsito o almacenada; segn el caso, se puede definir la implementacin de encripcin, hashes o truncamiento de la informacin).

Una vez que se cuenta con el diseo detallado de la aplicacin, una prctica interesante es la de realizar sobre el mismo un anlisis de riesgo orientado a software. Existen tcnicas documentadas al respecto, tales como Threat Modeling. Estas tcnicas permiten definir un marco para identificar debilidades de seguridad en el software, antes de la etapa de codificacin. EL anlisis de riesgo orientado a software se pueden obtener casos de prueba para ser utilizados en la etapa de Testing/QA.

Seguridad en la codificacin
Es en este punto en donde suelen incorporarse, por error u omisin, distintos tipos de vulnerabilidades. Estas vulnerabilidades podramos dividirlas en dos grandes grupos a saber: vulnerabilidades clsicas y vulnerabilidades funcionales. Los Frameworks de desarrollo de aplicaciones son una buena ayuda, ya que ofician de intermediario entre el programador y el cdigo, y permiten prevenir la mayora de las vulnerabilidades conocidas. Ejemplos de estos frameworks son: Struts, Ruby on Rails y Zope. Para garantizar su seguridad es importante verificar todos los valores de entrada y de salida. Esto es, asumir siempre que el valor pudo haber sido manipulado o ingresado maliciosamente antes de ser procesado.

Testing / QA de seguridad
Su labor es la de encontrar y reportar errores funcionales de la aplicacin. Para esto, se desarrollan casos de test basados en la funcionalidad esperada. A esto denominamos testing funcional y bsicamente consiste en validar que la aplicacin haga lo que se esperaba que hiciera. El testing de seguridad se basa principalmente en probar la aplicacin con escenarios no planificados, incluyendo valores mutados, fuera de rango, de tipo incorrecto o malformados, acciones fuera de orden, etc. Existen herramientas automticas que pueden ayudar al analista de QA en la bsqueda de errores. Las mismas son tiles por su velocidad y capacidad de automatizacin, pero pueden causar falsos positivos, y por lo general no son buenas detectando vulnerabilidades funcionales. Es por esto que los mejores resultados resultan de la combinacin de tcnicas automticas y manuales.

Implementacin / Puesta en produccin

Una mala configuracin al momento de implementar la aplicacin podra caerse toda la seguridad de las etapas anteriores. Tanto la aplicacin como el software de base deben configurarse de manera segura al momento de poner el software en produccin. En este punto se deben contemplar tareas tales como: cambio de usuarios y contraseas iniciales o por defecto, borrado de datos de prueba y cambio de permisos de acceso. Es tambin importante mantener una correcta separacin de los ambientes de desarrollo, testing y produccin y procedimientos de traspaso seguro de uno a otro de estos ambientes.

Potrebbero piacerti anche