Categorias

Como bloquear mineradores de moedas virtuais

A notícia de que o The Pirate Bay sequestrou a CPU de visitantes para minerar moeda virtual pegou todo mundo de surpresa e jogou uma luz sobre uma controversa forma de monetização.

O serviço via JavaScript não foi desenvolvido pelo The Pirate Bay, mas através de uma empresa conhecida como Coinhive. Uma biblioteca JavaScript chamada a partir do HTML de uma página pode transformar qualquer site de internet em uma oficina de mineração enquanto a página estiver aberta em qualquer navegador.

Foi apenas uma questão de dias para que o relato de outras páginas utilizando o mesmo recurso começasse a aparecer na internet, incluindo de grandes empresas. A perspectiva de que hackers possam invadir servidores em larga escala e injetar o código para benefício próprio, como faziam no passado com anúncios de spam, apenas agrava o desconforto dos usuários que não desejam emprestar seus ciclos de processamento a contragosto.

Mas, o quanto impacta essa mineração de moeda virtual através de JavaScript? Um bocado.

Esse é o gráfico da minha CPU durante um minuto de utilização normal:

Agora, durante a realização de um teste no site dos principais fornecedores desse tipo de serviço:

Agora, imagine navegar pela internet se 30% dos sites passarem a adotar esse modelo de monetização. Imagine o consumo de energia, a redução de vida útil do processador, a lentidão das outras atividades exercidas no dispositivo…

Como bloquear?

O caminho mais óbvio é bloquear o uso de JavaScript no navegador. Entretanto, com tantos serviços na internet que dependem do funcionamento desse recurso, essa é uma solução recomendada apenas para os mais radicais.

Outra alternativa é a adoção de bloqueadores de anúncios, que estão se atualizando e muitos deles já estão capacitados para suspender o funcionamento do código do Coinhive e similares. Porém, essa é uma solução com sua própria carga de controvérsia.

Para quem deseja bloquear os mineradores e somente os mineradores, uma boa opção é a extensão No Coin, disponível para o Google Chrome. Ela faz o que promete, impedindo o carregamento do código JavaScript desse tipo de serviço e nada mais. A solução também está disponível para Firefox (e inclusive é compatível com o novo padrão de plugins que será obrigatório a partir de Novembro, com o Firefox Quantum). Por enquanto, não há uma alternativa em forma de plugin para o Microsoft Edge.

A Solução Hosts

Uma outra forma de bloquear os serviços de mineração de moedas virtuais é através da manipulação do arquivo hosts do sistema. É um simples arquivo de texto do sistema operacional que relaciona sites com endereços IP, praticamente um DNS pessoal. Para acessá-lo rapidamente, direto no Bloco de Notas, digite “notepad %windir%\System32\drivers\etc\hostsb” na caixa Executar do Windows (que você pode chamar com Win+R).

hosts

Em condições normais, você deve encontrar uma descrição (em inglês) do que o arquivo Hosts faz, alguns exemplos e nada mais. O que pode ser feito nesse caso é adicionar uma linha extra para cada domínio de um destes serviços que oferecem mineração por JavaScript, redirecionando a chamada para seu localhost e gerando um timeout.

No momento, essas seriam as linhas a serem adicionadas:

127.0.0.1 coinhive.com
127.0.0.1 coin-hive.com
127.0.0.1 jsecoin.com
127.0.0.1 reasedoper.pw
127.0.0.1 mataharirama.xyz
127.0.0.1 listat.biz
127.0.0.1 lmodr.biz
127.0.0.1 minecrunch.co
127.0.0.1 minemytraffic.com

Salve o arquivo hosts, limpe os caches de seus navegadores e, para mais segurança, execute também o seguinte comando no prompt de comando do Windows como Administrador: ipconfig /flushdns.

Essa abordagem é basicamente o que a extensão No Coin faz nos bastidores do seu navegador. A blacklist de sites veio de um arquivo de texto aberto do desenvolvedor.

A vantagem dessa solução é que ela dispensa programas ou plugins e pode inclusive ser implementada ao longo de uma rede. A desvantagem é que ela exige manutenção manual e certamente precisará ser atualizada com o surgimento de novas empresas que ofereçam esse tipo de serviço.