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
© Copyright 2024 ExpyDoc