Exploración de filtro Adblock Plus para ejecutar código arbitrario descubierto

La mayoría de los bloqueadores de contenido usan y cargan listas de filtros que incluyen instrucciones para bloquear o cambiar cierto contenido en los sitios visitados en el navegador web de manera predeterminada; Esto se hace para garantizar que las configuraciones predeterminadas bloqueen una buena porción de contenido no deseado de inmediato.

La mayoría de las extensiones admiten listas personalizadas y filtros individuales. Los usuarios pueden cargar listas personalizadas en la mayoría de las extensiones y agregar sus propios filtros a la lista también.

Actualización : Eyeo GMHB anunció hoy que eliminará la función $ rewrite en adelante. Espere una nueva versión pronto que elimine si de la extensión. Final

El investigador de seguridad Armin Sebastian descubrió una vulnerabilidad en ciertos bloqueadores de anuncios como Adblock Plus que podría usarse para ejecutar código malicioso en los sitios visitados en el navegador.

El exploit utiliza una opción de filtro llamada $ rewrite que Adblock Plus admite para inyectar código arbitrario en páginas web. El filtro $ rewrite se usa para reemplazar el código en los sitios reescribiéndolo. La opción de filtro restringe la operación; está diseñado para cargar contenido solo desde la fuente de origen y no desde sitios o servidores de terceros, y algunas solicitudes, por ejemplo, script u objeto, tampoco están permitidas.

Sebastian descubrió una vulnerabilidad en $ rewrite que los atacantes pueden explotar para cargar contenido desde ubicaciones remotas. Las condiciones que deben cumplirse son:

  1. Se debe cargar una cadena de JavaScript utilizando XMLHttpRequest o Fetch, y se debe ejecutar el código de retorno.
  2. Los orígenes no se pueden restringir en la página, por ejemplo, mediante el uso de directivas de Política de seguridad de contenido, y la URL de solicitud final no se puede validar antes de la ejecución.
  3. El origen del código debe tener una redirección abierta del lado del servidor o debe alojar contenido de usuario arbitrario.

Las propiedades que cumplen los tres requisitos incluyen Google Maps, Gmail o Google Images, entre otras. Se publicó una prueba de concepto en el sitio web del autor y puede probarla en Google Maps para verificar que funciona.

Probé el exploit en Chrome y Firefox, y no pude hacerlo funcionar. Sin embargo, Lawrence Abrams en Bleeping Computer logró que funcionara.

Palabras de clausura

El ataque tiene otro requisito, ya que se basa en filtros. Es necesario agregar un filtro manipulado a la lista de filtros utilizados por el bloqueador de contenido. Las dos opciones más comunes incluyen usuarios que agregan filtros manualmente a sus bloqueadores de contenido, o que un filtro manipulado está en una lista de filtros que se carga.

La segunda opción parece más probable, especialmente en los casos en que los usuarios cargan otras listas en las extensiones. No es la primera vez que se manipulan las listas, pero no sucede con mucha frecuencia.

La extensión uBlock Origin no se ve afectada por el problema, ya que no admite $ rewrite.