Research · chromium · browser-security · static-analysis

Auditoría de cobertura de guardas de ciclo de vida BFCache en Chromium DocumentService

Cuando una página entra al Back/Forward Cache queda inactiva, pero un renderer comprometido puede ignorar ese congelamiento. Cada implementación de DocumentService debe proteger sus propios puntos de entrada, porque la clase base no aporta una guarda automática. Esta es una pasada solo de código que inventaría esas implementaciones y las reduce a una lista corta, terminando en una pregunta por método. No encuentra vulnerabilidades a propósito: decide qué debe leer un humano a continuación.

La pregunta

Un DocumentService se destruye al eliminarse el render-frame-host, en una navegación entre documentos o en una desconexión, pero no cuando su documento entra al Back/Forward Cache. Mientras está en caché, el documento está inactivo, pero un renderer comprometido puede seguir llamando a la interfaz como si nada.

Así que para cada implementación, una pregunta: ¿el código que puede correr mientras el documento está inactivo depende de una guarda explícita de ciclo de vida, permiso o activación para seguir siendo seguro? La guarda canónica prueba la inactividad y además desactiva o expulsa, y debe aplicarse en cada punto de entrada y cada callback.

Qué es y qué no es

Es una pasada de inventario y triaje, no un exploit ni una cadena. Su salida clasifica cada método por la primera capa de guarda presente, y donde no encuentra ninguna dice solo «un humano debe leer esto», nunca «vulnerabilidad».

El valor está en reducir el espacio de búsqueda. En lugar de leer cada implementación a mano, quien revisa recibe una lista corta y referenciada por línea de los métodos que de verdad merecen una lectura cuidadosa.

El método

La herramienta enumera las subclases de DocumentService, resuelve cada una a su archivo de implementación, su interfaz Mojo y su lista de métodos, y su punto de binder para juzgar si la interfaz es alcanzable desde la web.

Por cada método no busca en todo el archivo: localiza el cuerpo del método por coincidencia de llaves y escanea solo ese cuerpo, de modo que una guarda que está en otro método no se acredite como cobertura de este. Ese único detalle elimina toda una clase de falsos positivos que produce la búsqueda de texto plana.

Las guardas a nivel de archivo se registran aparte como cobertura indirecta, y cada método se clasifica por la primera capa de guarda que realmente tiene.

Por qué importa

La seguridad del ciclo de vida del navegador es justo el terreno donde un escaneo automático es peor que inútil: o te ahoga en ruido o te da falsa confianza. Una pasada de triaje honesta sobre sus propios límites —que termina en una pregunta, no en un veredicto— es lo que convierte un universo ilegible de código en una lista revisable.

Esa disciplina es la misma que llevamos al trabajo con clientes: automatización para la amplitud, una persona para la decisión, y ningún hallazgo afirmado sin que alguien lo reproduzca.

La automatización debe acotar la pregunta, no responderla. La salida aquí es una lista de cosas que merecen una lectura humana, y la honestidad de decirlo.

Más research

¿Ponemos esto a prueba?

Definimos el alcance contigo y empezamos con autorización por escrito.

Solicitar una evaluación
KNULL / DATOS
DATOS / CONTACTO

Solo lo
necesario.

Esta página no recoge nada. El formulario de la portada guarda solo lo que le envías, en el servidor que aloja este sitio, sin analítica ni modelos de IA.