
macOS のミュージックおよび TV アプリは、安全でないリネーム処理を実行しており、その結果としてユーザーの TCC.db に対する完全な制御を得る FDA (フルディスクアクセス) を引き起こします。
このバグは各アプリごとに別々のチケットで報告しています。該当する場合はマージしていただいて構いません。
根本的な問題は、これらのアプリが FDA を持っているにもかかわらず、ファイル操作をサニタイズしていないことです。
ミュージックと TV はこの点においてほぼ同一であり、パスが異なるだけです。以降はミュージックを例として説明します。TV についてはエクスプロイトコードをご確認ください。非常に単純明快です。
ミュージックには、ユーザーがファイルを「ドロップ」できる専用フォルダを介して、ユーザーのライブラリにファイルをコピーする機能があります。
ユーザーは単に次の場所にファイルを作成できます。
~/Music/Music/Media.localized/Automatically Add to Music.localized/
ミュージックはこのファイルを取得し、安全でないリネーム処理を実行して次の場所に移動します。
"~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized"
エクスプロイトが生成する有効な TCC.db を使用すると、メディアファイルではないため「Not Added.localized」フォルダにコピーされます。これは非常に有用です。なぜなら、単純なシンボリックリンクレースを利用して、このリネーム処理を TCC.db の実際の場所にリダイレクトできるからです。
このエクスプロイトは技術的には競合状態ですが、非常に信頼性が高く、最初の試行で常に成功するため、リトライ処理を実装する必要すらありませんでした。
ミュージックの使用法:
DEBUG=1 ./librarian.py 1
TV の使用法:
DEBUG=1 ./librarian.py 2
テスト間で TCC データベースをリセットする方法:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All