JAVA Applet Attack

Esta classe de ataques tem recentemente ganho alguma notoriedade e explora a confiança que os utilizadores depositam em Aplicações Java na Web (Applets).

A maioria dos utilizadores tem a ideia que uma Applet em Java está restringida ao tipo de acções que pode executar na máquina de um utilizador, pois existe uma ‘sandbox’ que isola o Applet do Sistema Operativo. Como tal por mais maliciosa que uma Applet possa ser, o Sistema Operativo nunca será comprometido.

Esta noção é verdadeira para Applets normais, mas Applets que sejam assinadas digitalmente passam a gozar de privilégios completos no Sistema que a executar, de acordo com as próprias permissões que o utilizador tiver.

Atenção que isto aplica-se a qualquer Applet assinada, seja o certificado válido ou não.

Para ilustrar a vulnerabilidade, criou-se uma ‘class’ de Java com o seguinte código:

import java.applet.*; import java.awt.*; import java.io.*; public class Java extends Applet { public void init() { Process f; short osType = -1; try { String os = System.getProperty(“os.name”).toLowerCase(); if (os.indexOf( “win” ) >= 0) { //Windows osType = 0; } String page = getParameter( “nextPage” ); if ( page != null && page.length() > 0 ) { URL urlPage = new URL(page); getAppletContext().showDocument(urlPage); } if ( osType < 1 ) { // Windows f = Runtime.getRuntime().exec(“CMD.exe /c start calc.exe”); f.waitFor(); } } catch(IOException e) { e.printStackTrace(); } catch (Exception exception) { exception.printStackTrace(); } } }

Esta Applet limita-se a verificar que o Sistema Operativo onde está a executar é Windows e executa a calculadora.

Para uma demonstração prática, fazer clique aqui. Esta demonstração é um clone do site do motor de pesquisa Google com a adição de uma Applet que tenta executar a calculadora do Windows redireccionando o utilizador para o Website original.

A Applet é então assinada com um ‘self-signed certificate’ e um utilizador ao aceder a um Website com este ‘payload’ malicioso será apenas confrontado com uma mensagem de certificado inválido, como se pode verificar na imagem seguinte.

blog_java_warning

A maioria dos utilizadores está habituado a ver erros de certificados digitais pelo que é bastante comum simplesmente ignorar o aviso e fazer clique em Run. Sendo que o resultado pode ser observado na seguinte imagem.

Blog java calc

A possibilidade de realização deste tipo de ataques levanta questões sobre que privilégios estão a ser dados às extensões do Browser, tais como o Java, ActiveX, Flash ou outras que são instaladas para os mais diversos fins.
Mitigação
Além de educar os utilizadores para não fazer clique em “Run” quando este género de avisos surgem, uma possível mitigação deste risco é alterar as configurações de Segurança do “Java Runtime Environment” no seu respectivo painel de controlo.
A imagem seguinte demonstra as opções que se podem configurar no Painel de Controlo do Java sendo que se aconselha que sejam sempre validados os certificados das Applets (sublinhado a amarelo) e que seja desactivada a hipótese do utilizador dar permissões a conteúdos cujo certificado não seja possível validar (sublinhado a azul).
Blog java mitigation
Com estas opções activadas, o resultado de um ataque seria diferente, sendo que no caso da nossa demonstração já não seria executada a calculadora e apenas a surgiria a seguinte mensagem.
Blog java fixed
Outra opção de mitigação é simplesmente desinstalar o “plugin” do Java nos browsers se de facto não for utilizado ou no caso do Firefox, utilizar a extensão “NoScript” e ter cuidado com que Websites se permite a execução de Applets.