Seguridad en Java 

Qué es Java 

Barreras de seguridad 

Prohibido 

Líneas futuras 

Cómo firmar applets 

Consejos 

Recursos 

Agujeros de seguridad en Java

Robo de información

Ataques
Robo de información
Destrucción de información
Robo de recursos
Denegación de servicio
Enmascaramiento
Engaño
Línea Maginot

En principio, todos los ordenadores contienen alguna información de interés para alguien. Es cierto que no siempre tendrá el mismo valor, pero siempre puede existir alguien interesado en conseguirla. Por consiguiente, uno de los ataques más comunes está dirigido a extraer información confidencial de un sistema.

Con el fin de que ninguna applet de Java pudiera hacerlo, se decidió que no tendrían acceso al sistema de ficheros, lo que significa que no se puede leer, escribir, borrar, renombrar, o listar ficheros. Además se les negó el acceso al sistema, para que no puedieran ejecutar comandos que manipulen ficheros (pensemos en el famoso rm -rf / de Unix) ni acceder a propiedades del sistema que contengan información confidencial (nombres de usuario, contraseñas, versiones de programas, etc.) o que pudiera revelar debilidades.

En concreto, el gestor de seguridad define los siguientes métodos públicos de la clase SecurityManager para evitar estos ataques:

Método Descripción
checkDelete(String) Comprueba si se puede borrar el fichero de nombre String.
checkRead
(FileDescriptor)
Comprueba si se puede leer el fichero indicado por FileDescriptor.
checkRead(String) Comprueba si se puede leer el fichero de nombre String.
checkRead(String, Object) Comprueba si se puede leer el fichero en el contexto de seguridad actual.
checkWrite
(FileDescriptor)
Comprueba si se puede escribir el fichero indicado por FileDescriptor.
checkWrite(String) Comprueba si se puede escribir el fichero de nombre String.
checkFileDialog() Las applets no pueden abrir cuadros de diálogo de ficheros.
checkExec(String) Determina si se puede crear un subproceso para el comando especificado.
checkExit(int) Determina si el proceso en curso puede detener la Máquina Virtual Java (JVM) con el código de salida especificado.
CheckPropertiesAccess() Determina si se puede acceder a las propiedades del sistema.
CheckPropertyAccess
(String)
Determina si el proceso en curso puede acceder a la variable de entorno especificada.

Desgraciadamente, existen métodos indirectos que permiten explorar los contenidos del disco duro.

 

Copyright © 1997-1999 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.