Investigación de la ventana invisible
Artículo de 13 páginas en formato IEEE que documenta una vulnerabilidad estructural en la supervisión de exámenes con WebRTC. SetWindowDisplayAffinity de Windows y NSWindow.SharingType.none de macOS permiten excluir una ventana de las rutas de captura probadas mientras sigue visible en la pantalla física. Esto cuestiona la premisa de confianza de la supervisión basada en capturas. Las pruebas de concepto lograron evasión del 100% en configuraciones de laboratorio probadas con Windows y macOS, incluido macOS 26, donde se suponía mitigado el ataque. Las configuraciones eran simuladas, no productos comerciales; macOS 26 usó CGWindowListCreateImage y screencapture nativos en lugar de getDisplayMedia() del navegador, y Linux no se probó. Los hallazgos reflejan las versiones probadas hasta marzo de 2026 y pueden cambiar con futuras correcciones.
01 / Resumen
Observabilidad de captura
Lo que aparece en pantalla puede diferir del fotograma capturado
Elija una plataforma para consultar el ajuste documentado de afinidad de ventana y el alcance de captura descrito por el estudio. Ambos paneles permanecen visibles para compararlos.
Esquema ilustrativo · no es una captura grabada ni una medición de píxelesPantalla física
La ventana sigue visible para quien mira la pantalla.
Fotograma capturado
Ruta de captura de WindowsAjuste documentado y alcance de captura probado
Windows · SetWindowDisplayAffinity / WDA_EXCLUDEFROMCAPTURE
El estudio informa de exclusión en las rutas probadas de Windows 10/11 que respetan el ajuste.
Alcance y límites del estudio
- Se probaron configuraciones de laboratorio en Windows 10/11; esto no establece el comportamiento de todos los navegadores o productos comerciales de supervisión.
- Para macOS 26, el estudio usó CGWindowListCreateImage y screencapture. No probó getDisplayMedia() en navegador ni ScreenCaptureKit directamente en macOS 26.
- Las evaluaciones usaron configuraciones simuladas, no productos comerciales de supervisión.
- No se probó Linux. Los hallazgos describen versiones probadas hasta marzo de 2026 y pueden cambiar con parches.
El esquema explica una frontera documentada entre visualización y captura; los paneles no contienen salidas medidas ni grabadas.
Problema
La supervisión remota detecta contenido prohibido capturando la pantalla mediante getDisplayMedia() de WebRTC y presupone que el fotograma refleja la pantalla física. La investigación demuestra una brecha: APIs de pantalla documentadas excluyeron ventanas de las rutas probadas sin elevar privilegios ni modificar el kernel. Los resultados corresponden a configuraciones controladas y simuladas de Windows y macOS; no demuestran eludir todos los navegadores o productos comerciales.
Resumen de la solución
- Formalización de la ruptura del límite de confianza entre la API de captura de pantalla de W3C y la composición del sistema operativo.
- Estudio de SetWindowDisplayAffinity en Win32 y NSWindow.SharingType.none en macOS, ambas documentadas en los SDK oficiales.
- Pruebas de concepto en Win32 C y Swift que demuestran la evasión completa de la captura.
- Evaluación de configuraciones simuladas en un laboratorio controlado con Windows 10/11 y macOS 14–26; no se probaron productos comerciales, y macOS 26 usó captura nativa en lugar de getDisplayMedia() del navegador.
- Análisis de las capacidades y limitaciones del seguimiento de la mirada, los movimientos del ratón y la enumeración de procesos.
- Propuesta y evaluación de cinco contramedidas, desde enumerar indicadores hasta la atestación de hardware a largo plazo.
- Divulgación coordinada con los fabricantes: Microsoft MSRC (notificado en febrero de 2026, clasificado en abril de 2026) y Apple Product Security (notificado y clasificado en marzo de 2026); ambos emitieron clasificaciones formales.
02 / Evidencia
Pruebas y verificación
- Evasión del 100% en Windows 10/11 y macOS 14–26, medida sobre más de 10 000 fotogramas por configuración.
- Sin artefactos visuales en las capturas: ni rectángulos negros, errores de composición ni parpadeo.
- La exclusión siguió funcionando en rutas nativas probadas de macOS 26.3.1 pese a los cambios documentados de ScreenCaptureKit en macOS 15; no se probó directamente ScreenCaptureKit ni getDisplayMedia() del navegador en macOS 26.
- Linux con X11/Wayland no se evaluó; los resultados corresponden a las configuraciones probadas de Windows y macOS.
- La detección conductual no mostró un efecto significativo con esta muestra: seguimiento de mirada con p = 0.41 y n = 8, con potencia estadística insuficiente; los movimientos del ratón quedaron dentro de la variación normal del examen. Esto no demuestra que la detección conductual sea imposible en todos los contextos.
- Prepublicación en Zenodo bajo CC BY 4.0, DOI 10.5281/zenodo.20376495; 13 páginas y 53 referencias en formato de conferencia IEEE.
Publicaciones de investigación
Artículos: 1The Invisible Window: Exploiting OS-Level Display Affinity to Bypass WebRTC Proctoring Systems
Artículo de 13 páginas sobre evasión de capturas en varias plataformas y divulgación coordinada a los proveedores.
Descargar publicación03 / Métodos
Construcción
Tecnologías
- Win32 C (prueba de concepto en Windows)
- Swift / AppKit (prueba de concepto en macOS)
- Python (verificación forense a nivel de píxel)
- LaTeX (plantilla de conferencia IEEE, 13 páginas, 53 referencias)
- SetWindowDisplayAffinity + WDA_EXCLUDEFROMCAPTURE en Windows 10 v2004+ excluye la ventana de las rutas de captura de Windows probadas sin artefactos visuales.
- NSWindow.SharingType.none demostró exclusión en rutas nativas probadas de macOS 14–26; macOS 26 usó CGWindowListCreateImage y screencapture, no getDisplayMedia() del navegador ni una prueba directa de ScreenCaptureKit.
- Verificación forense: diferencia de píxeles del 80,27 % en el área de captura de Windows; una captura de 1 170 560 píxeles en macOS resultó totalmente transparente.
Seguro
- Descubrimiento y verificación en enero de 2026.
- Notificación a Microsoft MSRC en febrero de 2026; en abril de 2026 se clasificó como comportamiento previsto, no como vulnerabilidad de seguridad.
- Notificación a Apple Product Security en marzo de 2026; ese mes se clasificó como comportamiento coherente con la documentación, no como problema de seguridad.
- Publicación tras las respuestas de los proveedores en mayo de 2026.
- El código de prueba de concepto no es público; disponible previa solicitud para investigadores de seguridad verificados.
- Solo APIs documentadas de usuario, sin explotación del kernel ni elevación de privilegios.
- Conforme a los códigos éticos de ACM e IEEE y las directrices de divulgación coordinada de CISA.