
Exploit para CVE-2023-38571
O macOS Music e TV fazem uma renomeação insegura resultando em FDA ao obter controle total sobre o TCC.db do usuário
Reportei esse bug em tickets separados para cada aplicativo, sinta-se à vontade para mesclar se for aplicável.
O problema subjacente é que esses aplicativos têm FDA, mas não conseguem sanitizar suas operações de arquivo.
Music e TV são quase iguais nesse aspecto, apenas os caminhos são diferentes. Estou usando Music como exemplo daqui em diante. Para TV, por favor, verifique o código do exploit, é bem direto.
Music tem funcionalidade para copiar arquivos para a biblioteca do usuário usando uma pasta especial na qual o usuário pode "soltar" arquivos.
Um usuário pode simplesmente criar um arquivo em
~/Music/Music/Media.localized/Automatically Add to Music.localized/
Music vai pegar esse arquivo e fazer uma renomeação insegura para "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized".
Se usarmos um TCC.db válido (que o exploit gera), ele será copiado para a pasta "Not Added.localized", já que não é um arquivo de mídia. Isso é muito útil, pois podemos redirecionar essa renomeação para o local real do TCC.db usando uma simples corrida de symlink.
O exploit é tecnicamente uma condição de corrida, porém é tão confiável que eu nem implementei retry, pois ele sempre funciona na primeira tentativa.
Uso para music:
DEBUG=1 ./librarian.py 1
Uso para tv:
DEBUG=1 ./librarian.py 2
Para redefinir o tcc db entre testes:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All