Clickjacking
El clickjacking es un ataque en el que una página en la que la víctima confía se carga de forma invisible dentro de una página que controla el atacante, de modo que un clic dirigido a la página visible se entrega a la que está oculta. La víctima ejecuta una acción real y autenticada sin saber qué aplicación la ha recibido.
La técnica no necesita nada exótico: un marco con la opacidad bajada, colocado de forma que el control que el atacante quiere que se pulse quede debajo del control que la víctima quiere pulsar. Como el clic es auténtico y la sesión es la de la propia víctima, la petición lleva cookies válidas y se ve correcta en todos los registros. Eso es lo que la separa del cross-site request forgery: aquí no se falsifica nada, simplemente se desvía la acción.
La defensa es negarse a que te enmarquen, y hay un control que lo hace bien: la directiva frame-ancestors de una content security policy, que se aplica de forma coherente y que puede nombrar orígenes concretos. La cabecera antigua X-Frame-Options sigue muy desplegada y está bien como respaldo, pero no puede expresar una lista de orígenes permitidos con fiabilidad y no debería ser el único control en un desarrollo nuevo. El JavaScript que intenta romper el marco no es una defensa: se neutraliza sin esfuerzo.
En un informe suele ser de severidad baja por sí solo y sube según lo que haga la acción enmarcada. Una transferencia de un clic, una concesión de permisos o un borrado de cuenta enmarcados son un hallazgo real; una página de marketing enmarcada, no. Lo que anotamos es la acción autenticada concreta a la que se llega y la cabecera que de verdad se sirve en esa ruta, porque es habitual que un parque ponga la política en la página de acceso y en ningún sitio más. Esto entra dentro de las pruebas de aplicación web, donde los controles de enmarcado se comprueban en todas las páginas autenticadas.