29 Feb
Sem dúvida alguma, a maior parte da publicidade online hoje é feita usando-se o AdSense da Google. Isso não é nenhum problema, afinal o AdSense é uma das ferramentas de anúncios que tem o melhor retorno financeiro para quem a utiliza. Mas e a segurança?
Imagine que você é um blogueiro profissional que tem como principal fonte de renda o AdSense. Da noite para o dia você vê sua receita desabando. O que você faz? Investe pesado em SEO e geração de conteúdo novo. Sua receita parece reagir mas volta a cair vertiginosamente. Você consulta todas as suas ferramentas de monitoração do seu site e nota que o número de visitas não diminuiu, apenas parece que ninguém clica mais em seus anúncios.
Já desesperado e vendo a falência correr em sua direção, você nota que um leitor do seu blog comentou praticamente todos os seus posts na última semana. Os comentários até são relevantes, mas você os apaga e vê que o blog volta a dar retorno financeiro.
Qual a relação daqueles comentários com sua receita? Toda.
Provavelmente todo mundo já ouviu falar de injeção de Javascript em uma página, mas vou explicar rapidamente o que é:
Um usuário mal intencionado, após tentar de diversas formas, descobre um jeito de incluir código Javascript na sua página (Em muitos sistemas isso significa apenas abrir e fechar a tag <script> em um formulário e depois submeter) e usa isso para mudar o comportamento do site.
Javascript é uma linguagem absurdamente poderosa e flexivel (vejam JQuery e Prototype, por exemplo). Além desse poder todo, o navegador constrói uma estrutura com todos os elementos da página que pode ser manipulada livremente por Javascript.
Juntando tudo isso em um bolo só, temos um ataque formidável e de difícil detecção. Como funcionaria esse ataque (aqui pensando apenas num blog, mas a idéia é extensível para muitos outros lugares)? Simples:
E acreditem, é realmente muito fácil fazer um script desses. Mas por que isso funciona?
Como os usuários do AdSense já devem ter notado, você não precisa cadastrar todos os sites onde sua id vai aparecer. Isso significa que a Google não tem como saber qual id deve vir de qual site. Um exemplo disso (mas esse é legal) é um desses plugins para inserir AdSense no WordPress. Em um checkbox você pode destinar para o autor do plugin 5% dos cliques em anúncio que você tiver. Ele faz isso colocando a id dele em 5% dos anúncios.
Mas a Google deveria encontrar um jeito de bloquear isso? Creio que não. Isso é uma característica do AdSense que o deixa bem flexível.
O verdadeiro problema é a injeção de script. Esse é um pesadelo do mundo atual. Sempre que você recebe os dados de uma fonte insegura (no caso qualquer conteúdo gerado por usuários), você deve limpá-lo e garantir que não exista nada que possa comprometer o seu sistema.
Mas isso raramente é feito de forma efetiva (quando é feito…), o que resulta em sites expostos. Já passou muito da hora dos programadores (em especial os que desenvolvem para web) se preocuparem em evitar o bom e velho “‘;DROP TABLE Funcionario;” que alguém colocou em um formulário qualquer por diversão.
Nota: Não me lembro de ter visto em lugar algum alguém mencionar um ataque como esse que eu descrevi acima, mas isso não significa que ninguém já esteja usando idéias semelhantes a essa. Segurança é um assunto importante que deve ser mais discutido.
Posts Relacionados:
8 Responses for "E se alguém trocar a sua id do AdSense?"
no javascript injetado não tinha o id do espertão? se tiver não poderia acontecer uma denúncia ao google? com este script pronto ele deve estar fazendo isso em muitos lugares.
o problema é que se ele fosse mais inteligente as chances de ser descoberto seriam bem menores. o mais engraçado é que eles semprem cometem o mesmo erro. bom pra nós!
Não sabia que isso era possível, doidera mesmo, temos que ficar viajando isso agora é tenso.
O Javascript teria a ID, mas nem é muito complicado você criar um ID fake no AdSense e receber por cheque em uma caixa postal anônima…. Sem contar que o verdadeiro problema é você detectar que isso está acontecendo. O cara pode simplesmente resolver roubar 5% do lucro. Um golpe praticamente indetectavel.
Obrigado pelas visitas!
[...] injeção de conteúdo em formulários web “O VidaGeek.net publicou hoje uma matéria chamada E se alguém trocar a sua id do AdSense? que aborda o problema de segurança causado pela possibilidade de inserir javascript numa página [...]
Cara… ISSO É MUITO SÉRIO !
Tem alguma matéria mostrando os métodos de bloquear esse javascript ?
Desculpa se é pedir demais, mas você poderia fazer mais uma matéria sobre isso, focando as coisas que podemos fazer para detectar imediatamente, métodos para “evitar” que isso aconteça, o que fazer caso aconteça, e melhor forma de reportar ao Google ?
Valeu mesmo. Nota 10 pra essa matéria!
O simples fato de bloquear o uso de código html (leia-se por exemplo) em formulários de contato e comentários já reduz muito a chance deste ataque acontecer.
O bloqueio de código html provavelmente reduz em 100% a possibilidade de um tipo de ataque como esse. O problema é que muitas vezes queremos liberar a utilização de alguns elementos html, como links. Quando isso acontece, precisamos ser capazes de detectar o que queremos deixar. Uma das técnicas que o WP usa é retirar as tags <script>, que não é totalmente segura (outras são usadas pra compensar). O ideal é se manter sempre com a versão mais recente do WP. Mas isso também não garante muita coisa.
Quando escrevi esse post fiz alguns testes em uma instalação de testes que tenho do WP e encontrei uma falha de segurança (não é crítica a ponto de permitir a troca da ID do AdSense, mas dá pra usá-la para roubo de cookies). Já estou entrando em contato com a equipe de segurança do WP para que corrijam, mas até isso ser incorporado ao código ela continuará por aí.
Mas isso não é nem muito culpa deles. Qualquer sistema está vulnerável. Não existe a possibilidade de se construir um sistema 100% seguro.
Quanto a uma matéria sobre prevenção, estou preparando a algum tempo um post sobre segurança. Assim que estiver pronto coloco no ar.
Obrigado pelas visistas!
Sobre a falha de segurança, testei na última versão do WP e ela parece estar corrigida.
Leave a reply