Suzu macOS Playground

M06 · CTF

換 binary 為什麼要重新授權

一個 client 已對某 service 有 auth_value=2 (allowed) 的紀錄;把它換成不同身分重簽後再存取。 說明 tccd 比對 csreq(designated requirement)的結果,以及為何 auth_value=3 (limited) 不能套用到這個相機/全磁碟類服務。

← 先讀 M06 章節

TCC 判定實驗室

情境

雙層 db:~/Library/.../TCC.db(user)先於 /Library/.../TCC.db(system)。此服務無 limited。

tccd 判定提示授權
  1. attribution用 audit token 歸屬到責任 client:com.example.app(非看 PID)。
  2. lookup雙層 tcc.db 都查無 (service, client) 紀錄 → 視為 unknown。
  3. prompt無紀錄 → 由系統跳出授權提示(若無 UI 環境則視為拒絕)。

查無紀錄 → 提示使用者授權(首次請求)。

試試:把「目前簽章符合 DR」關掉(模擬冒名/重簽)→ 既有 allowed 紀錄作廢、重新提示。把 audit token 關掉 → 連歸屬都失敗。

模型邊界:tccd 判定為**教學決策模型**(audit token 歸屬 → 雙層查表 → csreq DR → auth_value),非逐欄位實作。TCC.db 受 SIP/FDA 保護,本實驗室用合成資料。驗證於 macOS 26.3.1。

過關目標

解答是「操作模擬器到對的狀態 + 能說出原理」,非提交 flag 字串。互動式自動評分為 roadmap 項目;目前以自我檢核完成。

提示

卡住時

授權釘在 csreq(DR)上,綁的是「身分」不是「路徑」。重簽改身分→當前簽章與釘選的 csreq 失配。

走錯方向時

csreq 失配 = 視同沒有有效授權,要重新走同意流程。舊的 allowed 不會沿用到新身分。

想更深入

auth_value 3 (limited) 主要用於 Photos 的「選取部分照片」;相機 / Full Disk Access 這類服務沒有 limited 態,別套四態。

相關指令

codesigncsreq
← 回 CTF 場