Bem, quando você abre um site, o site pode direcionar o navegador para fazer todo tipo de coisa em seu nome. No caso mais simples, ele apenas enviará textos e imagens para serem exibidos, mas também pode enviar pequenos programas que o navegador executará (em JavaScript, quais navegadores foram incorporados ou usando um plug-in do navegador, como Java ou Flash). .
Em princípio, ficar infectado apenas visitando um site deve ser impossível:
Embora os navegadores executem programas em nome dos sites que você visita, esses programas são cuidadosamente restritos, para que eles possam fazer apenas coisas "inofensivas". De JavaScript, você pode, por exemplo, alterar a página à qual o JavaScript pertence (já que ambos vêm do mesmo site, não pode haver nenhum dano), mas o JavaScript não pode alterar uma página de um site diferente (então um site não pode alterar sua página) exibição de serviços bancários domésticos) e não pode acessar diretamente os arquivos em seu computador.
Existem restrições semelhantes para a maioria dos plugins (pelo menos para Java e Flash). Isso é comumente chamado de sandboxing , pois o código está essencialmente em uma caixa própria, isolado do o computador em que é executado. Em particular, ele não pode ler arquivos em seu disco rígido ou iniciar programas para você, como programas "regulares" em execução no computador.
Agora, a coisa é: enquanto em princípio você está seguro, na prática você pode não estar. A razão é que o sistema sandbox, como todos os programas, possui bugs. Às vezes, esses bugs permitem que um programa "quebre" o sandbox e engane o navegador ou os plugins para que façam coisas que não devem ser autorizados a fazer. Esses truques podem ser bem elaborados.
Exemplos:
- Como os programas comuns, a implementação do navegador ou plug-in pode ter estouros de buffer, o que pode permitir que um website execute códigos especialmente criados, enviando-os ao navegador como entrada.
- Houve uma vulnerabilidade nas versões antigas do plug-in Java da Sun em relação à sandbox. O sandbox desaprovou (e ainda não permite) o acesso a todas as funções Java que podem permitir que um programa cause danos, como ler ou excluir arquivos locais. No entanto, embora o sandbox tenha bloqueado corretamente o acesso a essas funções a partir de um applet Java, os navegadores também permitiam acesso indireto a essas funções do JavaScript (por meio de uma técnica chamada "reflexão"). Esse "backdoor" não havia sido suficientemente considerado pelos desenvolvedores e permitia contornar as restrições do sandbox, quebrando o sandbox. Consulte o link para obter detalhes.
Infelizmente, tem havido várias vulnerabilidades nos sandboxes de JavaScript, Java e Flash, só para citar alguns. Ainda é um tipo de corrida entre hackers mal-intencionados que detectam essas vulnerabilidades para explorá-los e bons hackers e desenvolvedores que os detectam e consertam. Normalmente, eles são corrigidos rapidamente, mas às vezes há uma janela de vulnerabilidade.
BTW: A sandbox é a razão pela qual alguns applets Java exibem um aviso "Você confia neste applet" no lançamento: Esses applets pedem que você os liberte de sua sandbox e forneça acesso para o seu computador. Às vezes isso é necessário, mas só deve ser concedido com boas razões.
PS: O motivo pelo qual o ActiveX (pelo menos nas primeiras versões) era tão terrivelmente inseguro é que o ActiveX fez < em> não usa uma sandbox. Qualquer código ActiveX de uma página da Web tinha acesso total ao seu sistema. Para ser justo, isso foi (parcialmente) corrigido em versões posteriores.