Una vulnerabilidad de Adblock Plus permite la ejecución de código de terceros

Hace poco se descubrió que el popular bloqueador de anuncios “Adblock Plus” tiene una vulnerabilidad que permite organizar la ejecución de código JavaScript en los sitios, en el caso de usar filtros no probados preparados por terceros con intenciones maliciosas (por ejemplo, al conectar conjuntos de reglas de terceros o mediante la sustitución de reglas durante el ataque MITM).

Los autores de listas con conjuntos de filtros pueden organizar la ejecución de su código en el contexto de los sitios accesibles al usuario agregando reglas con el operador ” $ rewrite “, que permite reemplazar parte de la URL.

¿Cómo es posible esta ejecución  de código?

La declaración de $ rewrite no permite reemplazar el host en la URL, pero brinda la oportunidad de manipular libremente los argumentos de la solicitud.

Sin embargo la ejecución del código se puede lograr. Algunos sitios, como Google Maps, Gmail y Google Images, utilizan la técnica de cargar dinámicamente los bloques de JavaScript ejecutables transmitidos en forma de texto simple.

Si el servidor permite la redirección de las solicitudes, entonces se puede reenviar a otro host cambiando los parámetros de la URL (por ejemplo, en el contexto de Google, se puede hacer una redirección a través de la API ” google.com/search “).

Además de los hosts que permiten la redirección, también se puede cometer un ataque contra los servicios que permiten la ubicación del contenido del usuario (alojamiento de código, plataforma de colocación de artículos, etc.).

El método de ataque propuesto solo afecta a las páginas que cargan de forma dinámica cadenas con código JavaScript (por ejemplo, a través de XMLHttpRequest o Fetch) y luego las ejecuta.

Otra limitación importante es la necesidad de usar una redirección o colocar datos arbitrarios en el lado del servidor de origen que proporciona el recurso.

Sin embargo, como demostración de la relevancia de un ataque, se muestra cómo organizar la ejecución de su código al abrir maps.google.com utilizando un redireccionamiento a través de “google.com/search”.

De hecho, las solicitudes de uso de XMLHttpRequest o Fetch para descargar scripts remotos para ejecutar no fallarán cuando se use la opción $ rewrite.

Además, la redirección abierta es igual de importante porque permite que XMLHttpRequest lea el script desde un sitio remoto, aunque parezca que sea del mismo origen.

Ya están trabajando en solucionar el problema

La solución todavía está en preparación. El problema también afecta a los bloqueadores de AdBlock y uBlock . El uBlock Origin Blocker no es susceptible al problema ya que no es compatible con el operador de ” $ rewrite”.

En un momento dado, el autor de uBlock Origin se negó a agregar el soporte de $ rewrite, citando posibles problemas de seguridad y restricciones de nivel de host insuficientes (en lugar de reescribir, se propuso la opción querystrip para borrar los parámetros de consulta en lugar de reemplazarlos).

Es nuestra responsabilidad proteger a nuestros usuarios.

A pesar del riesgo real muy bajo, decidimos eliminar la opción de $ rewrite. Por lo tanto, publicaremos una versión actualizada de Adblock Plus tan pronto como sea técnicamente posible.

Hacemos esto como una precaución. No se ha intentado hacer un mal uso de la opción de reescritura y haremos todo lo posible para evitar que esto suceda.

Esto significa que no existe una amenaza para ningún usuario de Adblock Plus.

Los desarrolladores de Adblock Plus consideran poco probable que se realicen ataques reales, ya que todos los cambios en las listas regulares de reglas se revisan y la conexión de listas de terceros es practicada por los usuarios muy raramente.

La sustitución de reglas a través de MITM elimina el uso de HTTPS de manera predeterminada para cargar listas de bloqueo regulares (para las listas restantes se planea prohibir la descarga de HTTP en una versión futura).

Para bloquear ataques en el lado de los sitios, se pueden aplicar directivas CSP (Política de seguridad de contenido), a través de las cuales puede identificar explícitamente los hosts desde los que se pueden cargar recursos externos.

Fuente: https://adblockplus.org, https://armin.dev


Sé el primero en comentar