
Exploit para CVE-2023-38571
macOS Music y TV realizan un cambio de nombre inseguro que resulta en FDA al obtener control total sobre el TCC.db del usuario
Reporté este error en tickets separados para cada aplicación, no dudes en fusionarlos si corresponde.
El problema subyacente es que estas aplicaciones tienen FDA pero no logran sanitizar sus operaciones de archivos.
Music y TV son casi iguales en este aspecto, solo las rutas son diferentes. A partir de aquí usaré Music como ejemplo. Para TV, por favor revisa el código del exploit, es muy directo.
Music tiene funcionalidad para copiar archivos en la biblioteca del usuario usando una carpeta especial a la que el usuario puede "soltar" archivos.
Un usuario puede simplemente crear un archivo en
~/Music/Music/Media.localized/Automatically Add to Music.localized/
Music tomará este archivo y realizará un cambio de nombre inseguro en "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized".
Si usamos un TCC.db válido (que el exploit genera), se copiará en la carpeta "Not Added.localized" ya que no es un archivo multimedia. Esto es muy útil, ya que podemos redirigir este cambio de nombre a la ubicación real de TCC.db usando una simple carrera de enlaces simbólicos.
El exploit es técnicamente una condición de carrera, sin embargo es tan confiable que ni siquiera lo implementé para reintentar ya que siempre tiene éxito en el primer intento.
Uso para music:
DEBUG=1 ./librarian.py 1
Uso para tv:
DEBUG=1 ./librarian.py 2
Para restablecer tcc db entre pruebas:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All