讲师中心 微信公众号
AI工具推荐 视频效率加速

macOS 验证 macOS 系统完整性保护的签名校验机制

浅强君_9302

浅强君_9302

发布时间:2026-07-19 06:44:37

|

967人浏览过

|

来源于php中文网

原创

SIP 不依赖实时签名校验,而是通过内核强制访问控制锁定路径;但绕过 SIP 的唯一合法方式是持有 Apple 专用签名,如 softwareupdated 必须带 Apple Software Update Signing Authority 签名才能写入 /System 等受保护区域。

macos 验证 macos 系统完整性保护的签名校验机制

macOS 的系统完整性保护(SIP)本身不依赖传统“签名校验”来运行,它不是靠检查某个文件是否被 Apple 签名才决定是否保护——而是由内核在启动早期就加载固定策略,直接锁定特定路径与行为。但 SIP 与签名机制紧密协同:Apple 签名是**绕过 SIP 限制的唯一合法通行证**,只有持有有效 Apple 签名、且被授权修改系统区域的进程(如软件更新、安装器),才能写入 /System、/usr/bin 等受保护位置。

为什么说 SIP 不做“签名校验”,但又离不开签名?

SIP 的核心是强制访问控制(MAC),它通过扩展属性 com.apple.rootless 和配置文件 /System/Library/Security/rootless.conf 标记哪些路径/进程受保护。每次访问时,内核只判断“当前操作是否在白名单策略内”,不现场验签。但 Apple 把“能触发白名单豁免”的权限,严格绑定到签名上:

  • 系统更新工具(softwareupdated)、安装器(Installer.app)等内置进程,必须带有 Apple 的专用签名(如 Apple Software Update Signing Authority),否则即使调用系统 API 也会被拒绝
  • 第三方开发者无法获得这类签名,所以你用 sudo 编译一个程序去改 /usr/bin/vim,哪怕代码完全合法,也会被拦截
  • 这就是为什么禁用 SIP 后,未签名工具就能写入——不是因为 SIP “验签失败”,而是 SIP 这道门被拆了,不再执行任何策略

如何验证 SIP 相关的签名依赖是否生效?

你可以分两层检查,确认签名与 SIP 的配合状态:

macOS Notes
macOS Notes

通过 AppleScript 创建、读取、搜索及管理 macOS 备忘录。适用于用户要求记笔记、记录事项、保存想法、创建会议记录等场景。

下载
  • 查 SIP 当前开关状态:终端运行 csrutil status,显示 enabled 才代表策略正在运行
  • 查关键系统进程是否带有效 Apple 签名:比如检查安装器签名,运行 codesign -dv --verbose=4 /Applications/Install\ macOS\ Sequoia.app,确认输出含 Authority=Apple Software Update Signing Authority 或类似 Apple 内部签名标识
  • 查受保护路径是否真被锁住:尝试 sudo touch /usr/local/test(允许) vs sudo touch /usr/bin/test(应报错 Operation not permitted),可反向验证 SIP 是否实际起效

常见误判:把 Gatekeeper 或公证警告当成 SIP 问题

用户常遇到“已损坏”弹窗或“无法验证开发者”,这其实是 Gatekeeper + 代码签名 + 公证 链路的问题,和 SIP 无关:

  • Gatekeeper 拦截的是首次运行的外来 App,检查的是 com.apple.quarantine 属性和签名/公证状态
  • SIP 拦截的是对系统路径的写操作或对 Dock/Finder 等进程的调试注入,不干预 App 启动本身
  • 一个未公证的 App 可以正常启动(只要没碰 /usr/bin),但若它试图用 launchctl 注入 kext,SIP 会立刻阻止——两者触发条件完全不同

Apple Silicon 机型的额外签名关联

在 M1/M2/M3 Mac 上,SIP 与 authenticated root 机制联动。系统宗卷(System Volume)默认启用签名验证,即使 SIP 已 disable,root 卷仍是只读,除非同时运行:

  • csrutil authenticated-root disable
  • 该命令本质是让系统跳过对 root 卷内容的签名校验(即验证 System Volume 是否由 Apple 签名并完整)
  • 没有这一步,仅 csrutil disable 无法真正释放 /System 下的写权限

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

4885

2025.10.13

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

415

2025.11.04

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 186人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 20.6万人学习

好课诞生记
好课诞生记

共20课时 | 7.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn