43
Java y Seguridad © 2002 CoreST Corelabs www.corest.com/corelabs titulo Java y Seguridad InformáticaCaracterísitcas y consideraciones en la implementación de software

Java y Seguridad © 2002 CoreST Corelabs titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

Embed Size (px)

Citation preview

Page 1: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 2: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 3: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 4: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 5: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 6: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 7: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 8: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 9: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 10: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 11: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 12: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 13: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 14: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 15: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 16: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 17: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 18: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 19: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 20: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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.

Page 21: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 22: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 23: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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”

}

Page 24: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 25: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 26: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 27: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementació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

Page 28: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 29: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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.

Page 30: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 31: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 32: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 33: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 34: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 35: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 36: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 37: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

Java

y S

eg

urid

ad

© 2

002

Cor

eST

- C

orel

abs

ww

w.c

ores

t.com

/cor

elab

s

Conclusiones

Page 38: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 39: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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.

Page 40: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 41: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 42: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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

Page 43: Java y Seguridad © 2002 CoreST  Corelabs  titulo “ Java y Seguridad Informática ” Caracterísitcas y consideraciones en la implementación

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