Gatekeeper绕过
对手可能会修改文件属性并绕过Gatekeeper功能,以逃避用户提示并执行不受信任的程序。Gatekeeper是Apple安全模型的一部分,用于确保仅执行受信任的应用程序。Gatekeeper建立在Snow Leopard(10.6,2009)中的文件隔离之上,并已扩展到包括代码签名、安全策略合规、认证等。Gatekeeper还会对首次运行的应用程序与重新打开的应用程序进行不同处理。(引用: TheEclecticLightCompany Quarantine and the flag)(引用: TheEclecticLightCompany apple notarization) 基于选择加入系统,当文件下载时,执行下载的应用程序可以在文件上设置一个称为com.apple.quarantine
的扩展属性(也称为隔离标志)。启动服务以挂起状态打开应用程序。对于首次运行且设置了隔离标志的应用程序,Gatekeeper执行以下功能: 1. 检查扩展属性 - Gatekeeper检查隔离标志,然后向用户提供允许或拒绝执行的提示。(引用: OceanLotus for OS X)(引用: 20 macOS Common Tools and Techniques) 2. 检查系统策略 - Gatekeeper检查系统安全策略,允许执行从App Store或App Store和已识别开发者下载的应用程序。 3. 代码签名 - Gatekeeper检查Apple开发者ID的有效代码签名。 4. 认证 - 使用api.apple-cloudkit.com
API,Gatekeeper连接到Apple服务器验证或下载认证票据,并确保票据未被撤销。用户可以覆盖认证,这将导致执行“未经授权的应用程序”的提示,并修改安全策略。 对手可以通过逻辑错误(例如防御规避利用)、未检查的文件类型和外部库绕过Gatekeeper检查中的一个或多个安全控制。例如,在macOS 13 Ventura之前,代码签名和认证检查仅在首次启动时进行,允许对手将恶意可执行文件写入先前打开的应用程序,以绕过Gatekeeper安全检查。(引用: theevilbit gatekeeper bypass 2021)(引用: Application Bundle Manipulation Brandon Dalton) 从USB闪存驱动器、光盘、外部硬盘驱动器、通过本地网络共享的驱动器或使用curl命令加载到系统上的应用程序和文件可能不会设置隔离标志。此外,可以通过驱动器式攻击避免设置隔离标志。