macOSのPrivacy & Security設定を信用できない理由
(eclecticlight.co)- macOSのPrivacy & Security設定が実際のアクセス権限の状態を反映できていない問題が確認された
- Documentsフォルダへのアクセスがブロックされた状態でも、Insentアプリが依然としてファイルを読み取れる現象が発生
- ユーザーがフォルダを直接選択すると、TCCシステムがそれを意図的なアクセスと見なして制約を解除する
- 設定画面ではブロックされたように表示されるが、実際にはサンドボックス制約が解除されてアクセスが継続して許可される
- アクセス権限を完全に遮断するにはターミナルコマンドと再起動が必要であり、これはユーザーの制御権喪失につながるおそれがある
macOS Privacy & Security設定の信頼性の問題
- macOS Privacy & Security設定が実際のアクセス権限の状態を正確に反映しない事例が確認された
- Insentというシンプルなアプリを使って、Documentsフォルダのアクセス権限が設定上はブロックされていても実際にはアクセス可能になる現象が発生
- この問題はmacOS 13.5以降のバージョンでも同様に再現可能
-
Insentアプリの動作方式
- Open by consentボタンは、ユーザーの同意を経てDocumentsフォルダ内の任意のテキストファイルを開いて表示する
- Open from folderボタンは、ユーザーがフォルダを直接選択すると、その中のファイルを開いて表示する
- 後者の場合、ユーザーの意図(intent) がアクセス許可と見なされ、TCC(Transparency, Consent, and Control) システムが別途の同意なしにアクセスを許可する
-
実験手順と結果
- Documentsへのアクセスを許可した後、Insentが正常にファイルを読み取ることを確認
- その後、Privacy & Security設定でInsentのDocumentsアクセスを無効化するとアクセスがブロックされる
- しかし、Open from folderでDocumentsを選択すると再びアクセス可能になり、その後はOpen by consentも制限なく動作する
- 設定画面では依然としてアクセスがブロックされたように表示されるが、実際にはInsentがDocumentsフォルダへ引き続きアクセス可能
- アクセスを完全に遮断するには、
tccutil reset All co.eclecticlight.Insentコマンドを実行し、Macを再起動する必要がある
-
内部動作の分析
- Insentは通常の公証(notarized) アプリであり、サンドボックスや特殊権限は使用していない
- System Integrity Protection(SIP) が有効な状態では、一部の処理がサンドボックス化される
sandboxdがファイルアクセス要求を横取りしてTCCに承認を求め、ユーザーが同意するとアクセスが許可される- アクセスが無効化された後はTCCがアクセスを拒否するが、ユーザーがOpen/Saveパネルを通じてフォルダを選択すると、sandboxdがそれ以上要求を横取りしない
- その結果、TCCがアクセスを制御できなくなり、サンドボックス制約が解除された状態でフォルダアクセスが可能になる
-
問題の原因
- ユーザーの意図に基づくアクセスが発生すると、そのフォルダに対するサンドボックス制約が取り除かれる
- この変更はPrivacy & Security設定UIに反映されないため、設定上はブロックされたように見えても実際にはアクセスが許可された状態が維持される
- 他の保護フォルダ(例: Desktop、Downloads)は正常に動作し、問題はフォルダごとに独立して発生する
-
結論
-
Files & Folders項目のアクセス制限表示は実際の適用状態を信用できない
- アプリが一覧に表示されない、またはブロックされたように見えても、実際には保護フォルダにアクセスできる場合がある
- いったんアクセス権限が付与されると、ターミナルコマンドと再起動なしには解除されず、ユーザーがアクセス制御を失うおそれがある
-
-
追加議論(コメント要約)
- 実験後、Documentsフォルダに
com.apple.macl拡張属性が追加され、Insentのアクセスを許可する役割を持つと推定される tccutil resetコマンドはデータベースのmacl項目を削除するが、xattr(拡張属性) は残るため、アクセスが維持される可能性がある- SIPが有効な状態ではこの属性を削除しにくく、復旧モードで
xattr -d com.apple.macl path/to/Documentsコマンドを使った場合にのみ削除可能 - このためユーザーは、アプリの実際のアクセス状態を確認または制御しにくい状況に置かれる
- 実験後、Documentsフォルダに
1件のコメント
Hacker Newsの意見
自分には単純な問題に見える。アプリにフォルダへのアクセス権を与えれば、そのフォルダ内のファイルにもアクセスできるのは当然だと予想していた
記事を読んだ後、すべてのフォルダ権限を解除してテストしたが、InsentがUIで「None」と表示されていてもDocumentsを読めた。透明性の失敗に見える
GUI中心OSの皮肉だ。Documentsフォルダへのアクセスを完全に遮断するには、ターミナルで
tccutil reset All co.eclecticlight.Insentコマンドを実行して再起動しなければならない
タイトルは「macOSアプリは、ユーザーが解除してもフォルダアクセスを維持する」くらいに変えるのが正確だ
MacのsandboxシステムはWindows UACを思い出させる。ユーザーの疲労感を増すだけの構造だ。
*nixの選択的コンテナ方式のほうがずっと良いと思う。
Terminalで実行されたバックグラウンドプロセスが、親プロセスが死んでも権限を維持するのは特に奇妙だ。権限体系全体が形式的に見える
tccutil reset以外にも、セキュリティ設定で権限をオンにしてからオフにする方法でも初期化できる。UIがバグで状態を誤表示しているだけで、実際の権限は正常に機能している。
チェックボックスの色もフォーカスの有無で変わるので紛らわしい。Sequoiaバージョンでもまだ残っている。
外付けドライブにインストールされたゲームが「removable volumes」へのアクセスを要求して一覧に大量に出てくるのも興味深い
これがバグなのか、セキュリティ脆弱性なのか、単なるミスなのか判断に迷う。すべてのアプリに対してresetコマンドを実行したほうがよいのか悩む
最新のmacOSでも似たようなセキュリティUIの混乱がある。
「Full Disk Access」項目では、一部のアプリがグレー表示されるが、オンとオフの区別がつかない。
これがバグなのか、実際に権限があるのか分からない
Full Disk Accessをオフにしても、一部の機微なフォルダだけが保護され、一般フォルダ(Desktop、Documentsなど)には依然としてアクセス可能だ (Apple文書)
問題の原因は、Documentsフォルダに設定されたcom.apple.macl拡張属性にある。SIPのため削除できない
iOSでも同じ現象があるのか気になる