
Día cero en AppleMediaServices: un fallo en la obtención del Bag desactiva la firma Mescal/Absinthe. Las solicitudes a los servicios de Apple se envían sin firmar, lo que expone riesgo de degradación, replay y evasión. Incluye análisis, evidencia de logs y lógica de ataque PoC.
Resumen
Este problema constituye una vulnerabilidad Zero-Day activa y refleja un defecto de diseño sistémico en AppleMediaServices.framework, más que una regresión o un error específico de una versión.
Una falla crítica de tipo fail-open en el framework AppleMediaServices de Apple permite que la firma de solicitudes se desactive silenciosamente si un archivo de configuración remoto (el "Bag") no se carga correctamente. Esto afecta a iOS, macOS, tvOS y watchOS.
Cuando el Bag no se puede obtener —debido a manipulación de DNS, tiempos de espera agotados o interferencia de red— los daemons de AppleMediaServices desactivan la firma Mescal/Absinthe y envían solicitudes sin firmar a los servidores de Apple. Estas solicitudes carecen de protecciones de integridad y exponen a los usuarios a ataques de degradación (downgrade) y reproducción (replay).
Evidencia de registros:
Descubrimiento
Sistemas afectados
Todas las plataformas de Apple que utilizan AppleMediaServices.framework están afectadas.
Los daemons afectados incluyen:
Resumen de la vulnerabilidad
Los dispositivos Apple obtienen un Bag de configuración dinámica desde el siguiente endpoint:
https://bag.itunes.apple.com/bag.xml?deviceClass=...&format=json
Esta configuración incluye indicadores como useAMSMescal, mescalURL y absintheURL, que determinan si las solicitudes salientes deben firmarse.
Si el Bag no se carga, AppleMediaServices registra el fallo, desactiva la lógica de firma y envía solicitudes sin firmar a los servidores de Apple. No existe validación de firmas, comprobación de integridad ni mecanismo de respaldo forzado. El Bag no está autenticado ni firmado, lo que deja el estado de seguridad expuesto a interferencias de red.
Prueba de concepto
Precondiciones:
Pasos del exploit:
Bloquee o manipule el acceso al endpoint del Bag mediante respuestas DNS NXDOMAIN, handshakes TCP descartados o respuestas retrasadas.
Observe los registros del sistema que indican que el Bag no se cargó y que las firmas Mescal/Absinthe se omiten.
Haga que los componentes del sistema (por ejemplo, la App Store o la app de Música) envíen solicitudes. Supervise el tráfico de red y confirme la ausencia de cabeceras de firma:
Resultado:
El tráfico sin firmar se transmite a los endpoints de Apple sin verificación. Esto permite la manipulación, la reproducción (replay) y otros riesgos de integridad.
Modelos de amenaza
bag.itunes.apple.comAMSBagManager mediante Frida o jailbreak para sobrescribir los indicadores de seguridadRemediación recomendada
Configuración firmada Firme el Bag usando CMS, JWT o HMAC y verifique las firmas en el lado del cliente.
Valores predeterminados a prueba de fallos (fail-secure) AppleMediaServices debería bloquear el tráfico que depende de la firma cuando el Bag no se puede obtener o validar.
Aplicación en el servidor Las APIs de backend de Apple deberían rechazar las solicitudes sin firmar que requieran protección Mescal o Absinthe.
Caché validada El contenido del Bag solo debería almacenarse en caché cuando supere las comprobaciones de integridad y se encuentre dentro de las restricciones de caducidad definidas.
Justificación de la gravedad
Los dispositivos Apple dependen de solicitudes firmadas para la confianza, desde la App Store hasta la reproducción de medios. Si esas firmas desaparecen cada vez que un archivo de configuración no se carga, los atacantes en una red Wi-Fi pueden eliminar la integridad e inyectar o reproducir tráfico sin que el usuario lo sepa. Una sola solicitud de Bag descartada hace que las garantías de seguridad de Apple fallen en modo abierto (fail open).