Possível duplicata:
Um computador pode ser infectado por malware através do navegador da web?
É do conhecimento geral que você pode obter um vírus apenas visitando um site. Mas como isso é possível?
Esses vírus atacam usuários de Windows, Mac e Linux ou são imunes a usuários de Mac / Linux?
Entendo que obviamente obtenho um vírus baixando e executando um .exe no Windows, mas como posso obter um vírus apenas acessando um site?
Os vírus estão programados em JavaScript? (Faria sentido, pois é uma linguagem de programação executada localmente.) Se sim, quais funções JavaScript são as mais usadas?
Respostas:
Exemplos em parênteses. Há um erro no navegador (IE), no interpretador javascript ou em um plug-in (como flash ou java). Esse bug leva à execução do código - essa parte pode ser realmente complicada, mas geralmente envolve um bug após o uso e manipulação de heap .
Então eu tenho algum código de shell em execução. O shellcode deve escapar de todas as proteções que o navegador possui - para um bug do V8 / Chrome, você teria que escapar da sandbox do chrome e derrotar a DEP e a ASLR. Para o IE, você teria que vencer a DEP e a ASLR e sair do modo de baixa integridade. Para Java, você teria que ... não fazer nada - você é todo de ouro. (É por isso que houve uma série de bugs de java.)
Então agora que eu tenho código arbitrário em execução em sua máquina, como você (você não está executando como administrador, certo?), Posso baixar um arquivo da Internet e executá-lo, eliminando alguns malwares em sua máquina.
Especificamente - não. Javascript é um vetor de ataque que as pessoas usarão para encontrar um bug em um navegador. Eles também podem usar Flash, Java ou Silverlight como um vetor de ataque. No caso do javascript, eles escrevem javascript para acionar o bug do navegador e, em seguida, o vírus é finalmente retirado da Internet.
fonte
Infelizmente e perversamente, existem inúmeras maneiras de isso acontecer.
Você está absolutamente certo de ficar surpreso que um "dispositivo de leitura" como um navegador possa manipular ativamente seu próprio sistema (e causar danos). Ler um livro não esgota sua conta bancária e abrir um jornal não prejudica seus filhos, então por que a abertura de um site pode fazer tudo isso e muito mais?
O problema ocorre sempre que existe a possibilidade de que dados externos da Internet, que devemos sempre assumir como criados com a maior intenção maliciosa, de alguma forma consigam ser executados pelo seu sistema.
Se você apenas se sentar na linha de comando e digitar
wget http://evil.com/hitme.php
, o cliente HTTP wget simplesmente gravará um despejo binário da solicitação em seu disco e nada de ruim aconteceu (exceto o preenchimento do disco). Mas se você digitar o endereço no seu navegador, ele estará livre para fazer o que quiser - formate seu disco rígido, envie os detalhes do seu cartão de crédito, etc. Depende de você confiar no seu navegador para não fazer isso. A maioria dos navegadores realmente tenta não fazer essas coisas ruins, mas nós, os usuários deovelhas, exigimos que os navegadores possam fazer cada vez mais "truques inteligentes" e exibir comportamento automático com base nas instruções da Internet. Nossas demandas levaram à criação de tecnologias de execução de código do lado do cliente, como JavaScript e Flash, que baixam código arbitrário, estrangeiro, não confiável e malicioso e o executam, tudo para nosso prazer.A razão pela qual as pessoas que criaram essas tecnologias não foi imediatamente linchada é porque: a) fez os coelhos dançarem em nossas telas; eb) alegaram que colocavam verificações de segurança suficientes no design para impedir que códigos maliciosos arbitrários manipulassem o sistema local (por exemplo, não permitindo ler / gravar os discos locais, ler / gravar a área de transferência, ler / gravar campos de formulário em outras guias).
Infelizmente, a abordagem de design para "primeiro permitir tudo e depois encobrir alguns pontos ruins em que podemos pensar" é fundamentalmente falha, e agora estamos enfrentando um fluxo interminável de novas maneiras pelas quais nossos recursos de conveniência do cliente podem ser usado para comprometer nossos sistemas.
A única saída moderadamente segura é desativar o JavaScript e os plugins no seu navegador. Seguro como estávamos em 1995.
fonte
O ponto que realmente foi evitado nessas respostas, que eu realmente quero responder, é o seguinte: a razão pela qual você pode obter um vírus em uma página da Web é que algum software que você está executando possui um bug - uma vulnerabilidade de segurança .
Em todas as etapas do processo de criação do software, os criadores do Flash; do seu navegador; do seu sistema operacional tentaram garantir que códigos maliciosos e aleatórios da Internet não descubram apenas uma maneira de se executar. Infelizmente, fazer isso é difícil . Muito difícil .
Portanto, como todos os humanos, os desenvolvedores deste software cometem erros: o analisador de HTML substitui acidentalmente um byte na pilha quando você finaliza o html
</p
. Eles acidentalmente usaram um emsigned int
vez de umunsigned int
. O compilador JIT javascript tenta desreferenciar um índice de matriz em um ponteiro nulo. Todas essas vulnerabilidades, além de milhões, ocorrem o tempo todo no software, devido à falta de conhecimento de segurança ou supervisão, ou mesmo um simples erro. Software é simplesmente maneira muito complexa para pegá-los todos.Por esse motivo, os sistemas operacionais possuem mecanismos internos para evitar danos ao sistema, mesmo quando uma vulnerabilidade é encontrada. Seu sistema operacional provavelmente possui DEP e ASLR . Os programas podem ter várias proteções adicionadas pelo compilador. Navegadores rodam em privilégios mais baixos. Os programas são executados através de análises e testes automáticos que podem detectar muitas dessas vulnerabilidades.
Meu argumento é que ninguém está deixando isso acontecer - mas é impossível projetar software completamente seguro, assim como é impossível projetar um cofre completamente seguro. Alguém com tempo, conhecimento, dinheiro e incentivos suficientes sempre encontrará uma maneira de abri-lo. E o problema com esse cofre é que, uma vez que alguns hackers abrem sua cópia, eles podem facilmente abrir outras cópias ao redor do mundo sem sair do quarto.
fonte
Suas perguntas específicas
Seu navegador está executando código o tempo todo (é feito de código). Ao baixar páginas da Web, esse código está baixando e exibindo dados arbitrários (pixels, caracteres, etc.).
Código também é dados (no nível do processador).
Como o código é um dado, se o navegador tentar executá-lo (independentemente da extensão ou formato do arquivo), ele poderá realmente ser executado (se criado corretamente).
Normalmente, seu navegador não será tão tolo a ponto de tentar executar dados aleatórios baixados. No entanto, isso pode acontecer.
Uma maneira de fazer isso é formar os dados de forma que, quando lidos, "vazem" e sobrescrevam os dados que compõem o programa executável do navegador. Isso requer que o navegador tenha um erro (mais comumente nesse caso, permitindo a saturação do buffer ).
Seu navegador também executa programas no topo das páginas da web. Javascript, como você mencionou, é um desses tipos de código. Mas existem dezenas. ActiveX, Flash, complementos, scripts de macaco de graxa, etc. são todos os códigos que você está executando enquanto visita páginas da web. Esse código pode conter bugs que causam culotes de segurança.
Nenhuma plataforma que usamos é completamente imune a bugs, porque todos eles usam processadores que tratam dados como código. É simplesmente assim que nossa arquitetura existente de computadores funciona.
A razão para esse mito é que o Mac e o Linux têm taxas de adoção muito mais baixas em comparação com as máquinas Windows (no nível da área de trabalho). Portanto, o software de desktop nessas máquinas não é um alvo tão comum para os fabricantes de vírus.
Os vírus não ocorrem por mágica ou por evolução da situação (como os vírus biológicos). É um software escrito por indivíduos ou equipes de desenvolvedores. E eles querem atingir a maior fatia do mercado, da mesma forma que os fornecedores regulares de software.
Quanto à possibilidade de um vírus atingir várias plataformas; Todos os navegadores estão executando código diferente, portanto, haverá bugs diferentes (mesmo o mesmo navegador em plataformas diferentes). Mas existem algumas bibliotecas de código que são compartilhadas entre plataformas. Se essa biblioteca contiver o erro, é possível que a exploração exista em várias plataformas.
Mas, dependendo do tipo de ataque realizado, um vírus criado para um Mac não-Intel pode não funcionar em um Mac Intel e vice-versa, porque eles têm processadores diferentes. Para processadores diferentes, os dados que representam o código têm um formato diferente.
Porém, quando você está falando de uma máquina virtual ou linguagem de script, os ataques podem ser independentes de plataforma. Isso nos leva à próxima pergunta ...
Alguns vírus são. As informações que afirmei acima (sobre explorações de saturação de buffer) normalmente seriam usadas como um ataque fora do Javascript, mas poderiam igualmente se aplicar a um vírus criado para atacar uma exploração em um intérprete Javascript.
O Javascript também terá seu próprio conjunto de explorações, em um nível operacional acima da saturação de buffer. Existem várias maneiras de atacar qualquer parte do software. Quanto maior o software (linhas de código), mais variedades de entrada do usuário (nesse caso, tipos de código) provavelmente receberão e mais erros poderão conter.
Além disso, quanto mais exposto um software em execução (por exemplo, software executando um servidor), mais vulnerável é o ataque.
Em geral, isso é chamado de superfície de ataque
Façanhas em geral
A Microsoft possui um mnemônico para tipos comuns de exploração, e todos eles têm suas próprias propriedades interessantes e diferentes níveis de software que podem atacar - STRIDE , que significa:
Algumas delas têm mais probabilidade de serem usadas em um ataque baseado em Javascript do que outras, algumas em servidores e outras em arquivos de dados (como imagens).
Mas a segurança é um campo grande e em evolução. Há realmente muita informação para responder completamente a todas as suas perguntas.
fonte
O termo é chamado "Drive By Download"
Aqui está um bom exemplo de como isso acontece sem que você faça nada além de visitar um site.
fonte
O truque é que os fabricantes de vírus / especialistas em segurança encontram brechas nos navegadores. Em palavras simples, eles encontram um buraco na segurança do navegador e podem usá-lo para fazer algo no seu sistema. Há casos em que o Adobe Flash possui falhas e, com código específico, pode ser explorado. Também existem seqüências de caracteres javascript que podem acionar essas falhas de segurança.
No entanto, se você mantiver seu navegador atualizado, é muito improvável que você seja infectado apenas visitando um site (baixar arquivos e executá-los é outra história!)
fonte
Vírus como os que o infectam visitando um site exploram uma falha no sistema de visitas. Por exemplo, um navegador ou plug-in pode ter uma falha na programação para permitir que uma imagem (acidentalmente, da perspectiva do desenvolvedor do navegador) execute um comando arbitrário no computador visitante.
Como tal, supostamente todo sistema operacional é uma vítima em potencial, mas os criadores de vírus geralmente estruturam seus ataques com base em economias de escala - quanto mais usuários, melhor. É por isso que o Windows e o Internet Explorer são mais direcionados.
Qualquer parte de um navegador ou plug-in pode ser direcionada por um vírus. A imagem acima mencionada que causou um vírus foi um exemplo real. Flash é um alvo comum. O mecanismo JavaScript nos navegadores também é. Há muitas coisas diferentes que podem dar errado.
Sua melhor aposta é executar um antivírus de qualidade. Eu usei o NOD32 da Eset . Além disso, não clique em algo se for bom demais para ser verdade. Use NoScript no Firefox e AdBlock .
fonte
Se um site consegue violar a segurança do seu navegador, que poderia mexer com qualquer coisa que pertence a você no computador. No entanto, se ele puder escalar seus privilégios e obter acesso administrativo, poderá atrapalhar qualquer coisa no sistema.
Há muito se afirma que é mais difícil obter privilégios administrativos em uma máquina Unix (por exemplo, Linux, Mac ou BSD) do que no Windows. No entanto, a recente reformulação (como no Windows Vista) de recursos de segurança da Microsoft pode ter tornado o Windows muito mais seguro do que antes - ou pelo menos, é nisso que eles acreditam.
fonte