资讯动态

用 Fleet 量化补丁滞后:从 Apple 29 个 CVE 的安全更新看如何让每个设备真正升级

发布时间:2026/9/20 12:19:27 来源:尧图企业网站定制
用 Fleet 量化补丁滞后从 Apple 29 个 CVE 的安全更新看如何让每个设备真正升级【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet导读Apple 在 iOS 26.6.1 与 macOS Tahoe 26.6.2 中一次性修复了 29 个漏洞含 3 个内核缺陷且这是三周内的第三个安全发布。本指南以这次更新为背景讲解如何用 Fleet 的 OS 版本报告拿到谁还跑在脆弱版本上的精确计数再通过 GitOps 配置minimum_version与deadline把请升级变成自动落地的强制结果帮助你从假设大家已更新转向数清楚谁还没更新。背景29 个 CVE、3 个内核漏洞、三周三更Apple 官方安全页面为这次发布列出了 29 个 CVE分布在 Audio、ImageIO、IOGPUFamily、内核kernel与 WebKit 等组件中。其中21 个漏洞位于 WebKit浏览器引擎是这次修复的绝对大头3 个是内核kernel漏洞属于可被利用来提权或突破系统边界的严重级别1 个是 ImageIO 中的代码执行漏洞——ImageIO 是设备上几乎所有 App 打开图片时都会用到的框架攻击面极大iOS 额外修复了一个电话telephony漏洞它允许处于特权网络位置的攻击者绕过 IPSec 认证并拦截流量。截至目前这些漏洞均未被报告为已被积极利用。这恰恰是在漏洞被武器化之前快速打补丁最关键的窗口期。比 CVE 数量更值得关注的是发布节奏。这是 Apple 三周内的第三次安全发布——几周前 iOS 26.6 在 iPhone 上修复了超过 75 个问题、在 Mac 上修复了超过 150 个。过去安全团队可以围绕 Apple 相对可预测的更新节奏做规划但现在节奏已经变了每隔一两周就会出现一次新的安全发布等下次一起更不再是一个合理的计划。为什么更新已推送不等于更新已落地推送一个更新你的设备池里总会有不到 100% 的设备真正安装它每次都如此自动更新开关被人为关闭某台笔记本合盖一整周根本没机会联网检查更新自然不知道补丁的存在手机上弹出今晚安装提示用户连续三个晚上把它滑掉设备离线数天回连时才发现自己错过了整整一轮补丁。这些问题在有人提出错误的问题之前都不会浮出水面——比如那台特定的脆弱 Mac 是否还在网络上。所以正确的修复方案不是更好的提醒而是一个你可以随时拉取的计数。与其假设补丁因为被推送就落地了你需要一个数字现在还有多少台设备运行着脆弱版本并且按平台拆分。看清谁还在暴露Fleet OS 版本报告Fleet 的OS 版本报告会把每一台已注册的 Mac、iPhone、iPad 按精确构建版本分组并为每个版本附加实时主机数。筛选 macOS 时你会得到一份把设备池清晰切分的清单多少台已经跑到 Tahoe 26.6.2多少台还停留在 26.6.1 或更早多少台根本没有带着更新回连检查过。同一份报告同时覆盖 iOS 与 iPadOS因此一台跑着 iOS 26.6 的手机会和仍在追赶的 Mac 出现在同一份清单里而不需要单独逐个平台去查。报告背后的 API报告的数据来自 REST API 端点GET /api/v1/fleet/os_versions路由注册见 server/service/handler.go。它支持以下查询参数完整说明见 docs/REST API/rest-api.md参数类型说明fleet_idintegerFleet Premium 可用。按指定 fleet 过滤0表示Unassigned主机platformstring按平台过滤darwinmacOS、windows、linux、chrome、ios、ipados、androidos_namestring按 OS 名称过滤必须与os_version同时指定os_versionstring按 OS 版本过滤必须与os_name同时指定max_vulnerabilitiesinteger限制每个 OS 版本返回的漏洞数量省略则返回全部page/per_pageinteger分页参数默认每页 20 条order_keystring排序字段允许值为hosts_count默认降序从源码实现看server/service/hosts.go服务端会对这些参数做严格校验platform必须是上述七种之一os_name与os_version必须成对出现排序键只允许hosts_count。漏洞数据仅在分页后的当前页上拉取以避免海量 CVE 拖慢响应——这是实现层面为报告做的性能取舍。响应中每个 OS 版本对象对应 server/fleet/hosts.go 定义的OSVersion结构核心字段包括{ os_version_id: 123, hosts_count: 21, name: macOS 26.6.1, name_only: macOS, version: 26.6.1, platform: darwin, generated_cpes: [], vulnerabilities_count: 3, vulnerabilities: [ { cve: CVE-2026-XXXXX, details_link: https://nvd.nist.gov/vuln/detail/CVE-2026-XXXXX, cvss_score: 9.8, epss_probability: 0.1234, cisa_known_exploit: false, cve_published: 2026-08-10T00:15:00Z, cve_description: ..., resolved_in_version: 26.6.2 } ] }关键点在于vulnerabilities数组中的每一项都携带CVE ID、CVSS 分数、EPSS 概率、是否在 CISA 的 Known Exploited VulnerabilitiesKEV列表中以及该漏洞在哪个版本被修复resolved_in_version。也就是说报告本身已经回答了那个否则要拿 Apple 公告手动交叉核对一下午的问题现在哪些设备暴露在本次发布的这 29 个 CVE 中的哪些之上。对 macOS 与 Windows报告按 OS 版本给出精确的版本级漏洞数据对 Linux则基于该 OS 版本上各主机的内核漏洞进行聚合活动与非活动内核都会被计入见 docs/REST API/rest-api.md。把报告变成强制截止日期GitOps 里的 minimum_version 与 deadline报告告诉你现状。在 Fleet Premium 上你还可以不为每个落后设备开一张工单就弥合差距在 Fleet 的 GitOps 配置中为 macOS、iOS 或 iPadOS 设置minimum_version和deadline就能把请升级变成被强制执行的结果——低于最低版本的设备会收到提示一旦截止日期过去更新就会安装。这套配置的完整 YAML 示例见 docs/Configuration/yaml-files.mdmdm: macos_updates: # Available in Fleet Premium # 方式一指定具体版本号 minimum_version: 15.4.1 deadline: 2025-07-01 # 方式二始终跟进 Apple 为每台硬件发布的最新版 minimum_version: latest deadline_days: 14 update_new_hosts: true ios_updates: # Available in Fleet Premium minimum_version: 18.1 deadline: 2024-12-31 ipados_updates: # Available in Fleet Premium minimum_version: 18.1 deadline: 2024-12-31各参数的含义与约束同上文档minimum_version要求的最低 OS 版本。接受具体版本号如15.4.1或latest取该主机硬件可获得的最新版本。指定版本号时必须与deadline配对latest时则必须与deadline_days配对。默认。deadlineYYYY-MM-DD格式的截止日期。macOS 14 及以上主机的精确截止时间为本地时间正午noon local time更老的 macOS 版本为 20:00 UTC。指定具体版本号时必填minimum_version为latest时不可用。默认。deadline_daysApple 发布更新后多少天之内必须安装。仅当minimum_version为latest时使用此时截止日不再是固定日历日而是相对每个版本的发布日期推算。默认null。update_new_hosts通过自动设备注册ADE新入网的 macOS 主机会在 Setup Assistant 期间直接更新到 Apple 最新版本。为向后兼容若未指定但deadline与minimum_version已设置则默认视为true否则默认false。配置在源码层的校验逻辑AppleOSUpdateSettings类型定义与校验逻辑见 server/fleet/app.goValidate()方法会把上面这些约束落到实处版本号必须匹配^\d(\.\d)?(\.\d)?$格式——只接受纯数字版本号如13.0.1不接受Ventura 13或13.0.1 (22A400)这类带描述或构建号的写法deadline必须能被2006-01-02格式解析latest模式下不允许同时设置deadline且必须提供大于 0 的deadline_days非latest模式下不允许设置deadline_daysminimum_version与deadline必须成对出现。这种校验在设计上保证了配置在进入 Git 审查流程时就已经是自洽的不会出现设了版本没设截止日之类的半成品策略。配置本身也在 Git 里整份 GitOps 配置文件存放在版本库中像其他任何变更一样接受代码审查并且以相同方式应用到该平台的每一台已注册设备上。这意味着下一次安全发布到来时你不需要重新发明一套部署计划——只需更新版本号与日期走一遍熟悉的审查与fleetctl apply流程即可参考fleetctl apply应用配置的方式见 docs/Contributing/guides/cli/fleetctl-apply.md。配套的 REST API 也暴露了同样的mdm.macos_updates/ios_updates/ipados_updates配置结构见 docs/REST API/rest-api.md方便以代码方式读取与核对当前策略。补丁滞后首先是可见性问题其次才是更新问题内核漏洞以及图片解析这类日常框架中的代码执行漏洞不会等你设备池里的落后设备找时间安装更新。那些在这次发布中处理得当的组织往往不是补丁打得最快的而是能在几分钟内确切知道哪些设备还需要打补丁的。把这次的节奏套进工作流里你可以这样做发布当天用GET /api/v1/fleet/os_versions?platformdarwin或 UI 中的 OS 版本报告拿到 26.6.1 及更早版本的主机计数直接看到哪些设备暴露在本次 29 个 CVE 中按 CVSS 分数与 CISA KEV 状态排序处置优先级同日在 GitOps 配置中把macos_updates.minimum_version设为26.6.2、deadline设为 1–3 天后的日期或使用latestdeadline_days保持跟进最新版iOS / iPadOS 同理截止日之后报告中的hosts_count会告诉你还有多少台落在旧版本上——这些就是需要人工介入离线、被关闭的自动更新、用户反复跳过的少数派下一次发布重复同一套流程版本号与日期随新公告滚动更新即可。小结Apple 三周三更的节奏意味着等下一个补丁一起装已经不再成立29 个 CVE其中 3 个内核漏洞、1 个 ImageIO 代码执行也远不是有空再打的清单。Fleet 把这件事拆成了两个清晰的环节OS 版本报告负责给出谁还没更新的精确计数并直接绑定 CVE 信息GitOps 里的minimum_version与deadline负责把剩余的缺口自动补齐。先看到数字再执行策略补丁滞后就不再是拍脑袋的猜测而是可度量、可强制、可复盘的过程。深入阅读OS 版本报告 REST API 完整参数与响应示例docs/REST API/rest-api.mdOS 更新强制策略的 YAML 配置详解docs/Configuration/yaml-files.mdAppleOSUpdateSettings配置结构与校验逻辑源码server/fleet/app.goOS 版本列表/详情端点的服务端实现server/service/hosts.goOS 版本聚合数据结构定义server/fleet/hosts.go【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价