Upload
victoria-rey-mendoza
View
215
Download
2
Embed Size (px)
Citation preview
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
titulo
“Java y Seguridad Informática” Caracterísitcas y consideraciones en la implementación de software
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Agenda
1. Introducción
2. Estrategia JAVA
3. Sandboxing
4. Java Security – Application Security
5. Inseguridad en Java
6. Conclusiones
Java
y S
eg
urid
ad
© 2
002
Cor
eST
- C
orel
abs
ww
w.c
ores
t.com
/cor
elab
s
Introducciónconvenciones y fundamentos
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Fundamentos de Seguridad Informática
• Prevención• Disuasión • Auditoria
• Privacidad• Integridad• Autenticidad• Disponibilidad• Irrefutabilidad
Objetivos
Política
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Un módelo de Riesgo
amenaza x vulnerabilidades x impactocontramedidas
Abundancia,Recursos
Probabilidad o Frecuencia
Pérdida,Atractivo
Prácticas y tecnologías
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
El Escenario
• El atacante– Perfil– Recursos– Motivaciones
• Las vulnerabilidades– Características Técnicas– Características Estratégicas
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
El Atacante
•Perfil–Interno / Externo
–Oportunista / Plan e intereses
–Individuo u organización
–Aficionado, profesional
• Recursos
–Conocimiento
–Herramientas
–Ataques(exploits)
–Tiempo
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Incidentes CERT/CC
• Computer Emergency Response Team Coordination Center
Incidentes de Seguridad
05000
1000015000200002500030000
1999 2000 2001
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Vulnerabilidades
• Software– Diseño– Implementación– Configuración/puesta en producción
• Físico
• Humano
• Estrategia / Políticas
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Bugtraq
Estadísticas securityfocus.com
Java
y S
eg
urid
ad
© 2
002
Cor
eST
- C
orel
abs
ww
w.c
ores
t.com
/cor
elab
s
Estrategia de Seguridad JavaEscenario y Arquitectura
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Pro
c a
Pr o
c b
Pr o
c c
resources
Pro
c a
Pr o
c b
Pr o
c c
appl code a
appl code b
appl code c
Workstation Internet Servers
NetworkFirewall
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
NetworkFirewall
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs VM
Java Security Model
• JDK 1.0/ JDK 1.1
Resources: files/network/devices
SANDBOXRestricted
TRUSTED CODEFull Access
Local classes Remote classes
auth
Security Manager NATIVE CODEVM
bytecode verifier
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Java 2 Security Model
• Java 2
Resources: files/network/devices
SANDBOXRestricted
Domain or Security Context
Permission
Security Manager NATIVE CODEVM
Domain or Security Context Set of Permission
Class loader
bytecode verifier
Local classes Remote classes
Policy
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Java Security API
• Java 2
JCA / JCE
JAAS JSSE GSSCertPath
CryptoProvider
CryptoProvider
CryptoProvider
Applications
Java
y S
eg
urid
ad
© 2
002
Cor
eST
- C
orel
abs
ww
w.c
ores
t.com
/cor
elab
s
SandboxingProtección de código potencialmente hóstil
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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.
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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 3Policy
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Privilegios
• Verificación en runtime• Stackwalk
– Intersección de permisos. – Verifica que a y b tengan privilegios
class a
class b
systemdomain
a
b
system
stac
k st
ack
stac
k st
ack
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Algunos Ejemplos
• Permission– java.io.FilePermission(“/tmp”, “write”)
• Policy– grant signedBy “companyA” {
• Permission java.io.FilePermission “/tmp” “read”
}
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
El Verificador• Typesafety
– Dataflow analisys– Strong type-checking
• Pointer arithmetic, access restrictions• Object Methods, Methods arguments• Stack overflows, System calls
fe 23 12 4a c8 7a be cd
bytecode class info signature
Class File - JAR
Java
y S
eg
urid
ad
© 2
002
Cor
eST
- C
orel
abs
ww
w.c
ores
t.com
/cor
elab
s
Java SecuritySeguridad de Aplicación
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
#1 Problemas Típicos en otros lenguajes
• Ej: Que es un Buffer Overflow?
// abo1.cint main(int argc, char *argv[]){ char nombre[20];
strcpy(nombre, argv[1]); return 0;}
nombre[20]
stackframe
ret address
argc
stac
k st
ack
stac
k st
ack
stac
k
compiler
01234567890123456789ssssfe7d
67892345890145670123
SSSS
FE7D
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Seguridad Java Language
• Typesafety
• Tipos básicos para Arrays, Lists, Strings
• No hay aritmética de punteros
• Permisos y Dominios
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
# 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.
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
JCA & JCE
• Java Cryptographic Architecture / Java Cryptographic Extensions
• Clases abstractas para:– Ciphers, hash functions, MACs,
signatures– Protocols
• Cryptographic providers– Implementations of primitives
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
JAAS
• Java Authentication & Authorization Service
• Mecanismos Autenticación de usuarios
• Permisos/privilegios y autorizaciones del usuario
• PAM
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
JSSE
• Secure Socket API
• Implementaciones de SSL & TLS basados en JCA
• HTTPS
Java
y S
eg
urid
ad
© 2
002
Cor
eST
- C
orel
abs
ww
w.c
ores
t.com
/cor
elab
s
Inseguridad en JavaProblemas y consideraciones
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Pro
c a
Pr o
c b
Pr o
c c
appl code a
Workstation Web server
NetworkFirewall
Attack-dns
dns server
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Lurking & directory transversal
• Escenario I: Código Hóstil• Escenario II: Usuario Hóstil• Directory Transversal & lurking• Attack on temporary file name
class aSystemclass
user: ../../etc/passwd
files
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Choosen Plaintext Attack on JCA
• Escenario II: Usuario Hóstil• Webmail + Homebanking
JCA
webmail
homebanking
cookies
Java
y S
eg
urid
ad
© 2
002
Cor
eST
- C
orel
abs
ww
w.c
ores
t.com
/cor
elab
s
Conclusiones
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Preguntas
• Preguntas
• Comentarios
• Ideas
• Etc.
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
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
Java
y S
eg
urid
ad
© 2
002
Cor
eST
C
orel
abs
ww
w.c
ores
t.co
m/c
orel
abs
Información de contacto
[email protected]@corest.comwww.corest.com
Java
y S
eg
urid
ad