Seguridad en Java 

Qué es Java 

Prohibido 

Agujeros 

Líneas futuras 

Cómo firmar applets 

Consejos 

Recursos 

Barreras de seguridad en Java

Modelo de las 4 capas
Lenguaje
Verificador
Cargador
Gestor

Verificador de Códigos de Bytes

Sólo permite ejecutar código de bytes de programas Java válidos, buscando intentos de:

  • fabricar punteros,
  • ejecutar instrucciones en código nativo,
  • llamar a métodos con parámetros no válidos,
  • usar variables antes de inicializarlas,
  • etc.

El verificador efectúa cuatro pasadas sobre cada fichero de clase:

  • En la primera, se valida el formato del fichero
  • En la segunda, se comprueba que no se instancien subclases de clases final
  • En la tercera, se verifica el código de bytes: la pila, registros, argumentos de métodos, opcodes
  • En la cuarta, se finaliza el proceso de verificación, realizándose los últimos tests

Si el verificador aprueba un fichero .class, se le supone que cumple ya con las siguientes condiciones:

  • Acceso a registros y memoria válidos
  • No hay overflow o underflow de pila
  • Consistencia de tipo en parámetros y valores devueltos
  • No hay conversiones de tipos ni castings ilegales

Aunque estas comprobaciones sucesivas deberían garantizar que sólo se ejecutarán applets legales, ¿qué pasaría si la applet carga una clase propia que reemplace a otra crítica del sistema, p.e. SecurityManager?

Para evitarlo, se erigió la tercera línea defensa, el cargador de clases.

 

Copyright © 1997-1998 Gonzalo Álvarez Marañón, CSIC. Todos los derechos reservados.

Criptonomicón es un servicio ofrecido libremente desde el Instituto de Física Aplicada del CSIC. Para información sobre privacidad, por favor consulte la declaración de política sobre privacidad. Para sugerencias, comentarios o quejas, acuda al libro de visitas. Para contribuir al Criptonomicón, lea la página de contribuciones.