Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Trespasser — CVE-2026-74970, omisión del aislamiento de sitio de Fission en Firefox WebRender | Kitploit
Herramientas/GitHubGitHub/defineid/trespasser
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad Web
GitHubdefineid/trespasser

Trespasser

CVE-2026-74970, omisión del aislamiento de sitio de Fission en Firefox WebRender

Ver Repositorio
21hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-74970 · Elusión del aislamiento de sitios de Fission en Firefox mediante la falta de comprobación del espacio de nombres de PipelineId

Este directorio contiene un andamiaje de reproducción honesto para una elusión de autorización del aislamiento de sitios de Fission en Firefox WebRender. Bajo Fission, cada proceso de contenido posee un espacio de nombres de PipelineId distinto, pero el código del proceso GPU que registra un PipelineId componible nunca comprobaba que el espacio de nombres del PipelineId perteneciera al proceso emisor. Por lo tanto, un proceso de contenido comprometido puede registrar un PipelineId en el espacio de nombres de otro proceso y sobrescribir el pipeline de imágenes asíncronas de ese origen en el gestor compartido.

Todo lo que hay aquí se dirige a un árbol de Firefox compilado localmente con contenido únicamente sintético. Nunca ataca, contacta, sondea ni hace referencia a ningún sistema activo o de terceros. No es ejecución remota de código ni corrupción de memoria; el modelo de amenaza es un proceso de contenido ya comprometido.

Repositorio PoC correspondiente: https://github.com/defineid/Trespasser Writeup: writeup-webrender-pipelineid.html en este portafolio.

Datos

CampoValor
CVECVE-2026-74970
ComponenteCore / Graphics: WebRender
ClaseElusión del aislamiento de sitios
CWE862 (Falta de autorización) · 284 (Control de acceso inadecuado)
Corregido enFirefox 154 · ESR 153.1
Bughttps://bugzilla.mozilla.org/show_bug.cgi?id=2056558
Repo PoChttps://github.com/defineid/Trespasser

Mecanismo

Bajo Fission, WebRender asigna a cada proceso de contenido su propio espacio de nombres de PipelineId. Se espera que el puente del proceso GPU rechace cualquier recurso cuyo espacio de nombres no pertenezca al proceso que lo envió, de modo que un proceso de contenido no pueda direccionar ni sobrescribir los recursos de renderizado de otro.

WebRenderBridgeParent::AddPipelineIdForCompositable, que se ejecuta en el proceso GPU, validaba el pipeline entrante contra el guardián root/WebRender y contra el propio conjunto de pipelines registrados de este puente, pero nunca llamaba a MatchesNamespace sobre el PipelineId. Las rutas de image-key, font-key y blob-key en el mismo archivo realizan todas esa comprobación de propiedad MatchesNamespace; la ruta de PipelineId simplemente no lo hacía. RemovePipelineIdForCompositable tampoco está comprobada, por lo que el mismo agujero de propiedad del espacio de nombres existe en la eliminación.

Aguas abajo, AsyncImagePipelineManager::AddAsyncImagePipeline protege la unicidad de un pipeline solo con MOZ_ASSERT, que se compila como una operación nula en las compilaciones de release. Así, cuando un PipelineId falsificado y de espacio de nombres cruzado llega al AsyncImagePipelineManager compartido, el gestor no rechaza el duplicado: sobrescribe silenciosamente la entrada existente del pipeline de imágenes asíncronas del origen víctima.

Encadenados, un proceso de contenido comprometido A puede falsificar un PipelineId cuyo espacio de nombres pertenece al proceso de contenido B (un origen diferente, en un proceso separado bajo Fission), enviarlo por la ruta de registro de componibles, y hacer que el proceso GPU lo acepte y sobrescriba el pipeline de imágenes de B en el gestor compartido.

Modelo de amenaza

Un proceso de contenido ya comprometido bajo Fission. Se asume que el atacante ya tiene ejecución de código en un proceso de contenido (por ejemplo, mediante un bug separado del proceso de contenido) y que puede enviar mensajes IPC de WebRender con campos elegidos por el atacante. Este defecto es la autorización faltante que permite a ese proceso cruzar el límite de aislamiento de sitios hacia los recursos de renderizado de otro origen.

Se trata de una elusión de autorización del aislamiento de sitios de Fission, no de corrupción de memoria. El impacto es confusión de renderizado entre orígenes y denegación de servicio entre pestañas. Los consumidores aguas abajo están protegidos contra nulos y cuentan con conteo de referencias, por lo que no conduce a ejecución de código. El PoC no debe ni puede afirmar ejecución de código.

Qué hay en este directorio

  • README.md — este archivo.
  • forge-namespace.patch — un parche de investigación para un árbol de Firefox local. En el lado del contenido, protegido por XRE_IsContentProcess() y la variable de entorno MOZ_POC_FORGE_WR_NAMESPACE, falsifica el espacio de nombres del PipelineId saliente. En el lado padre del proceso GPU, imprime un diagnóstico ACCEPTED cuando se registra un PipelineId de espacio de nombres cruzado, demostrando que la comprobación ausente lo dejó pasar.
  • poc.html — un caso de prueba básico del lado del contenido: un lienzo WebGL (para que se cree un pipeline de imágenes asíncrono) más un iframe de origen cruzado fuera de proceso (para que Fission lo coloque en un proceso de contenido separado). En una compilación estándar se renderiza con normalidad y no hace nada observable.
  • victim.html — el segundo origen sintético que carga el iframe. Es una página trivial, sin scripts, cuyo único propósito es ser un documento de origen cruzado activo, de modo que bajo Fission aterrice en su propio proceso de contenido con su propio espacio de nombres de PipelineId (el espacio de nombres al que apuntaría un registro falsificado).
  • poc-render.png — una captura de pantalla de poc.html cargado en el Firefox 140.11.0esr estándar local. Muestra la página de prueba renderizándose con normalidad: el lienzo WebGL dibuja su fotograma y el iframe fuera de proceso carga victim.html. Solo muestra un renderizado benigno. El bypass en sí requiere el parche de investigación y una compilación vulnerable y no se activó aquí (véase el estado de verificación).

Cómo aplicar y ejecutar contra una compilación LOCAL

Estos pasos están pensados para que los realice el autor contra una copia de trabajo local de Firefox. Nada de lo aquí descrito se ejecutó contra Firefox en este entorno (véase el estado de verificación a continuación).

  1. Obtén una copia de un árbol de código fuente de Firefox vulnerable (anterior a 154 / anterior a ESR 153.1) y confirma que Fission está habilitado (fission.autostart = true, el valor predeterminado en las compilaciones recientes).

  2. Aplica el parche de investigación desde la raíz del árbol de código fuente:

    patch -p1 < forge-namespace.patch
    

    El parche modifica gfx/layers/wr/WebRenderBridgeChild.cpp (lado del contenido, forja el espacio de nombres) y gfx/layers/wr/WebRenderBridgeParent.cpp (lado del proceso GPU, imprime el diagnóstico ACCEPTED). Ambos cambios son inertes a menos que se cumplan las condiciones de guarda.

  3. Compilar normalmente (./mach build).

  4. Servir este directorio de modo que el iframe fuera de proceso de poc.html cargue el victim.html complementario desde un dominio registrable genuinamente distinto, para que Fission coloque el iframe en su propio proceso de contenido. Por ejemplo, python3 -m http.server 8000 --bind :: y cargar el iframe desde http://victim.localtest.me:8000/victim.html. Véase el comentario en línea en poc.html.

  5. Lanzar la compilación con la variable de forja establecida y cargar la página de prueba:

    MOZ_POC_FORGE_WR_NAMESPACE=999999 ./mach run --temp-profile poc.html
    

    999999 es un valor de espacio de nombres arbitrario elegido para que no pertenezca a ningún proceso real; hace evidente en el registro el registro falsificado entre espacios de nombres.

Línea de registro esperada de aceptación entre espacios de nombres

Descargar herramienta