Análisis en profundidad de Widevine L3 con emulación y análisis de fallos

Fuentes: Diving into the depths of Widevine L3

Widevine es el sistema de gestión de derechos digitales (DRM) desarrollado por Google para proteger contenidos audiovisuales. Funciona con tres servidores —de aprovisionamiento, de licencias y de contenido— y se apoya en un componente llamado keybox, que contiene identificadores y claves del dispositivo. La especificación define tres niveles de seguridad: L1 ejecuta claves y contenido descifrado en hardware seguro; L2 protege solo las claves en hardware y deja el contenido al procesador principal; L3 opera íntegramente en software sobre la CPU del usuario, por lo que resulta el eslabón más atacado.

Este artículo detalla un proyecto personal de investigación que buscaba alternativas a los métodos basados en hooks de Frida para extraer la clave de dispositivo. El autor se propuso cargar la biblioteca libwvhidl.so dentro del framework de emulación Qiling, basado en Unicorn, para trabajar en un entorno aislado y reproducible. Para ello tuvo que adaptar el cargador ELF con LIEF, parchear syscalls relacionados con la aleatoriedad y el tiempo, y reconstruir el estado de memoria y CPU capturado desde un emulador de Android Studio, ya que la inicialización del DRM dentro de Qiling generaba un keybox distinto al esperado.

La segunda fase consistió en aplicar Análisis Diferencial de Fallos (DFA) sobre la implementación de AES en caja blanca que protege el keybox, replicando el enfoque usado por David Buchanan en 2019 y las extensiones posteriores de Tomer Hadad. El trabajo ilustra cómo la emulación puede asistir en la desofuscación de código y servir como complemento al análisis dinámico tradicional, aunque también pone de manifiesto la dificultad de reproducir fielmente el entorno de un dispositivo Android real.