430 likes | 525 Views
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
E N D
titulo “Java y Seguridad Informá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 • Conocer los problemas de seguridad mas comunes en soluciones Java
Agenda • Introducción • Estrategia JAVA • Sandboxing • Java Security – Application Security • Inseguridad en Java • Conclusiones
Introducción convenciones y fundamentos
Fundamentos de Seguridad Informática • Prevención • Disuasión • Auditoria • Privacidad • Integridad • Autenticidad • Disponibilidad • Irrefutabilidad Objetivos Política
Un módelo de Riesgo Abundancia, Recursos Probabilidad o Frecuencia Pérdida, Atractivo amenaza x vulnerabilidades x impacto contramedidas Prácticas y tecnologías
El Escenario • El atacante • Perfil • Recursos • Motivaciones • Las vulnerabilidades • Características Técnicas • Características Estratégicas
Perfil Interno / Externo Oportunista / Plan e intereses Individuo u organización Aficionado, profesional Recursos Conocimiento Herramientas Ataques(exploits) Tiempo El Atacante
Incidentes CERT/CC • Computer Emergency Response Team Coordination Center
Vulnerabilidades • Software • Diseño • Implementación • Configuración/puesta en producción • Físico • Humano • Estrategia / Políticas
Bugtraq Estadísticas securityfocus.com
Estrategia de Seguridad Java Escenario y Arquitectura
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
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
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
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
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
Java Security API • Java 2 Applications JAAS JSSE GSS Cert Path JCA / JCE Crypto Provider Crypto Provider Crypto Provider
Sandboxing Protección de código potencialmente hóstil
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.
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
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
Algunos Ejemplos • Permission • java.io.FilePermission(“/tmp”, “write”) • Policy • grant signedBy “companyA” { • Permission java.io.FilePermission “/tmp” “read” }
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
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
Java Security Seguridad de Aplicación
#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
Seguridad Java Language • Typesafety • Tipos básicos para Arrays, Lists, Strings • No hay aritmética de punteros • Permisos y Dominios
# 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.
JCA & JCE • Java Cryptographic Architecture / Java Cryptographic Extensions • Clases abstractas para: • Ciphers, hash functions, MACs, signatures • Protocols • Cryptographic providers • Implementations of primitives
JAAS • Java Authentication & Authorization Service • Mecanismos Autenticación de usuarios • Permisos/privilegios y autorizaciones del usuario • PAM
JSSE • Secure Socket API • Implementaciones de SSL & TLS basados en JCA • HTTPS
Inseguridad en Java Problemas y consideraciones
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
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
Choosen Plaintext Attack on JCA • Escenario II: Usuario Hóstil • Webmail + Homebanking webmail cookies JCA home banking
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
Preguntas • Preguntas • Comentarios • Ideas • Etc.
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
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
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
Información de contacto ariel.futoransky@corest.com gerardo.richarte@corest.com www.corest.com Java y Seguridad