1. INTRODUÇÃO
Com o avanço no uso da Internet, a criação de ferramentas que facilitam o desenvolvimento de aplicativos é inevitável, pois a busca do aperfeiçoamento tecnológico na disseminação de informações através da Internet é cada vez maior. O WWW tem se mostrado uma das ferramentas mais utilizadas na Internet para a disseminação de informações, bem como a de maior e mais rápida evolução.
Juntamente com a utilização do WWW, que codifica suas páginas em linguagem HTML, surgiram diversos tipos de aplicativos que foram integrando suas funcionalidades ao Browser WWW. Estes aplicativos interagem com a linguagem HTML visando melhorar os recursos oferecidos para quem desenvolve as páginas que serão disponibilizadas na Internet. A utilização de Applets Java, que derivou da linguagem Java, é um exemplo de aplicativo que foi incorporado na linguagem HTML.
Para desenvolvedores de páginas WWW que estão interessados em melhorar os recursos oferecidos por suas páginas, os aplicativos que foram incorporados na linguagem HTML têm se mostrado de grande utilidade, mas há quem use suas potencialidades de maneira indevida, furando esquemas de segurança e proporcionando incômodo para quem os acessa.
A designação de conteúdo executável hostil será evidente quando após o recebimento , sua execução tentar monopolizar ou explorar os recursos do sistema de uma maneira indevida e sem autorização.
Um conteúdo executável hostil pode violar as políticas de segurança e conseguir rodar códigos nativos dentro da máquina que os recebeu, tomando o controle total do sistema.
Este tipo de comportamento vem ressaltar que o acesso aos conteúdos executáveis por pessoas que desconhecem suas potencialidades pode ser perigoso, pois quem está navegando na Internet não sabe quando seu Browser está recebendo um conteúdo executável, desconhecendo também qual vai ser o resultado de sua execução.
Não são comuns ferramentas que consigam bloquear um ataque cujo intermediário é a própria aplicação, isto é, o bloqueio a um protocolo de aplicação não é comumente factível, pois a maioria dos esquemas atuais de proteção para redes corporativas ligadas à Internet não controlam este tipo de acesso.
A maioria dos esquemas de segurança para Intranets que estão ligadas à Internet são baseadas nas Firewalls. Elas conseguem bloquear o acesso indevido baseando-se na filtragem dos protocolos de nível 3 (Rede) e 4 (Transporte) do Modelo de Referência ISO/OSI, IP e TCP respectivamente na arquitetura Internet. Como um conteúdo executável faz parte da aplicação, eles conseguem acessar qualquer máquina, estando esta dentro de uma Intranet teoricamente protegida por uma Firewall ou diretamente ligada à Internet, desde que a Firewall não tenha um filtro que impeça a entrada de alguns conteúdos executáveis para o interior de uma Intranet. Mesmo assim ataques que utilizam tecnologias em conjunto podem ignorar os filtros impostos por algumas Firewalls.
2. CARACTERÍSTICAS FUNCIONAIS DOS CONTEÚDOS EXECUTÁVEIS
Como são várias as tecnologias empregadas na construção de conteúdos executáveis e cada uma delas possui características próprias, nas próximas sessões cada uma delas é detalhada.
2.1 Applet Java
A linguagem Java foi desenvolvida pela Sun Microsystems para possibilitar que aplicações e Applets pudessem ser desenvolvidos, sendo diferenciada da seguinte maneira: Aplicações Java são desenvolvidas para serem executadas por um interpretador Java, dentro de um ambiente Java e os Applets Java são executados por um Runtime da linguagem Java que está embutido nos Browsers WWW.
Quando um Browser recebe um Applet para ser executado, pelas definições de segurança impostas pela linguagem, este Applet teria uma execução restrita dentro da máquina do usuário, isto é, o recebimento de Applets Java pelo Browser WWW não deveria causar riscos às máquinas, não importando se este Applet foi carregado de uma Intranet ou da Internet. Por sua definição as ações executadas por um Applet Java estão restritas a uma área no Browser WWW dedicada ao Applet, sendo esta área chamada de Sandbox. Um Applet pode fazer qualquer coisa dentro da Sandbox, mas não pode ler, gravar ou executar nada que esteja fora do alcance da Sandbox. A Sandbox visava garantir que se o usuário receber um Applet hostil, ele não provocará nenhum dano na máquina. Uma Sandbox é constituída pelos seguintes elementos: Características de Segurança, verificação do ByteCode, ClassLoader e gerente de segurança.
Características de Segurança : Esta parte é responsável pelas definições de funcionamento da linguagem Java que irão tentar impedir que os ataques mais comuns possam ser aplicados utilizando artifícios de programação. Para exemplificar uma das características de segurança da linguagem Java, podemos dizer que um programador Java não poderá forjar endereços para a memória, pois a alocação e o modelo de referência da memória são totalmente obscuros, sendo controlados pelo sistema Runtime da plataforma.
Verificação do ByteCode : Quando um compilador Java compila um código fonte ele gera um ByteCode. Para o Runtime da linguagem, um fragmento compilado de código pode ter vindo de qualquer parte de uma rede, e não se sabe se o compilador que gerou o ByteCode era confiável ou não, isto é, se ele seguiu ou não as regras de segurança especificadas pelo fabricante da Linguagem Java. O Runtime da linguagem simplesmente não confia nos ByteCodes que são trazidos pela rede, e submete-os a uma série de verificações. Estas verificações tentam garantir que o código que será passado para o Interpretador Java estará apto para ser executado sem nenhum problema.