Vulnerabilidade nos filtros AdBlock e uBlock permite que código arbitrário seja executado no lado do usuário

Sob várias condições, a opção $rewrite filter, implementada no AdBlock, AdBlock Plus e uBlock com atualização 3.2 de 17 de julho de 2018 , permite que código arbitrário seja executado em uma página da web exibida para um usuário, relata o blog armin.dev .

Aqui está como a função problemática é descrita no próprio patch do AdBlock:
Esse patch implementa a nova opção de filtro $rewrite , que permite aos autores das listas de filtros impedir a exibição (principalmente em vídeo) de anúncios que anteriormente não podiam ser bloqueados em vários sites.
A vulnerabilidade descrita afeta todos os três dos bloqueadores de anúncios mencionados, cujo público total excede 100 milhões de usuários. Você pode usá-lo para atacar qualquer serviço da Web, incluindo, entre outros, por exemplo, qualquer recurso do Google. O problema é generalizado, ou seja, um ataque com o mesmo sucesso pode ser realizado em qualquer navegador popular e não depende de sua versão.

A vulnerabilidade durou quase 9 meses e foi encontrada apenas agora.

Essência do ataque


O blogueiro de origem explica que a opção $rewrite é usada pelo AdBlock e pelos outros bloqueadores mencionados para evitar o rastreamento do usuário e o bloqueio de anúncios, redirecionando solicitações da página da web visitada. Portanto, $rewrite permite redirecionar e não processar solicitações como SCRIPT , SUBDOCUMENT , OBJECT e OBJECT_SUBREQUEST .

Um ataque pode ocorrer se o site usar XMLHttpRequest ou Fetch para baixar e executar trechos de código, enquanto permite que solicitações arbitrárias sejam feitas.

Ou seja, para realizar um ataque, três condições devem ser atendidas:

  1. A página da web deve carregar a sequência JS usando XMLHttpRequest ou Fetch e executar o código retornado.
  2. A página da web não deve usar as diretivas de validação da Política de Segurança de Conteúdo e não deve verificar o URL final antes de executar o código baixado.
  3. A fonte do código extraído deve oferecer suporte a um redirecionamento do servidor ou conter conteúdo arbitrário gerado pelo usuário.

Parece que existem muitas condições, e o CSP está longe de ser uma novidade no mundo do desenvolvimento web. No entanto, a principal ameaça à vulnerabilidade encontrada não é como ela funciona, mas como ela se espalha.

Como os sistemas de filtro AdBlock, AdBlock Plus e uBlock são vulneráveis, a maneira de "infectar" a vítima final é extremamente simples - através do sistema de atualização automática de filtros. Não é segredo que grande parte dos usuários usa filtros prontos, mas não os configura. Nesse caso, o autor do pacote de filtro pode lançar uma atualização mal-intencionada, realizar um ataque e, em seguida, "rolar" o pacote e, assim, "varrer faixas".

Maneiras de lutar


A maneira mais fácil de se proteger da vulnerabilidade mencionada é mudar para o uBlock Origin. Esse bloqueador de anúncios não suporta a função $rewrite , ou seja, é impossível implementar o ataque descrito por meio dele.

Caso contrário, por sua conta e risco, você deve aguardar a próxima atualização do AdBlock. Literalmente, algumas horas após a publicação no blog armin.dev, essa entrada do blog apareceu no blog oficial do bloqueador em resposta à vulnerabilidade $rewrite .

Nele, a administração do AdBlock garante que, embora a vulnerabilidade seja específica, eles são extremamente cuidadosos com a segurança de seu público e, na próxima atualização, a função $rewrite será cortada do AdBlock.

Além disso, de acordo com as garantias da administração, eles checam todas as listas de filtros e as checam agora. Com base nos resultados da auditoria, a administração relata que nenhuma das listas de filtros existentes descreveu o método de ataque ao usuário contido. Como apenas quatro horas se passaram entre o momento em que a postagem original foi publicada e a resposta ao blog do AdBlock, apenas nos alegramos com a capacidade de resposta da equipe do bloqueador.

Ao mesmo tempo, remover a função $rewrite do projeto é um retrocesso para o AbBlock, pois foi originalmente criado para combater anúncios em vídeo pop-up. Agora ela retornará por uma questão de segurança universal. Além disso, a velocidade com a qual foi decidido remover completamente $rewrite do projeto mostra que, embora o ataque seja específico, as consequências de sua conduta em massa são assustadoras demais.

Source: https://habr.com/ru/post/pt448302/


All Articles