1 / 43

titulo

titulo. “ Java y Seguridad I nformática ”. Caracterísitcas y consideraciones en la implementación de software. Objetivos. Conocer la arquitectura y componentes de seguridad de Java Entender los problemas de seguridad para los que Java fue diseñado

Télécharger la présentation

titulo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. titulo “Java y Seguridad Informática” Caracterísitcas y consideraciones en la implementación de software

  2. Objetivos • Conocer la arquitectura y componentes de seguridad de Java • Entender los problemas de seguridad para los que Java fue diseñado • Conocer los problemas de seguridad mas comunes en soluciones Java

  3. Agenda • Introducción • Estrategia JAVA • Sandboxing • Java Security – Application Security • Inseguridad en Java • Conclusiones

  4. Introducción convenciones y fundamentos

  5. Fundamentos de Seguridad Informática • Prevención • Disuasión • Auditoria • Privacidad • Integridad • Autenticidad • Disponibilidad • Irrefutabilidad Objetivos Política

  6. Un módelo de Riesgo Abundancia, Recursos Probabilidad o Frecuencia Pérdida, Atractivo amenaza x vulnerabilidades x impacto contramedidas Prácticas y tecnologías

  7. El Escenario • El atacante • Perfil • Recursos • Motivaciones • Las vulnerabilidades • Características Técnicas • Características Estratégicas

  8. Perfil Interno / Externo Oportunista / Plan e intereses Individuo u organización Aficionado, profesional Recursos Conocimiento Herramientas Ataques(exploits) Tiempo El Atacante

  9. Incidentes CERT/CC • Computer Emergency Response Team Coordination Center

  10. Vulnerabilidades • Software • Diseño • Implementación • Configuración/puesta en producción • Físico • Humano • Estrategia / Políticas

  11. Bugtraq Estadísticas securityfocus.com

  12. Estrategia de Seguridad Java Escenario y Arquitectura

  13. resources resources resources Proc a Proc a Proc a Proc b Proc b Proc b Proc c Proc c Proc c Escenario I: Aplicaciones Hóstiles • Consideraciones de Seguridad • Estaciones de trabajo con recursos y/o procesos valiosos • Control de acceso basado en direcciones IP • Atacante en control potencial del Código appl code a appl code b Network appl code c Firewall Internet Servers Workstation

  14. resources Proc a Proc b Proc c Escenario II: Usuarios Hóstiles • Consideraciones de seguridad • Servidores con recursos valiosos • Desarrolladores con tendencia a cometer errores • Atacante en potencial control de la entrada/salida del programa Network Firewall Server

  15. Elementos de Java Security • Sandboxing • Access Control: • Politicas • Permisos • Dominios de seguridad • Privilegios • Autenticación y autorización • Arquitectura Criptográfica • JCA & JCE • Lenguaje mas seguro • Typesafety • Strong Type Checking

  16. Security Manager NATIVE CODE VM Java Security Model • JDK 1.0/ JDK 1.1 Local classes Remote classes auth VM bytecode verifier TRUSTED CODE Full Access SANDBOX Restricted Resources: files/network/devices

  17. Security Manager NATIVE CODE VM Java 2 Security Model • Java 2 Local classes Remote classes Class loader Policy bytecode verifier Domain or Security Context Permission Domain or Security Context Set of Permission SANDBOX Restricted Resources: files/network/devices

  18. Java Security API • Java 2 Applications JAAS JSSE GSS Cert Path JCA / JCE Crypto Provider Crypto Provider Crypto Provider

  19. Sandboxing Protección de código potencialmente hóstil

  20. En esencia • Dos niveles de permisos • Untrusted code -> Sandbox • No puede abrir o acceder a archivos • Solo puede establecer conexiones con el servidor origen de la clase • Trusted Code • Sin restricciones • Puede invocar cualquier método, abrir archivos, conexiones o hacer llamadas al sistema.

  21. Mas precisamente • Política • Mayor Granularidad • Asocia Permisos a Dominios/Clases • Permission 1 • Permission 2 • Permission 3 domain A class a class b domain B • Permission 1 • Permission 2 • Permission 3 class c class d domain C • Permission 1 • Permission 2 • Permission 3 Policy

  22. Privilegios • Verificación en runtime • Stackwalk • Intersección de permisos. • Verifica que a y b tengan privilegios class b system class a system domain stack stack stack stack b a

  23. Algunos Ejemplos • Permission • java.io.FilePermission(“/tmp”, “write”) • Policy • grant signedBy “companyA” { • Permission java.io.FilePermission “/tmp” “read” }

  24. Clases y Confianza • Trusted Class: • CLASSPATH • La clase fue cargada desde un directorio listado en CLASSPATH • Signed Class • La clase tiene una firma digital de un origen listado como confiable • Classloaders

  25. El Verificador • Typesafety • Dataflow analisys • Strong type-checking • Pointer arithmetic, access restrictions • Object Methods, Methods arguments • Stack overflows, System calls bytecode class info signature fe 23 12 4a c8 7a be cd Class File - JAR

  26. Java Security Seguridad de Aplicación

  27. #1 Problemas Típicos en otros lenguajes • Ej: Que es un Buffer Overflow? // abo1.c int main(int argc, char *argv[]) { char nombre[20]; strcpy(nombre, argv[1]); return 0; } argc compiler ret address FE7D stackframe stack stack stack stack stack SSSS nombre[20] 6789 2345 8901 4567 0123 01234567890123456789ssssfe7d

  28. Seguridad Java Language • Typesafety • Tipos básicos para Arrays, Lists, Strings • No hay aritmética de punteros • Permisos y Dominios

  29. # 2 Diseño e implementaciones complejas • Dificultades a la hora de implementar: • Autenticación y autorización • Protocolos criptográficos, primitivas y algoritmos. • Canales seguros.

  30. JCA & JCE • Java Cryptographic Architecture / Java Cryptographic Extensions • Clases abstractas para: • Ciphers, hash functions, MACs, signatures • Protocols • Cryptographic providers • Implementations of primitives

  31. JAAS • Java Authentication & Authorization Service • Mecanismos Autenticación de usuarios • Permisos/privilegios y autorizaciones del usuario • PAM

  32. JSSE • Secure Socket API • Implementaciones de SSL & TLS basados en JCA • HTTPS

  33. Inseguridad en Java Problemas y consideraciones

  34. resources resources Proc a Proc a Proc b Proc b Proc c Proc c DNS Attack • Escenario I. Código Hóstil • El atacante controla el servidor de DNS que resuelve para el webserver donde esta el applet dns server Attack-dns appl code a Network Firewall Web server Workstation

  35. Lurking & directory transversal • Escenario I: Código Hóstil • Escenario II: Usuario Hóstil • Directory Transversal & lurking • Attack on temporary file name user: ../../etc/passwd files System class class a

  36. Choosen Plaintext Attack on JCA • Escenario II: Usuario Hóstil • Webmail + Homebanking webmail cookies JCA home banking

  37. Conclusiones

  38. Algunas recomendaciones • Concentrar las interfases entre dominios. • Evaluar y validar cuidadosamente los parámetros. A veces una excepción es suficiente impacto. • Aprovechar el sistema de permisos y segregación. • Atención en particular al uso de servicios de criptografía. • El análisis o auditoría de seguridad es insustituible

  39. Preguntas • Preguntas • Comentarios • Ideas • Etc.

  40. Referencias / 1 • Corelabs • Core Security Technologies • www.corest.com/corelabs • Bugtraq • Difusión de vulnerabilidades • online.securityfocus.com/archive/1 • SecurityFocus • Actualidad y Seguridad • www.securityfocus.com

  41. Referencias / 2 • Java Security FAQ • Respuestas a las preguntas mas frecuentes sobre seguridad en Java, por SUN • java.sun.com/sfaq • JAVA Home Site • Sitio oficial de JAVA • java.sun.com

  42. Referencias / 3 • Secure Internet Programming • Fuente de articulos e información general • www.cs.princeton.edu/sip • Microsoft y JAVA • www.microsoft.com/java/security/default.htm • Netscape y JAVA • developer.netscape.com/docs/manuals/signedobj/capsapi.html

  43. Información de contacto ariel.futoransky@corest.com gerardo.richarte@corest.com www.corest.com Java y Seguridad

More Related