SDLC

Calidad y Seguridad en la
programación de
aplicaciones
Presentada por:
Tartarelli Martin
COO, Infobyte Security Research
Aclaración:
©
Todos los derechos reservados. No está permitida la
reproducción parcial o total del material de esta sesión, ni
su tratamiento informático, ni la transmisión de ninguna
forma o por cualquier medio, ya sea electrónico, mecánico,
por fotocopia, por registro u otros métodos, sin el permiso
previo y por escrito de los titulares de los derechos. Si bien
este Congreso ha sido concebido para difusión y promoción
en el ámbito de la profesión a nivel internacional,
previamente deberá solicitarse una autorización por escrito
y mediar la debida aprobación para su uso.
Agenda
 Introducción
 Seguridad en el ciclo de vida desarrollo de
software
 Principales modelos
 Componentes claves que ayudan a la calidad
 Actualidad y Futuro
 Desafíos y Conclusiones
Introducción
 Secunia Vulnerability Review 2014
 El numero absoluto de
Vulnerabilidades fue de 13073
 La cifra muestra un aumento del 45% en
vulnerabilidades en la tendencia de cinco
años.
 16,3% fuero clasificas como Criticas y el
0.4% como extremadamente criticas.
 Cenzic Application Vulnerability
Trends Report
 El 96% de las aplicaciones son
Vulnerables
Introducción
Estas estadísticas reflejan…
 Problemas de implementación (bugs)
 Solo publicados por fabricantes o terceros
(investigadores, industria, etc)
 Aplican a problemas en software comercial ya
desplegado.
Introducción
Estas estadísticas NO reflejan…
 Software a medida / interno
 Fallas en el diseño
Introducción
En resumen, sabemos que…

Las vulnerabilidades vienen creciendo año a año

El costo de solucionar las vulnerabilidades es mayor
cuanto más tarde se las detecta

La tecnología es y será cada vez mas diversa y
compleja

La importancia en la participación de Seguridad
desde el inicio en el desarrollo de una aplicación se
hace imprescindible...
SDLC
SDLC se conoce como el desarrollo de sistemas de
información o de desarrollo de aplicaciones.
SDLC es un enfoque de sistemas para la resolución de
problemas y se compone de varias fases, cada una
compuesta de varios pasos
 Investigación
 Análisis
 Diseño
 Implementación
 Mantenimiento
SDLC
NIST SDLC
SDLC
Microsoft SDLC
SDLC
SDLC
SDLC
SDLC
Arquitectura de seguridad
Se centra en la identificación de debilidades en el diseño,
la ejecución y los controles de seguridad de la aplicación,
incluyendo
 Autenticación y
Autorización
 Gestión de sesiones
 Comunicaciones seguras
 Gestión de datos sensibles
(datos de la información)
 La validación de parámetros
 Gestión de la configuración
 Gestión de las excepciones
 La gestión del registro de
auditoría
Componentes Clave
Componentes Clave
Pruebas de vulnerabilidad de aplicaciones
Consiste en una prueba de seguridad controlada del entorno de
aplicaciones para identificar las posibles exposiciones externas. Las
pruebas de aplicación comúnmente incluyen lo siguiente:
 Pruebas Black-box (sin credencial) y Grey-box (con credencial)
 Configuraciones inseguras
 Revisión de Código
Componentes Clave
Testing Funcional vs Testing de Seguridad
Testing Funcional
 Consiste en verificar que las funcionalidades esperadas de la aplicación
cumplan con los requerimientos.
 Se basa en un uso “bien intencionado” de la aplicación.
 Se reporta un error cuando la aplicación no hace lo que debería.
Testing de Seguridad
 Consiste en verificar que no se pueda forzar a la aplicación a efectuar
acciones que excedan a la funcionalidad especificada.
 Se basa en un uso “malintencionado” de la aplicación.
 Se reporta un error cuando la aplicación hace lo que no debería.
Componentes Clave
Testing
Funcional
Testing
Seguridad
Actualidad / Futuro
Que cambios están ocurriendo?
 Virtualización
 Siempre en Línea (Always On)
 Cloud Computing
 Desglose del perímetro tradicional
 Redes sociales / Web 2.0
 Nuevas Leyes y Reglamentos
 Privacidad
 Due Diligence
Actualidad / Futuro
Que cambios están ocurriendo?
 Multiples Deploy (en caliente)
 Infraestructura Dinámica
 Miles de aplicaciones
 El aumento de la sofisticación y la capacidad de los atacantes
 Organizaciones Criminales
 Agencias estatales
 Actores Políticos
Integración Continua
Que es?
La integración continua es un modelo informático que consiste en hacer
integraciones automáticas de un proyecto lo más a menudo posible para así
poder detectar fallos cuanto antes. Entendemos por integración la compilación y
ejecución de pruebas de todo un proyecto.
Que Ventajas tiene?
 Los desarrolladores pueden detectar y solucionar problemas de integración de
forma continua, evitando el caos de última hora cuando se acercan las fechas
de entrega.
 Disponibilidad constante de una versión para pruebas, demos o lanzamientos
anticipados.
 Ejecución inmediata de las pruebas unitarias.
 Monitorización continua de las métricas de calidad del proyecto.
Integración Continua
Integración Continua
Check in Code
Check-out, Build and
Scan
IDE Plug-in
Code Repository
Developers
Build Machine
Vulnerability
Scan
Repeat as
Necessary
Possibly Continuous
Integration
Auditor
Reviews Results
Developer Fixes
Bug / Security
Finding
Bug Tracking
Submit Findings
to Bug Tracker
Auditor / Security
PM / Tech Lead
Integración Continua
http://nmap.org/
https://pypi.python.org/pypi/python-nmap
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
https://wiki.jenkins-ci.org/display/JENKINS/Zapper+Plugin
https://github.com/infobyte/faraday
Integración Continua
Desafíos y conclusiones
 Herramientas "queridas por el desarrollo, deben ser utilizadas por
seguridad"
 Los desarrolladores no están capacitados en seguridad o practicas
de codificación segura.
 Los analistas de Seguridad no entienden el desarrollo/código
fuente.
 La perfecta integración de la seguridad requiere de un gran
compromiso por adelantado.
 La experiencia es escasa
 Y más ...
Gracias por asistir a esta sesión…
Para mayor información:
Martin Tartarelli
[email protected]
@tartamar
Para descargar esta presentación visite
www.segurinfo.org
Los invitamos a sumarse al grupo “Segurinfo” en