Development of Secure Applications

923 views
850 views

Published on

Development of Secure Applications

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
923
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Development of Secure Applications

  1. 1. Desarrollo de Aplicaciones Seguras Roger Carhuatocto rcarhuatocto {at} intix.info 05.JULIO.2006
  2. 2. Index <ul><li>Presentación </li></ul><ul><li>Objetivos y Alcance del curso </li></ul><ul><li>Estado Actual </li></ul><ul><li>Nuevos enfoques </li></ul><ul><li>Revisado el SDLC </li></ul><ul><li>Fases en el SDL: Gestión de Requerimientos </li></ul><ul><li>Fases en el SDL: Análisis, Diseño y Construcción </li></ul><ul><li>Fases en el SDL: Despliegue </li></ul><ul><li>Técnicas de Hacking y amenazas de seguridad en Aplicaciones Web </li></ul><ul><li>Taller “Aseguramiento de una Aplicación Web J2EE” </li></ul>
  3. 3. Objetivos/Alcance <ul><li>Introducción </li></ul><ul><ul><li>Reflexión sobre problema de la Calidad y Seguridad en el Software y cómo se están resolviendo. </li></ul></ul><ul><ul><li>Dónde orientamos nuestros esfuerzos </li></ul></ul><ul><ul><li>Definición de estrategia </li></ul></ul><ul><li>Énfasis en el Proceso de Desarrollo de Sofware (Preventivo) </li></ul><ul><ul><li>Enfoque holístico </li></ul></ul><ul><ul><li>Calidad y/o Seguridad </li></ul></ul><ul><li>Revisión de Metodologías de aseguramiento de la calidad y seguridad en procesos de desarrollo de software como actividad preventiva. </li></ul><ul><ul><li>De propósito general </li></ul></ul><ul><ul><li>De propósito específico </li></ul></ul><ul><li>Revisión de herramientas de soporte a la Calidad y Seguridad </li></ul>
  4. 4. Estado actual <ul><li>Inseguridad </li></ul><ul><li>Seguridad reactiva: Antivirus, IDS, Firewall, Honeypots, etc.. </li></ul><ul><li>Calidad, Certificación, Marketing? </li></ul><ul><li>El Testing de Seguridad es usado para identificar vulnerabilidades sobre Producto Final. </li></ul><ul><li>Se soluciona los “bugs”, no el origen de ellos. </li></ul><ul><li>¿Estoy dedicando mis esfuerzos a solucionar directamente el problema? </li></ul><ul><li>¿Dónde está el origen del problema? </li></ul>
  5. 5. Seguridad-Calidad vs. Coste <ul><ul><li>Costs Versus Benefits in Securing Your Applications http://www.scmagazine.com/scmagazine/sc-online/2002/article/50/article.html </li></ul></ul><ul><ul><li>Se busca controlar el riesgo y minimizarlo http://www.infosecnews.com/opinion/2002/09/11_03.htm </li></ul></ul><ul><ul><li>La seguridad al 100% es utópica </li></ul></ul><ul><ul><li>Es también importante el riego indirecto: pérdida de clientes, daño a marca, pérdida de la confianza </li></ul></ul><ul><ul><li>Año 2000, Egghead.com – robo de 1millón de números de tarjetas de crédito </li></ul></ul><ul><ul><li>CD Universe sufrió el robo de números de tarjetas de créditos, él perdió sus clientes y se fueron a Amazon.com y CDNow </li></ul></ul><ul><ul><li>Octubre 2000, Microsoft gasta más dinero y esfuerzo manteniendo a relaciones públicas que solucionando problemas de seguridad. La percepción pública es que el código fuente no fue contaminado fue más importante que los efectos del actual ataque. </li></ul></ul>Coste Punto de equilibrio Nivel de Seguridad Riesgos Seguridad
  6. 6. Definimos la Problemática <ul><li>El Sistema de Gestión de Calidad/Seguridad </li></ul><ul><ul><li>Personas </li></ul></ul><ul><ul><li>Software, Hardware y otro tipo de infraestructura </li></ul></ul><ul><ul><li>Procesos de Negocio </li></ul></ul><ul><ul><li>Información </li></ul></ul><ul><li>¿Cuál es el elemento más débil? </li></ul><ul><li>¿A dónde se enfocan las actuales soluciones? </li></ul><ul><li>Cómo identificamos el origen de los problemas? </li></ul><ul><ul><li>Aplicar “Pareto”: 80%-20% </li></ul></ul><ul><li>¿Hay elementos que no se están considerando en el sistema?: </li></ul><ul><ul><li>Enfoque Holístico </li></ul></ul>
  7. 7. El principio de “Pareto” <ul><li>Italia (1848-1923), Vilfredo Pareto. A través del diagrama de Pareto se pueden detectar los problemas que tienen mayor relevancia </li></ul><ul><li>Principio: “Pocos vitales, muchos triviales” </li></ul><ul><ul><li>Hay muchos problemas sin importancia frente a unos pocos graves y por lo general el 80% de los resultados se originan en el 20% de los elementos. </li></ul></ul><ul><li>Algunos ejemplos de tales minorías vitales serían: </li></ul><ul><ul><li>La minoría de clientes que representen la mayoría de las ventas. </li></ul></ul><ul><ul><li>La minoría de productos, procesos, o características de la calidad causantes del grueso de desperdicio o de los costos de reelaboración. </li></ul></ul><ul><ul><li>La minoría de rechazos que representa la mayoría de quejas de la clientela. </li></ul></ul><ul><ul><li>La minoría de problemas causantes del grueso del retraso de un proceso. </li></ul></ul><ul><ul><li>La minoría de productos que representan la mayoría de las ganancias obtenidas. </li></ul></ul><ul><ul><li>La minoría de elementos que representan al grueso del costo de un inventarios </li></ul></ul><ul><ul><ul><li>Y la informática/Software, dónde aplicarlo? </li></ul></ul></ul>
  8. 8. Enfoque Sistémico al Problema de Calidad/Seguridad <ul><li>Sólo estamos tomando acciones preventivas sobre el producto final (testing de seguridad) </li></ul><ul><li>Estamos descuidando la seguridad en otras etapas del Desarrollo de SW </li></ul><ul><li>Existen elementos externos al proceso de Desarrollo de SW que se deben considerar, ellos proporcionan ayuda en la prevención: </li></ul><ul><ul><li>Sistemas de Gestión de la Calidad </li></ul></ul><ul><ul><li>Otros procesos de negocio (no de Desarrollo de SW) como Atención al Cliente, Facturación, Contabilidad, etc. </li></ul></ul><ul><ul><li>Recomendaciones y Metodologías </li></ul></ul><ul><ul><li>Herramientas y Técnicas de soporte a la QA/Sec de producto y soporte </li></ul></ul><ul><ul><ul><li>Bugtracking </li></ul></ul></ul><ul><ul><ul><li>CVS </li></ul></ul></ul><ul><ul><ul><li>Wiki </li></ul></ul></ul><ul><ul><ul><li>Nmap, Nessus, etc…. </li></ul></ul></ul><ul><ul><ul><li>Testing tools, etc… </li></ul></ul></ul>
  9. 9. Vectores o dominios de la Seguridad Seguridad Preventiva Seguridad Reactiva Seguridad Lógica Desarrollo de Software y Aplicaciones Networking, Sistemas e Infraestructura Sistemas de Gestión Procesos Negocio
  10. 10. Calidad y Seguridad en el Proceso de Desarrollo <ul><li>Soporte en ISO9001, CMMI, Metodologías Ágiles </li></ul><ul><li>Soporte de Técnicas y Buenas Prácticas para Auditar y evaluar la Calidad y Seguridad en el Producto </li></ul><ul><li>Enfoque de Calidad-Seguridad Holísitica y Calidad-Seguridad Proactiva </li></ul>Proceso de Desarrollo de Software Producto Software Sistema de Gestión de la Calidad y Seguridad Metodologías Ágiles Estándares e ISOs Herramientas de Soporte a QA Herramientas para Auditorias 1. Calidad y Seguridad en el proceso de Desarrollo 2. Calidad y Testing de Software 3. Seguridad en el Software <ul><li>Extremme Programming </li></ul><ul><li>V-Model </li></ul><ul><li>Programming based in Aspects </li></ul><ul><li>Programming Object Oriented </li></ul><ul><li>Etc… </li></ul><ul><li>CMM </li></ul><ul><li>ISO 9001:2000 </li></ul><ul><li>ISO/IEC 14598-1 </li></ul><ul><li>ISO 17799 </li></ul><ul><li>ISO/IEC 12207 </li></ul><ul><li>ISO/IEC 15271 </li></ul><ul><li>Common Criteria ISO 15408 </li></ul><ul><li>Etc .. </li></ul><ul><li>CVS </li></ul><ul><li>Maven </li></ul><ul><li>Test Management System </li></ul><ul><li>Bugtracker </li></ul><ul><li>Testing Tools: Stress, Unit, … </li></ul><ul><li>Eclipse, Java/C#, Mono, J2EE </li></ul><ul><li>Etc… </li></ul><ul><li>Sniffer, TCPDump </li></ul><ul><li>Nessus, Análisis de Vulnerabilidades </li></ul><ul><li>SQL Injection </li></ul><ul><li>Reverse Proxy </li></ul><ul><li>Buffer Overflow Tools </li></ul><ul><li>Etc … </li></ul>Proceso de Testing
  11. 11. Revisión del Ciclo de vida del Software: Usar el criterio <ul><li>Se define el “Cómo?” </li></ul><ul><li>Objetivos: </li></ul><ul><ul><li>Prototipeo </li></ul></ul><ul><ul><li>Diseño de Sistema </li></ul></ul><ul><ul><li>Diseño de Objetos </li></ul></ul><ul><ul><li>Diseño de Componentes </li></ul></ul><ul><li>Herramientas: </li></ul><ul><ul><li>CRC Cards: </li></ul></ul><ul><ul><ul><li>Class, Responsibility, Collaboration </li></ul></ul></ul><ul><ul><li>Diagrama de Secuencias y Clases </li></ul></ul><ul><ul><li>Definición Servicios Comunes: </li></ul></ul><ul><ul><ul><li>Logging, Security, Exception, Etc. </li></ul></ul></ul><ul><ul><li>Modelamiento de Amenazas por Casos de Uso </li></ul></ul><ul><ul><li>Patrones de Diseño Funcional </li></ul></ul><ul><ul><li>Patrones de Diseño de Seguridad (por Amenazas) </li></ul></ul><ul><ul><ul><li>Input Validator Pattern </li></ul></ul></ul><ul><ul><ul><li>Aspect Oriented Programming </li></ul></ul></ul><ul><ul><ul><li>Exception Manager Pattern </li></ul></ul></ul><ul><ul><ul><li>Secure Logger Pattern </li></ul></ul></ul><ul><li>Construcción, integración y testing </li></ul><ul><li>Interactivo </li></ul><ul><li>A producción </li></ul><ul><li>La seguridad aparece </li></ul><ul><li>Plan Operativo </li></ul><ul><li>Monitorización </li></ul><ul><li>Respuesta a incidentes </li></ul><ul><li>Se define el “Qué?” </li></ul><ul><li>Qué aporta Seg. a Negocio? </li></ul><ul><li>Herramientas: </li></ul><ul><ul><li>Requerimientos </li></ul></ul><ul><ul><li>Analisis Func y No-Func. </li></ul></ul><ul><ul><li>Casos de Uso </li></ul></ul>Análisis Diseño Transición Construcción MÉTODOS, HERRAMIENTAS Y TÉCNICAS: QA & SECURITY
  12. 12. Se preventivo, no reactivo en el “Ciclo de vida del Desarrollo de SW” <ul><li>Por ejemplo: </li></ul><ul><ul><li>Ciclo de Vida de un Bug </li></ul></ul><ul><ul><li>Ciclo de Vida de un IDS (Intrusion Detection System) </li></ul></ul><ul><ul><li>Ciclo de Vida de un Virus/Antivirus </li></ul></ul>Attack pattern Integrate in IDS Pentest Vulnerability detection Exploit The learning process = Four days (aprox.)
  13. 13. Enfoque Sistémico <ul><li>Enfoque Sistémico del Problema de la Calidad-Seguridad en el Desarrollo de SW (Enfoque Holístico) </li></ul><ul><ul><li>Considerar todos los elementos: Personas, SW, HW, Información, Red, etc. </li></ul></ul><ul><ul><li>Nos centramos en el elemento que nos interesa (Diagrama deParetto). Es Software el elemento más débil? </li></ul></ul><ul><ul><li>Análisis del Proceso de Desarrollo SW en lugar del Producto resultante, extendible a otros elementos externos del proceso </li></ul></ul><ul><ul><li>El objetivo: definir acciones (seguridad preventiva) en cada etapa del Proceso de Desarrollo de SW </li></ul></ul><ul><ul><li>La Seguridad es un tipo de Calidad </li></ul></ul><ul><li>Herramientas: </li></ul><ul><ul><li>Sistemas de Gestión de la Calidad </li></ul></ul><ul><ul><li>Otros procesos de negocio (no de Desarrollo de SW) como Atención al Cliente, Facturación, Contabilidad, etc. </li></ul></ul><ul><ul><li>Recomendaciones y Metodologías </li></ul></ul><ul><ul><li>Herramientas y Técnicas </li></ul></ul><ul><ul><ul><li>Bugtracking </li></ul></ul></ul><ul><ul><ul><li>CVS, Wiki </li></ul></ul></ul><ul><ul><ul><li>Nmap, Nessus, etc…. </li></ul></ul></ul><ul><ul><ul><li>Testing tools, etc… </li></ul></ul></ul>Calidad Total Forma de gestión de una organización centrada en la calidad basada en la participación de todos sus miembros y que apunta al éxito a largo plazo por medio de la satisfacción del cliente y a proporcionar beneficios para todos los miembros de la organización y para la sociedad. Producto Ext Proceso Ext Cliente Proveedor
  14. 14. Técnicas más usadas para explotar vulnerabilidades
  15. 15. Origen de las Vulnerabilidades por Aplicación
  16. 16. Predicciones en Software Security
  17. 17. Origen de Defectos en SW – No es código!!
  18. 18. ROI en Quality/Security Software
  19. 19. Metodologías, buenas prácticas en Seguridad <ul><ul><li>ISO 17799 based on BS 7799 of the British Standards Institute. </li></ul></ul><ul><ul><li>ISO/IEC TR 13335-4 by ISO/IEC Joint Technical Committee 1. </li></ul></ul><ul><ul><li>RFC2196 by Internet Engineering Task Force. </li></ul></ul><ul><ul><li>Cobit by ISACA. </li></ul></ul><ul><ul><li>GAO/AIMD-12.19.6 by Federal Information Systems Audit Manual. </li></ul></ul><ul><ul><li>GAASP by International Information Security Foundation. </li></ul></ul><ul><ul><li>800-14 by National Institute of Standards and Technology. </li></ul></ul><ul><ul><li>ISO15408 - Common Criteria from National Institute of Standards and Technology. </li></ul></ul><ul><ul><li>Standard of Good Practice for Information Security from ISF. </li></ul></ul><ul><ul><li>SysTrust by AICPA. </li></ul></ul><ul><ul><li>IT Baseline Protection Manual from BSI </li></ul></ul><ul><ul><li>OCTAVE by Software Engineering Institute. </li></ul></ul><ul><ul><li>[...] http://www.fistconference.org/data/presentaciones/estandaresymetodologiasdeseguridad.pdf </li></ul></ul><ul><ul><ul><li>Conferencias FIST, Nov. 2003 – Vicente Aceituno </li></ul></ul></ul>
  20. 20. Metodología de Calidad en Software y Proceso <ul><ul><li>Generales, de Testing, de Calida en SW </li></ul></ul><ul><ul><li>De mejora en el proceso </li></ul></ul><ul><ul><li>De Testing ... </li></ul></ul><ul><ul><li>[...] http://www.12207.com </li></ul></ul>
  21. 21. Conclusiones Finales <ul><li>Enfoque Sistémico (Holístico) </li></ul><ul><li>Aplicable a todo el proceso de desarrollo de SW, incluye a la etapa de toma de requerimientos </li></ul><ul><li>Usar Metodologías y Estándares de propósito general y de seguridad </li></ul>
  22. 22. Referencias <ul><li>Alan Cox on writing better software </li></ul><ul><ul><li>By Basheera Khan - Thursday, 07 October 2004 </li></ul></ul><ul><ul><li>http://www.pingwales.co.uk/software/cox-on-better-software.html </li></ul></ul><ul><li>Dire Straits </li></ul><ul><ul><li>The evolution of software opens new vistas for business... and the bad guys. </li></ul></ul><ul><ul><li>April 2004, By GARY MCGRAW & GREG HOGLUND </li></ul></ul><ul><ul><li>http://infosecuritymag.techtarget.com/ss/0,295796,sid6_iss366_art684,00.html </li></ul></ul><ul><li>Introduction to Software Security </li></ul><ul><ul><li>Date: Nov 2, 2001 By Gary McGraw, John Viega. </li></ul></ul><ul><ul><li>http://www.awprofessional.com/articles/printerfriendly.asp?p=23950 </li></ul></ul><ul><li>Centro de Desarrollo Microsoft Seguridad </li></ul><ul><ul><li>http://www.microsoft.com/spanish/msdn/centro_recursos/security/default.asp </li></ul></ul>
  23. 23. Nuevo SDLC con Calidad y Seguridad 1 Requerimientos y casos de uso Diseño Plan de Pruebas Implementación y codificación Resultado de Pruebas Retroalimentación y feedback 2 3 4 5 6 Casos de abuso Análisis de Riesgo Pruebas de Seguridad basadas en el Riesgo Monitorización y Seguimiento Requerimientos de Seguridad y Calidad Revisión Externa Análisis Estático (Herramientas) Análisis de Riesgo Pruebas de Penetración Selección de Herramientas de Pruebas Pruebas de Carga
  24. 24. Nuevo SDLC con Calidad y Seguridad Usuario Final Empresa Contratante Software Factory 1 2 3 4 5 6 Requerimientos y casos de uso Diseño Plan de Pruebas Implementación y codificación Resultado de Pruebas Retroalimentación y feedback
  25. 25. Nuevo SDLC con Calidad y Seguridad - enfoque <ul><li>Proceso clásico siguien pautas generales: </li></ul><ul><ul><li>ISO9001:2000, CMM, Metodologías Ágiles, .... </li></ul></ul><ul><li>Objetivo: </li></ul><ul><ul><li>Detectar con antelación el error, en la etapa de diseño y no en producción </li></ul></ul><ul><ul><li>Ahorro del 60% de costes en actividades de Solución de un error cuando se detecta en la fase de Diseño. </li></ul></ul><ul><li>Alcance: </li></ul><ul><ul><li>Uso de metodologías clásicas de desarrollo pero con una adición de técnicas de testing y de aseguramiento de la calidad </li></ul></ul><ul><ul><li>El aseguramiento se extiendo a los largo del proceso </li></ul></ul><ul><ul><li>Soporte con herramientas al proceso de aseguramientos: </li></ul></ul><ul><ul><ul><li>Gestión de Incidentes y/o Bugtracker </li></ul></ul></ul><ul><ul><ul><li>Herramientas automatizadas para identificar vulnerabilidades en código fuente, en funcionalidades </li></ul></ul></ul><ul><ul><ul><li>Herramientas para ejecutar pruebas de carga, etc. </li></ul></ul></ul><ul><ul><ul><li>Herramientas para probar la Seguridad </li></ul></ul></ul><ul><ul><ul><li>Sistema de Gestión de Pruebas </li></ul></ul></ul>
  26. 26. Gestión de Requerimientos y Análisis: Misuse-Abuse Case y Security Use Case (1/2)
  27. 27. Gestión de Requerimientos y Análisis: Misuse-Abuse Case y Security Use Case (1/2) <ul><li>Casos de Uso </li></ul><ul><ul><li>Requerimiento funcional de usuario </li></ul></ul><ul><ul><li>Comportamiento normal de lo que será la aplicación </li></ul></ul><ul><li>Misuse-Abuse Case </li></ul><ul><ul><li>No son requerimientos </li></ul></ul><ul><ul><li>No es el comportamiento normal </li></ul></ul><ul><ul><li>Comportamient olvidado: </li></ul></ul><ul><ul><ul><li>Comportamiento anormal </li></ul></ul></ul><ul><ul><ul><li>Comportamiento de seguridad </li></ul></ul></ul><ul><ul><ul><li>Etc... </li></ul></ul></ul><ul><li>Es importante hacer un análisis de amenazas! </li></ul>
  28. 28. Diseño y Construcción: Análisis Estático de Código <ul><li>Método para el análisis del código fuente o código objeto </li></ul><ul><li>Sirve para ganar conocimiento de lo que la Aplicación hará en producción. además sirve para establecer algún criterio de corrección en el código. </li></ul><ul><li>Técnicas </li></ul><ul><ul><li>Black Box Testing </li></ul></ul><ul><ul><li>White Box Testing </li></ul></ul><ul><ul><ul><li>Code Coverage </li></ul></ul></ul><ul><ul><li>Profiling </li></ul></ul><ul><ul><ul><li>De performance </li></ul></ul></ul><ul><ul><ul><li>De flujo </li></ul></ul></ul><ul><ul><ul><li>De memoria </li></ul></ul></ul><ul><ul><ul><li>Etc... </li></ul></ul></ul><ul><li>Métricas de Software </li></ul>
  29. 29. Diseño y Construcción: Herramientas Code Coverage/Profiling para JAVA y Free, Open Source <ul><li>Jrat : Performance Profiling , http://jrat.sourceforge.net/ </li></ul>
  30. 30. Diseño y Construcción: Herramientas Code Coverage/Profiling para JAVA y Free, Open Source <ul><li>Extensible Java Profiler </li></ul><ul><ul><li>http://ejp.sourceforge.net </li></ul></ul><ul><li>Basado JVM Profiler Interface (JVMPI) </li></ul><ul><li>http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi </li></ul>
  31. 31. Diseño y Construcción: Herramientas Code Coverage/Profiling para JAVA y Free, Open Source <ul><li>Cougaar Memory Profiler </li></ul><ul><ul><li>http://profiler.cougaar.org </li></ul></ul><ul><li>Jcoverage </li></ul><ul><ul><li>Trabaja hasta nivel de byte-code </li></ul></ul><ul><ul><li>http://jcoverage.com </li></ul></ul><ul><li>Cobertura </li></ul><ul><ul><li>% de accesos a código desde los Test </li></ul></ul><ul><ul><li>Qué parte del código ha sido probado pocas veces </li></ul></ul>
  32. 32. Otras herramientas de testing (1/2) <ul><li>http://java-source.net/open-source/testing-tools </li></ul>
  33. 33. Otras herramientas de testing (2/2) <ul><ul><li>http://opensourcetesting.org </li></ul></ul>
  34. 34. Diseño y Construcción: Conocimiento-Patrones comunes de Errores en el Código de App <ul><li>(Kingdoms) Fortify Taxonomy of Software Security Errors: http://vulncat.fortifysoftware.com/ </li></ul><ul><li>19 Deadly Sins of Sw Security: http://www.amazon.com/gp/product/0072260858/104-4300195-4358349 </li></ul><ul><li>OWASP Top Ten Most Critical Web Application Security Vuln: http://www.owasp.org/documentation/topten.html </li></ul>
  35. 35. Referencias - testing <ul><li>www.stickyminds.com/ – Sobre testing </li></ul><ul><li>www.webpagesthatsuck.com – Lo que dice </li></ul><ul><li>www.csst-technologies.com – Server testing refences </li></ul><ul><li>www.w3c.org – Testing, security con mucha informacion </li></ul><ul><li>http://www.testingfaqs.org/ - Testers reunidos </li></ul><ul><li>www.softpanorama.org/SE/testing.shtml - Testing Site links </li></ul><ul><li>www.teamshare.com – Defectos </li></ul><ul><li>www.pb-sys.com/ - Download buggit </li></ul><ul><li>http://www.testingfaqs.org/t-track.htm - Lista con herramientas </li></ul><ul><li>Para defectos </li></ul><ul><li>The Real World of Software Testing - http://srkprasad.blogspot.com </li></ul><ul><li>W Edwards Deming - http://www.dti.gov.uk/mbp/bpgt/m9ja00001/m9ja000016.html </li></ul><ul><li>Predicting the Future of Testing http://www.stickyminds.com/pop_print.asp?ObjectId=6887&ObjectType=COL </li></ul>
  36. 36. Muchas Gracias

×