Exploração de filtro do Adblock Plus para executar código arbitrário descoberto

A maioria dos bloqueadores de conteúdo usa e carrega listas de filtros que incluem instruções para bloquear ou alterar determinado conteúdo em sites visitados no navegador da Web por padrão; isso é feito para garantir que as configurações padrão bloqueiem uma boa parte do conteúdo indesejado imediatamente.

A maioria das extensões suporta listas personalizadas e filtros individuais. Os usuários podem carregar listas personalizadas na maioria das extensões e adicionar seus próprios filtros à lista.

Atualização : A Eyeo GMHB anunciou hoje que removerá a função $ reescrever daqui para frente. Espere um novo lançamento em breve que remova se da extensão. Fim

O pesquisador de segurança Armin Sebastian descobriu uma exploração em certos bloqueadores de anúncios, como o Adblock Plus, que poderia ser usado para executar códigos maliciosos nos sites visitados no navegador.

A exploração usa uma opção de filtro chamada $ reescrita que o Adblock Plus suporta para injetar código arbitrário nas páginas da web. O filtro $ rewrite é usado para substituir o código nos sites, reescrevendo-o. A opção de filtro restringe a operação; ele foi projetado para carregar conteúdo apenas de sites e servidores de origem e não de terceiros, e algumas solicitações, como script ou objeto, também não são permitidas.

Sebastian descobriu uma vulnerabilidade em $ reescrita que os invasores podem explorar para carregar conteúdo de locais remotos. As condições que precisam ser atendidas são:

  1. Uma string JavaScript precisa ser carregada usando XMLHttpRequest ou Fetch, e o código de retorno deve ser executado.
  2. As origens não podem ser restritas na página, por exemplo, usando diretivas da Política de Segurança de Conteúdo, e o URL da solicitação final não pode ser validado antes da execução.
  3. A origem do código deve ter um redirecionamento aberto do lado do servidor ou deve hospedar conteúdo arbitrário do usuário.

As propriedades que atendem aos três requisitos incluem Google Maps, Gmail ou Google Images, entre outros. Uma prova de conceito foi publicada no site do autor e você pode testá-la no Google Maps para verificar se funciona.

Eu tentei a exploração no Chrome e Firefox e não consegui fazê-lo funcionar. Lawrence Abrams, no Bleeping Computer, conseguiu fazê-lo funcionar.

Palavras finais

O ataque tem outro requisito, pois depende de filtros. Um filtro manipulado precisa ser adicionado à lista de filtros usados ​​pelo bloqueador de conteúdo. As duas opções mais comuns incluem usuários adicionando filtros manualmente a seus bloqueadores de conteúdo ou que um filtro manipulado esteja em uma lista de filtros que é carregada.

A segunda opção parece mais provável, especialmente nos casos em que os usuários carregam outras listas nas extensões. Não é a primeira vez que listas são manipuladas, mas isso não acontece com muita frequência.

A extensão uBlock Origin não é afetada pelo problema, pois não suporta $ reescrever.