Descubierto un exploit de filtro de Adblock Plus para ejecutar código arbitrario

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 forma predeterminada; Esto se hace para garantizar que las configuraciones predeterminadas bloqueen una buena parte del 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.



Actualizar: Se anuncia Eyeo GMHB hoy que eliminará la función $ rewrite en el futuro. Espere una nueva versión pronto que elimine si de la extensión. Final

Investigador de seguridad Armin Sebastian descubierto un exploit en ciertos adblockers como Adblock Plus que podría usarse para ejecutar código malicioso en los sitios visitados en el navegador.

adblock plus exploit

El exploit usa 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, p. ej. script u objeto, tampoco están permitidos.



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

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

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

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

Palabras de cierre

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 que los usuarios agreguen 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 ocurre con mucha frecuencia.

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