- Se presenta un caso en el que fue posible dejar un iPhone inutilizable aprovechando las características y vulnerabilidades del sistema Darwin Notification
- Esta vulnerabilidad fue registrada como CVE-2025-24091, y la persona que la reportó recibió una recompensa por bugs de US$17,500 (25 millones de wones)
- Fue posible paralizar por completo dispositivos iOS al explotar el hecho de que se podían enviar notificaciones a nivel de sistema sin privilegios especiales
- Se confirmó la posibilidad de realizar un ataque de denegación de servicio (DoS) que forzaba el modo "Restore in Progress" con una simple línea de código, provocando reinicios repetidos
- La vulnerabilidad fue corregida mediante la actualización iOS 18.3, que pasó a exigir un entitlement restringido para enviar notificaciones Darwin importantes
Darwin Notifications
- Darwin Notifications es un mecanismo de nivel CoreOS para intercambiar mensajes simples entre procesos en iOS y macOS
- Su estructura permite anunciar eventos con
notify_post, recibirlos con notify_register_dispatch y leer o escribir valores de estado (state)
- Es posible recibir y enviar notificaciones sin privilegios especiales, y no existe un proceso de validación de seguridad
- Diversos componentes del sistema dependían de esta API heredada
Resumen de la vulnerabilidad
- Todos los procesos en los sistemas operativos de Apple pueden recibir Darwin Notifications sin requerir privilegios especiales
- Existía una falla estructural por la que incluso apps en sandbox podían enviar Darwin Notifications
- Como la cantidad de datos que se puede transferir es limitada, el riesgo de filtración de datos sensibles no era alto
- Enviar ciertas notificaciones críticas del sistema (por ejemplo, una notificación de inicio de restauración) podía afectar a todo el sistema
- Esto permitió descubrir la posibilidad de un ataque de denegación de servicio (DoS)
EvilNotify y VeryEvilNotify
- Con la app EvilNotify era posible forzar diversas respuestas del sistema
- Mostrar el ícono de detección de líquido
- Bloquear Wi‑Fi y forzar el uso de datos móviles
- Bloquear gestos en la pantalla de bloqueo y en el Centro de control
- Entrar en el Lost Mode de Find My, entre otros
- En particular, una sola línea,
notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted"), podía llevar al dispositivo al estado Restore in Progress
- Como el dispositivo en realidad no estaba siendo restaurado, ese modo fallaba, y la única solución era presionar el botón de reiniciar
- La app VeryEvilNotify usaba una extensión de widget para reiniciar automáticamente el ataque incluso después de un reinicio
- La extensión del widget se ejecutaba periódicamente en segundo plano y llamaba a la función
notify_post para volver a activar repetidamente el modo "restauración en progreso"
- Como resultado, podía causar el efecto de dejar el dispositivo completamente inutilizable
Línea de tiempo y registro CVE
- 26 de junio de 2024: envío del reporte inicial del incidente a Apple
- 27 de septiembre de 2024: recepción de un mensaje de Apple indicando que se estaban aplicando medidas de mitigación
- 28 de enero de 2025: resolución completa del problema y confirmación de elegibilidad para la recompensa por bugs
- 11 de marzo de 2025: registro oficial como CVE-2025-24091 y corrección en iOS/iPadOS 18.3
- El monto de la recompensa por bugs fue de US$17,500
Respuesta y medidas de mitigación
- Se cambió el sistema para que el envío de Darwin Notifications sensibles requiera un entitlement restringido
- Por ejemplo, la notificación
com.apple.MobileBackup.BackupAgent.RestoreStarted pasó a llamarse com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted
- Los procesos que reciben la notificación también usan el nuevo nombre para bloquear envíos no autorizados por parte de apps no autorizadas
- Este esquema de entitlements restringidos comenzó a aplicarse desde iOS 18.2 beta 2 y quedó completado por completo en iOS 18.3
1 comentarios
Comentarios en Hacker News
Es interesante que esta API no pida permisos para ningún uso relacionado con configuración y publicación de notificaciones
La vulnerabilidad descrita no dejaba el dispositivo "brickeado"
$17,500 está bastante bien
Gran trabajo
Puedo imaginar lo duro que debió haber sido el día en la oficina cuando el equipo central de iOS revisó esto
Con una sola línea de código se podía hacer que el dispositivo entrara en modo "restauración en curso"
Extraño los viejos tiempos de IRC
Esto sugiere que apps de terceros con su propio sistema de notificaciones podrían ser suplantadas de forma similar
Puede que la prioridad sea baja porque el usuario tiene que instalar activamente una app maliciosa
Este artículo fue una lectura excelente
notify_post