Introducción
- Se mantuvo en secreto un bug descubierto durante el proceso de evasión de la verificación de licencias de Windows para preservar futuros métodos de activación y usarlo como herramienta de prueba
- Se descubrió un método de bypass de DRM llamado "Keyhole" que permite licenciar fácilmente aplicaciones de Microsoft Store o ediciones modernas de Windows
- Después de la divulgación de CVE-2024-38184 por parte de Cisco TALOS, se decidió compartir los hallazgos sobre Keyhole
CLiP
- CLiP (Client Licensing Platform) es un sistema DRM introducido en Windows 10 que gestiona las activaciones de Windows y las aplicaciones de Microsoft Store
- Binarios principales:
clipup.exe: convierte licencias de la tienda de Windows 8 en licencias digitales
clipsvc.dll: servicio en modo usuario que administra las licencias de aplicaciones
clipc.dll: API que permite que las aplicaciones interactúen con CLiP
clipwinrt.dll: API para aplicaciones UWP
clipsp.sys: controlador en modo kernel que valida las licencias
- Al instalar una aplicación con licencia CLiP, un archivo XML firmado se envía a
clipsvc.dll; tras la validación, se pasa a clipsp.sys, donde se almacena en el repositorio de licencias
Un poco de travesura
clipup.exe almacena una clave ECDSA válida en texto plano, así que cualquiera puede firmar fácilmente licencias XML
- Con esta clave es posible omitir la validación de ClipSvc y enviar directamente a ClipSp el bloque de licencia deseado
Deshaciendo ClipSp
- ClipSp es un controlador mal escrito, con mucho código copiado y pegado
- El código está oculto mediante la herramienta de ofuscación Warbird de Microsoft
- Al desofuscarlo se puede analizar el código oculto y encontrar bugs
Bloques de licencia
- Los bloques de licencia almacenan información importante de licenciamiento e incluyen varios bloques de datos en formato TLV (tag-length-value)
- El bloque de firma firma todos los datos, pero los datos agregados después de la firma no se validan
- Es posible agregar datos después del bloque de firma para sobrescribir datos existentes
Mucha travesura
- Al agregar datos después del bloque de firma se pueden crear licencias para todos los productos de Microsoft Store
- Sin embargo, las licencias vinculadas al dispositivo solo pueden generarse a partir de licencias de aplicaciones también vinculadas al dispositivo
Tutorial de la travesura
- Instalar una aplicación vinculada al dispositivo (por ejemplo, Roblox) y capturar la licencia con una herramienta de captura de tráfico HTTPS
- Decodificar el bloque de licencia y agregar los datos necesarios para luego empaquetarlo en un nuevo archivo XML
- Copiar el archivo XML a la carpeta
C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migration y reinstalar ClipSvc o instalarlo con el comando clipup -p
- Windows queda activado permanentemente
Aguafiestas
- Cisco TALOS reportó el mismo bug y Microsoft lo corrigió
- El bug se corrigió para que ya no se procesen datos después del bloque de firma
Temporada de donaciones
- Se publicaron el código para generar licencias Keyhole y los binarios de CLiP para incentivar el hallazgo de más bugs
Y otra historia más
- El código de ClipSp fue copiado y pegado del sistema DRM de Xbox One
- Xbox SP también tiene el mismo bug de parsing, pero Keyhole no funciona en Xbox
Créditos
- Personas que contribuyeron a la investigación: May, asdcorp, echnobas, WitherOrNot, emoose, LukeFZ, KiFilterFiberContext, Phillippe Laulheret, Cisco TALOS, Rairii
Resumen de GN⁺
- Keyhole es un potente método de bypass de DRM que permite licenciar fácilmente aplicaciones de Microsoft Store y ediciones de Windows
- Es posible manipular bloques de licencia explotando vulnerabilidades de seguridad en el sistema CLiP
- Microsoft corrigió el bug tras el reporte de Cisco TALOS
- Tiene una estructura similar a la del sistema DRM de Xbox One
- Este artículo puede ayudar a comprender las vulnerabilidades de los sistemas DRM y a reforzar la seguridad
1 comentarios
Opiniones en Hacker News