1 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación de software
2 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Agenda 1.Introducción 2.Estrategia JAVA 3.Sandboxing 4.Java Security – Application Security 5.Inseguridad en Java 6.Conclusiones
4 Java y Seguridad © 2002 CoreST - Corelabs www.corest.com/corelabs Introducción convenciones y fundamentos
5 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Fundamentos de Seguridad Informática Prevención Disuasión Auditoria Privacidad Integridad Autenticidad Disponibilidad Irrefutabilidad Objetivos Política
6 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Un módelo de Riesgo amenaza x vulnerabilidades x impacto contramedidas Abundancia, Recursos Probabilidad o Frecuencia Pérdida, Atractivo Prácticas y tecnologías
7 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs El Escenario El atacante –Perfil –Recursos –Motivaciones Las vulnerabilidades –Características Técnicas –Características Estratégicas
8 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs El Atacante Perfil –Interno / Externo –Oportunista / Plan e intereses –Individuo u organización –Aficionado, profesional Recursos –Conocimiento –Herramientas –Ataques(exploits) –Tiempo
9 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Incidentes CERT/CC Computer Emergency Response Team Coordination Center
10 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Vulnerabilidades Software –Diseño –Implementación –Configuración/puesta en producción Físico Humano Estrategia / Políticas
11 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Bugtraq Estadísticas securityfocus.com
12 Java y Seguridad © 2002 CoreST - Corelabs www.corest.com/corelabs Estrategia de Seguridad Java Escenario y Arquitectura
13 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 resources Proc a Proc b Proc c resources Proc a Proc b Proc c resources Proc a Proc b Proc c appl code a appl code b appl code c Workstation Internet Servers Network Firewall
14 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 resources Proc a Proc b Proc c Server Network Firewall
15 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs VM Java Security Model JDK 1.0/ JDK 1.1 Resources: files/network/devices SANDBOX Restricted TRUSTED CODE Full Access Local classesRemote classes auth Security Manager NATIVE CODE VM bytecode verifier
17 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Java 2 Security Model Java 2 Resources: files/network/devices SANDBOX Restricted Domain or Security Context Permission Security Manager NATIVE CODE VM Domain or Security Context Set of Permission Class loader bytecode verifier Local classesRemote classes Policy
18 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Java Security API Java 2 JCA / JCE JAASJSSEGSS Cert Path Crypto Provider Crypto Provider Crypto Provider Applications
19 Java y Seguridad © 2002 CoreST - Corelabs www.corest.com/corelabs Sandboxing Protección de código potencialmente hóstil
20 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Mas precisamente Política –Mayor Granularidad –Asocia Permisos a Dominios/Clases class a class b class c class d domain A domain B domain C -Permission 1 -Permission 2 -Permission 3 -Permission 1 -Permission 2 -Permission 3 -Permission 1 -Permission 2 -Permission 3 Policy
22 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Privilegios Verificación en runtime Stackwalk –Intersección de permisos. –Verifica que a y b tengan privilegios class a class b system domain a b system stack stack
23 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Algunos Ejemplos Permission –java.io.FilePermission(“/tmp”, “write”) Policy –grant signedBy “companyA” { Permission java.io.FilePermission “/tmp” “read” }
24 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs El Verificador Typesafety –Dataflow analisys –Strong type-checking Pointer arithmetic, access restrictions Object Methods, Methods arguments Stack overflows, System calls fe23124ac87abecd bytecodeclass infosignature Class File - JAR
26 Java y Seguridad © 2002 CoreST - Corelabs www.corest.com/corelabs Java Security Seguridad de Aplicación
27 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs #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; } nombre[20] stackframe ret address argc stack stack stack stack stack compiler 01234567890123456789ssssfe7d 6789 2345 8901 4567 0123 SSSS FE7D
28 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Seguridad Java Language Typesafety Tipos básicos para Arrays, Lists, Strings No hay aritmética de punteros Permisos y Dominios
29 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs # 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 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs JCA & JCE Java Cryptographic Architecture / Java Cryptographic Extensions Clases abstractas para: –Ciphers, hash functions, MACs, signatures –Protocols Cryptographic providers –Implementations of primitives
31 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs JAAS Java Authentication & Authorization Service Mecanismos Autenticación de usuarios Permisos/privilegios y autorizaciones del usuario PAM
32 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs JSSE Secure Socket API Implementaciones de SSL & TLS basados en JCA HTTPS
33 Java y Seguridad © 2002 CoreST - Corelabs www.corest.com/corelabs Inseguridad en Java Problemas y consideraciones
34 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs DNS Attack Escenario I. Código Hóstil El atacante controla el servidor de DNS que resuelve para el webserver donde esta el applet resources Proc a Proc b Proc c resources Proc a Proc b Proc c appl code a Workstation Web server Network Firewall Attack-dns dns server
35 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Lurking & directory transversal Escenario I: Código Hóstil Escenario II: Usuario Hóstil Directory Transversal & lurking Attack on temporary file name class a System class user:../../etc/passwd files
36 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Choosen Plaintext Attack on JCA Escenario II: Usuario Hóstil Webmail + Homebanking JCA webmail home banking cookies
37 Java y Seguridad © 2002 CoreST - Corelabs www.corest.com/corelabs Conclusiones
38 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs 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 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Preguntas Comentarios Ideas Etc.
40 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Referencias / 1 Corelabs –Core Security Technologies –www.corest.com/corelabswww.corest.com/corelabs Bugtraq –Difusión de vulnerabilidades –online.securityfocus.com/archive/1online.securityfocus.com/archive/1 SecurityFocus –Actualidad y Seguridad –www.securityfocus.comwww.securityfocus.com
41 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Referencias / 2 Java Security FAQ –Respuestas a las preguntas mas frecuentes sobre seguridad en Java, por SUN –java.sun.com/sfaqjava.sun.com/sfaq JAVA Home Site –Sitio oficial de JAVA –java.sun.comjava.sun.com
42 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Referencias / 3 Secure Internet Programming –Fuente de articulos e información general –www.cs.princeton.edu/sipwww.cs.princeton.edu/sip Microsoft y JAVA –www.microsoft.com/java/security/default.htmwww.microsoft.com/java/security/default.htm Netscape y JAVA –developer.netscape.com/docs/manuals/signedobj/capsapi.htmldeveloper.netscape.com/docs/manuals/signedobj/capsapi.html
43 Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs Información de contacto [email protected] [email protected] www.corest.com Java y Seguridad