Development of Secure Applications

36
Desarrollo de Aplicaciones Seguras Roger Carhuatocto rcarhuatocto {at} intix.info 05.JULIO.2006

description

Development of Secure Applications

Transcript of Development of Secure Applications

Page 1: Development of Secure Applications

Desarrollo de Aplicaciones Seguras

Roger Carhuatoctorcarhuatocto {at} intix.info

05.JULIO.2006

Page 2: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Index

Presentación Objetivos y Alcance del curso Estado Actual Nuevos enfoques Revisado el SDLC Fases en el SDL: Gestión de Requerimientos Fases en el SDL: Análisis, Diseño y Construcción Fases en el SDL: Despliegue Técnicas de Hacking y amenazas de seguridad en

Aplicaciones Web Taller “Aseguramiento de una Aplicación Web J2EE”

Page 3: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Objetivos/Alcance

Introducción◦ Reflexión sobre problema de la Calidad y Seguridad en

el Software y cómo se están resolviendo. ◦ Dónde orientamos nuestros esfuerzos◦ Definición de estrategia

Énfasis en el Proceso de Desarrollo de Sofware (Preventivo)◦ Enfoque holístico◦ Calidad y/o Seguridad

Revisión de Metodologías de aseguramiento de la calidad y seguridad en procesos de desarrollo de software como actividad preventiva.◦ De propósito general◦ De propósito específico

Revisión de herramientas de soporte a la Calidad y Seguridad

Page 4: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Estado actual

Inseguridad Seguridad reactiva: Antivirus, IDS, Firewall, Honeypots, etc.. Calidad, Certificación, Marketing? El Testing de Seguridad es usado para identificar

vulnerabilidades sobre Producto Final. Se soluciona los “bugs”, no el origen de ellos. ¿Estoy dedicando mis esfuerzos a solucionar directamente

el problema? ¿Dónde está el origen del problema?

Page 5: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Coste

Punto de equilibrio

Nivel de Seguridad

Riesgos SeguridadAño 2000, Egghead.com – robo de 1millón de números de tarjetas de créditoCD Universe sufrió el robo de números de tarjetas de créditos, él perdió sus clientes y se fueron a Amazon.com y CDNowOctubre 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.

Seguridad-Calidad vs. Coste

◦ Costs Versus Benefits in Securing Your Applicationshttp://www.scmagazine.com/scmagazine/sc-online/2002/article/50/article.html

◦ Se busca controlar el riesgo y minimizarlohttp://www.infosecnews.com/opinion/2002/09/11_03.htm

◦ La seguridad al 100% es utópica◦ Es también importante el riego indirecto: pérdida de clientes, daño a

marca, pérdida de la confianza

Page 6: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Definimos la Problemática

El Sistema de Gestión de Calidad/Seguridad◦ Personas◦ Software, Hardware y otro tipo de infraestructura◦ Procesos de Negocio◦ Información

¿Cuál es el elemento más débil? ¿A dónde se enfocan las actuales soluciones? Cómo identificamos el origen de los problemas?

◦ Aplicar “Pareto”: 80%-20% ¿Hay elementos que no se están considerando en el

sistema?: ◦ Enfoque Holístico

Page 7: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

El principio de “Pareto”

Italia (1848-1923), Vilfredo Pareto. A través del diagrama de Pareto se pueden detectar los problemas que tienen mayor relevancia

Principio: “Pocos vitales, muchos triviales”◦ 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.

Algunos ejemplos de tales minorías vitales serían:◦ La minoría de clientes que representen la mayoría de las ventas.◦ La minoría de productos, procesos, o características de la calidad

causantes del grueso de desperdicio o de los costos de reelaboración.◦ La minoría de rechazos que representa la mayoría de quejas de la

clientela.◦ La minoría de problemas causantes del grueso del retraso de un

proceso.◦ La minoría de productos que representan la mayoría de las ganancias

obtenidas.◦ La minoría de elementos que representan al grueso del costo de un

inventariosY la informática/Software,

dónde aplicarlo?

Page 8: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Enfoque Sistémico al Problema de Calidad/Seguridad

Sólo estamos tomando acciones preventivas sobre el producto final (testing de seguridad)

Estamos descuidando la seguridad en otras etapas del Desarrollo de SW Existen elementos externos al proceso de Desarrollo de SW que se deben

considerar, ellos proporcionan ayuda en la prevención:◦ Sistemas de Gestión de la Calidad◦ Otros procesos de negocio (no de Desarrollo de SW) como Atención al

Cliente, Facturación, Contabilidad, etc.◦ Recomendaciones y Metodologías◦ Herramientas y Técnicas de soporte a la QA/Sec de producto y soporte Bugtracking CVS Wiki Nmap, Nessus, etc…. Testing tools, etc…

Page 9: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Vectores o dominios de la Seguridad

SeguridadPreventiva

Seguridad Reactiva

Seguridad Lógica

Desarrollo de Software y Aplicaciones

Networking, Sistemas e

Infraestructura

Sistemas de GestiónProcesos Negocio

Page 10: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Proceso de Desarrollo de SoftwareProductoSoftware

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

• Extremme Programming• V-Model• Programming based in Aspects• Programming Object Oriented• Etc…

• CMM• ISO 9001:2000• ISO/IEC 14598-1• ISO 17799• ISO/IEC 12207• ISO/IEC 15271• Common Criteria ISO 15408• Etc ..

• CVS• Maven• Test Management System• Bugtracker• Testing Tools: Stress, Unit, …• Eclipse, Java/C#, Mono, J2EE• Etc…

• Sniffer, TCPDump• Nessus, Análisis de Vulnerabilidades• SQL Injection• Reverse Proxy• Buffer Overflow Tools• Etc …

Proceso de Testing

Calidad y Seguridad en el Proceso de Desarrollo

Soporte en ISO9001, CMMI, Metodologías Ágiles Soporte de Técnicas y Buenas Prácticas para Auditar y evaluar la Calidad y

Seguridad en el Producto Enfoque de Calidad-Seguridad Holísitica y Calidad-Seguridad Proactiva

Page 11: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Análisis Diseño TransiciónConstrucción

•Se define el “Cómo?”•Objetivos:

•Prototipeo•Diseño de Sistema•Diseño de Objetos•Diseño de Componentes

•Herramientas: •CRC Cards:

•Class, Responsibility, Collaboration•Diagrama de Secuencias y Clases•Definición Servicios Comunes:

•Logging, Security, Exception, Etc.•Modelamiento de Amenazas por Casos de Uso•Patrones de Diseño Funcional•Patrones de Diseño de Seguridad (por Amenazas)

•Input Validator Pattern•Aspect Oriented Programming•Exception Manager Pattern•Secure Logger Pattern

•Construcción, integración y testing•Interactivo

•A producción•La seguridad aparece•Plan Operativo•Monitorización•Respuesta a incidentes

•Se define el “Qué?”•Qué aporta Seg. a Negocio?

•Herramientas: •Requerimientos•Analisis Func y No-Func.•Casos de Uso

MÉTODOS, HERRAMIENTAS Y TÉCNICAS: QA & SECURITY

Revisión del Ciclo de vida del Software: Usar el criterio

Page 12: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

PentestVulnerability detection

Exploit Attack pattern

Attack pattern

Integrate in IDS

Integrate in IDS

The learning process = Four days (aprox.)

Se preventivo, no reactivo en el “Ciclo de vida del Desarrollo de SW”

Por ejemplo:◦ Ciclo de Vida de un Bug◦ Ciclo de Vida de un IDS (Intrusion Detection System)◦ Ciclo de Vida de un Virus/Antivirus

Page 13: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Enfoque Sistémico

Enfoque Sistémico del Problema de la Calidad-Seguridad en el Desarrollo de SW (Enfoque Holístico)

◦ Considerar todos los elementos: Personas, SW, HW, Información, Red, etc.

◦ Nos centramos en el elemento que nos interesa (Diagrama deParetto). Es Software el elemento más débil?

◦ Análisis del Proceso de Desarrollo SW en lugar del Producto resultante, extendible a otros elementos externos del proceso

◦ El objetivo: definir acciones (seguridad preventiva) en cada etapa del Proceso de Desarrollo de SW

◦ La Seguridad es un tipo de Calidad Herramientas:

◦ Sistemas de Gestión de la Calidad◦ Otros procesos de negocio (no de

Desarrollo de SW) como Atención al Cliente, Facturación, Contabilidad, etc.

◦ Recomendaciones y Metodologías◦ Herramientas y Técnicas

Bugtracking CVS, Wiki Nmap, Nessus, etc…. Testing tools, etc…

Producto

Ext

Proceso

Ext

ClienteProveedor

Calidad TotalForma 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.

Page 14: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Técnicas más usadas para explotar vulnerabilidades

Page 15: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Origen de las Vulnerabilidades por Aplicación

Page 16: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Predicciones en Software Security

Page 17: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Origen de Defectos en SW – No es código!!

Page 18: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

ROI en Quality/Security Software

Page 19: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Metodologías, buenas prácticas en Seguridad

◦ ISO 17799 based on BS 7799 of the British Standards Institute.◦ ISO/IEC TR 13335-4 by ISO/IEC Joint Technical Committee 1.◦ RFC2196 by Internet Engineering Task Force.◦ Cobit by ISACA.◦ GAO/AIMD-12.19.6 by Federal Information Systems Audit Manual.◦ GAASP by International Information Security Foundation.◦ 800-14 by National Institute of Standards and Technology.◦ ISO15408 - Common Criteria from National Institute of Standards and

Technology.◦ Standard of Good Practice for Information Security from ISF.◦ SysTrust by AICPA.◦ IT Baseline Protection Manual from BSI◦ OCTAVE by Software Engineering Institute.◦ [...]

http://www.fistconference.org/data/presentaciones/estandaresymetodologiasdeseguridad.pdf

Conferencias FIST, Nov. 2003 – Vicente Aceituno

Page 20: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Metodología de Calidad en Software y Proceso

◦ Generales, de Testing, de Calida en SW◦ De mejora en el proceso◦ De Testing ...◦ [...] http://www.12207.com

Page 21: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Conclusiones Finales

• Enfoque Sistémico (Holístico)• Aplicable a todo el proceso de desarrollo de SW,

incluye a la etapa de toma de requerimientos• Usar Metodologías y Estándares de propósito

general y de seguridad

Page 22: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Referencias

Alan Cox on writing better software ◦ By Basheera Khan - Thursday, 07 October 2004◦ http://www.pingwales.co.uk/software/cox-on-better-software.html

Dire Straits◦ The evolution of software opens new vistas for business... and the

bad guys.◦ April 2004, By GARY MCGRAW & GREG HOGLUND◦ http://infosecuritymag.techtarget.com/ss/0,295796,sid6_iss366_art6

84,00.html Introduction to Software Security

◦ Date: Nov 2, 2001 By Gary McGraw, John Viega.◦ http://www.awprofessional.com/articles/printerfriendly.asp?p=23950

Centro de Desarrollo Microsoft Seguridad◦ http://www.microsoft.com/spanish/msdn/centro_recursos/security/de

fault.asp

Page 23: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

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 Seguridadbasadas en el Riesgo

Monitorizacióny Seguimiento

Requerimientos de Seguridad y Calidad

Revisión Externa

Análisis Estático (Herramientas)

Análisis de Riesgo

Pruebas dePenetración

Selección de Herramientas de Pruebas

Pruebas de Carga

Nuevo SDLC con Calidad y Seguridad

Page 24: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

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

Page 25: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Nuevo SDLC con Calidad y Seguridad - enfoque

Proceso clásico siguien pautas generales:◦ ISO9001:2000, CMM, Metodologías Ágiles, ....

Objetivo:◦ Detectar con antelación el error, en la etapa de diseño y no en

producción◦ Ahorro del 60% de costes en actividades de Solución de un error cuando

se detecta en la fase de Diseño. Alcance:

◦ Uso de metodologías clásicas de desarrollo pero con una adición de técnicas de testing y de aseguramiento de la calidad

◦ El aseguramiento se extiendo a los largo del proceso◦ Soporte con herramientas al proceso de aseguramientos:

Gestión de Incidentes y/o Bugtracker Herramientas automatizadas para identificar vulnerabilidades en

código fuente, en funcionalidades Herramientas para ejecutar pruebas de carga, etc. Herramientas para probar la Seguridad Sistema de Gestión de Pruebas

Page 26: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Gestión de Requerimientos y Análisis:Misuse-Abuse Case y Security Use Case (1/2)

Page 27: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Gestión de Requerimientos y Análisis:Misuse-Abuse Case y Security Use Case (1/2)

Casos de Uso◦ Requerimiento funcional de usuario◦ Comportamiento normal de lo que será la

aplicación Misuse-Abuse Case

◦ No son requerimientos ◦ No es el comportamiento normal◦ Comportamient olvidado:

Comportamiento anormal Comportamiento de seguridad Etc...

Es importante hacer un análisis de amenazas!

Page 28: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Diseño y Construcción:Análisis Estático de Código

Método para el análisis del código fuente o código objeto 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.

Técnicas◦ Black Box Testing◦ White Box Testing

Code Coverage◦ Profiling

De performance De flujo De memoria Etc...

Métricas de Software

Page 29: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Diseño y Construcción:Herramientas Code Coverage/Profiling para JAVA y Free, Open Source

Jrat: Performance Profiling , http://jrat.sourceforge.net/

Page 30: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Diseño y Construcción: Herramientas Code Coverage/Profiling para JAVA y Free, Open Source Extensible Java Profiler

◦ http://ejp.sourceforge.net Basado JVM Profiler Interface (JVMPI) http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi

Page 31: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Diseño y Construcción:Herramientas Code Coverage/Profiling para JAVA y Free, Open Source

Cougaar Memory Profiler◦ http://profiler.cougaar.org

Jcoverage◦ Trabaja hasta nivel de byte-code◦ http://jcoverage.com

Cobertura◦ % de accesos a código desde los Test◦ Qué parte del código ha sido probado pocas veces

Page 32: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Otras herramientas de testing (1/2)

http://java-source.net/open-source/testing-tools

Page 33: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Otras herramientas de testing (2/2)

› http://opensourcetesting.org

Page 34: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Diseño y Construcción:Conocimiento-Patrones comunes de Errores en el Código de App

(Kingdoms) Fortify Taxonomy of Software Security Errors: http://vulncat.fortifysoftware.com/ 19 Deadly Sins of Sw Security: http://www.amazon.com/gp/product/0072260858/104-4300195-

4358349 OWASP Top Ten Most Critical Web Application Security Vuln:

http://www.owasp.org/documentation/topten.html

Page 35: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Referencias - testing

www.stickyminds.com/ – Sobre testing www.webpagesthatsuck.com – Lo que dice www.csst-technologies.com – Server testing refences www.w3c.org – Testing, security con mucha informacion http://www.testingfaqs.org/ - Testers reunidos www.softpanorama.org/SE/testing.shtml - Testing Site links www.teamshare.com – Defectos www.pb-sys.com/ - Download buggit http://www.testingfaqs.org/t-track.htm - Lista con herramientas Para defectos

The Real World of Software Testing - http://srkprasad.blogspot.com W Edwards Deming - http://www.dti.gov.uk/mbp/bpgt/m9ja00001/m9ja000016.html Predicting the Future of Testing

http://www.stickyminds.com/pop_print.asp?ObjectId=6887&ObjectType=COL

Page 36: Development of Secure Applications

Roger Carhuatocto :: DevSecureApp

Muchas Gracias