2 puntos por GN⁺ 2025-04-28 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2025-04-28
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

    • Hay una forma de compartir información de 64 bits entre procesos en el dispositivo
    • Es una función ideal para rastreo de usuarios entre apps
    • Si el sistema guarda el valor y no rastrea de qué app vino, es posible tener almacenamiento persistente incluso después de borrar y reinstalar la app
    • Podría usarse para saltarse el reinicio de IDFA o IDFV
  • La vulnerabilidad descrita no dejaba el dispositivo "brickeado"

    • Para recuperarlo hacía falta una restauración tethered
  • $17,500 está bastante bien

    • En publicaciones de blog normalmente se ve una cantidad baja, o casos en los que la empresa corrige la vulnerabilidad y no paga recompensa
    • Apple ha mejorado en este aspecto desde 2019
  • Gran trabajo

    • Es una vulnerabilidad simple, efectiva y potente
    • Me recuerda a una vulnerabilidad perfecta de servidor que teorizamos con un amigo de la universidad hace 20 años
    • Fue descubierta hace 2 años como CVE-2022-23093
  • 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"

    • Cualquier proceso podía enviar una notificación y engañar al sistema para que entrara en ese modo
  • Extraño los viejos tiempos de IRC

    • Esto recuerda lo peligrosos que pueden ser pequeños cambios en la tecnología
    • Me hace preguntarme si la seguridad realmente va por delante o si solo sigue tapando fugas
  • Esto sugiere que apps de terceros con su propio sistema de notificaciones podrían ser suplantadas de forma similar

    • Tal vez no puedan dejar el dispositivo brickeado, pero sí podrían provocar otros comportamientos
  • Puede que la prioridad sea baja porque el usuario tiene que instalar activamente una app maliciosa

    • Pero ese calendario no inspira confianza
  • Este artículo fue una lectura excelente

    • Muestra lo poderosa que era una API muy antigua
    • Fue una gran demo de cómo activar todos los estados de bajo nivel de iOS
    • Me pregunto qué pasó ahora con notify_post