備真正升級)
用 Fleet 量化補丁滯后從 Apple 29 個 CVE 的安全更新看如何讓每個設(shè)備真正升級【免費下載鏈接】fleetOpen device management項目地址: https://gitcode.com/GitHub_Trending/fl/fleet導(dǎo)讀Apple 在 iOS 26.6.1 與 macOS Tahoe 26.6.2 中一次性修復(fù)了 29 個漏洞含 3 個內(nèi)核缺陷且這是三周內(nèi)的第三個安全發(fā)布。本指南以這次更新為背景講解如何用 Fleet 的 OS 版本報告拿到誰還跑在脆弱版本上的精確計數(shù)再通過 GitOps 配置minimum_version與deadline把請升級變成自動落地的強制結(jié)果幫助你從假設(shè)大家已更新轉(zhuǎn)向數(shù)清楚誰還沒更新。背景29 個 CVE、3 個內(nèi)核漏洞、三周三更Apple 官方安全頁面為這次發(fā)布列出了 29 個 CVE分布在 Audio、ImageIO、IOGPUFamily、內(nèi)核kernel與 WebKit 等組件中。其中21 個漏洞位于 WebKit瀏覽器引擎是這次修復(fù)的絕對大頭3 個是內(nèi)核kernel漏洞屬于可被利用來提權(quán)或突破系統(tǒng)邊界的嚴重級別1 個是 ImageIO 中的代碼執(zhí)行漏洞——ImageIO 是設(shè)備上幾乎所有 App 打開圖片時都會用到的框架攻擊面極大iOS 額外修復(fù)了一個電話telephony漏洞它允許處于特權(quán)網(wǎng)絡(luò)位置的攻擊者繞過 IPSec 認證并攔截流量。截至目前這些漏洞均未被報告為已被積極利用。這恰恰是在漏洞被武器化之前快速打補丁最關(guān)鍵的窗口期。比 CVE 數(shù)量更值得關(guān)注的是發(fā)布節(jié)奏。這是 Apple 三周內(nèi)的第三次安全發(fā)布——幾周前 iOS 26.6 在 iPhone 上修復(fù)了超過 75 個問題、在 Mac 上修復(fù)了超過 150 個。過去安全團隊可以圍繞 Apple 相對可預(yù)測的更新節(jié)奏做規(guī)劃但現(xiàn)在節(jié)奏已經(jīng)變了每隔一兩周就會出現(xiàn)一次新的安全發(fā)布等下次一起更不再是一個合理的計劃。為什么更新已推送不等于更新已落地推送一個更新你的設(shè)備池里總會有不到 100% 的設(shè)備真正安裝它每次都如此自動更新開關(guān)被人為關(guān)閉某臺筆記本合蓋一整周根本沒機會聯(lián)網(wǎng)檢查更新自然不知道補丁的存在手機上彈出今晚安裝提示用戶連續(xù)三個晚上把它滑掉設(shè)備離線數(shù)天回連時才發(fā)現(xiàn)自己錯過了整整一輪補丁。這些問題在有人提出錯誤的問題之前都不會浮出水面——比如那臺特定的脆弱 Mac 是否還在網(wǎng)絡(luò)上。所以正確的修復(fù)方案不是更好的提醒而是一個你可以隨時拉取的計數(shù)。與其假設(shè)補丁因為被推送就落地了你需要一個數(shù)字現(xiàn)在還有多少臺設(shè)備運行著脆弱版本并且按平臺拆分。看清誰還在暴露Fleet OS 版本報告Fleet 的OS 版本報告會把每一臺已注冊的 Mac、iPhone、iPad 按精確構(gòu)建版本分組并為每個版本附加實時主機數(shù)。篩選 macOS 時你會得到一份把設(shè)備池清晰切分的清單多少臺已經(jīng)跑到 Tahoe 26.6.2多少臺還停留在 26.6.1 或更早多少臺根本沒有帶著更新回連檢查過。同一份報告同時覆蓋 iOS 與 iPadOS因此一臺跑著 iOS 26.6 的手機會和仍在追趕的 Mac 出現(xiàn)在同一份清單里而不需要單獨逐個平臺去查。報告背后的 API報告的數(shù)據(jù)來自 REST API 端點GET /api/v1/fleet/os_versions路由注冊見 server/service/handler.go。它支持以下查詢參數(shù)完整說明見 docs/REST API/rest-api.md參數(shù)類型說明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 版本返回的漏洞數(shù)量省略則返回全部page/per_pageinteger分頁參數(shù)默認每頁 20 條order_keystring排序字段允許值為hosts_count默認降序從源碼實現(xiàn)看server/service/hosts.go服務(wù)端會對這些參數(shù)做嚴格校驗platform必須是上述七種之一os_name與os_version必須成對出現(xiàn)排序鍵只允許hosts_count。漏洞數(shù)據(jù)僅在分頁后的當前頁上拉取以避免海量 CVE 拖慢響應(yīng)——這是實現(xiàn)層面為報告做的性能取舍。響應(yīng)中每個 OS 版本對象對應(yīng) server/fleet/hosts.go 定義的OSVersion結(jié)構(gòu)核心字段包括{ 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 } ] }關(guān)鍵點在于vulnerabilities數(shù)組中的每一項都攜帶CVE ID、CVSS 分數(shù)、EPSS 概率、是否在 CISA 的 Known Exploited VulnerabilitiesKEV列表中以及該漏洞在哪個版本被修復(fù)resolved_in_version。也就是說報告本身已經(jīng)回答了那個否則要拿 Apple 公告手動交叉核對一下午的問題現(xiàn)在哪些設(shè)備暴露在本次發(fā)布的這 29 個 CVE 中的哪些之上。對 macOS 與 Windows報告按 OS 版本給出精確的版本級漏洞數(shù)據(jù)對 Linux則基于該 OS 版本上各主機的內(nèi)核漏洞進行聚合活動與非活動內(nèi)核都會被計入見 docs/REST API/rest-api.md。把報告變成強制截止日期GitOps 里的 minimum_version 與 deadline報告告訴你現(xiàn)狀。在 Fleet Premium 上你還可以不為每個落后設(shè)備開一張工單就彌合差距在 Fleet 的 GitOps 配置中為 macOS、iOS 或 iPadOS 設(shè)置minimum_version和deadline就能把請升級變成被強制執(zhí)行的結(jié)果——低于最低版本的設(shè)備會收到提示一旦截止日期過去更新就會安裝。這套配置的完整 YAML 示例見 docs/Configuration/yaml-files.mdmdm: macos_updates: # Available in Fleet Premium # 方式一指定具體版本號 minimum_version: 15.4.1 deadline: 2025-07-01 # 方式二始終跟進 Apple 為每臺硬件發(fā)布的最新版 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各參數(shù)的含義與約束同上文檔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 發(fā)布更新后多少天之內(nèi)必須安裝。僅當minimum_version為latest時使用此時截止日不再是固定日歷日而是相對每個版本的發(fā)布日期推算。默認null。update_new_hosts通過自動設(shè)備注冊ADE新入網(wǎng)的 macOS 主機會在 Setup Assistant 期間直接更新到 Apple 最新版本。為向后兼容若未指定但deadline與minimum_version已設(shè)置則默認視為true否則默認false。配置在源碼層的校驗邏輯AppleOSUpdateSettings類型定義與校驗邏輯見 server/fleet/app.goValidate()方法會把上面這些約束落到實處版本號必須匹配^\d(\.\d)?(\.\d)?$格式——只接受純數(shù)字版本號如13.0.1不接受Ventura 13或13.0.1 (22A400)這類帶描述或構(gòu)建號的寫法deadline必須能被2006-01-02格式解析latest模式下不允許同時設(shè)置deadline且必須提供大于 0 的deadline_days非latest模式下不允許設(shè)置deadline_daysminimum_version與deadline必須成對出現(xiàn)。這種校驗在設(shè)計上保證了配置在進入 Git 審查流程時就已經(jīng)是自洽的不會出現(xiàn)設(shè)了版本沒設(shè)截止日之類的半成品策略。配置本身也在 Git 里整份 GitOps 配置文件存放在版本庫中像其他任何變更一樣接受代碼審查并且以相同方式應(yīng)用到該平臺的每一臺已注冊設(shè)備上。這意味著下一次安全發(fā)布到來時你不需要重新發(fā)明一套部署計劃——只需更新版本號與日期走一遍熟悉的審查與fleetctl apply流程即可參考fleetctl apply應(yīng)用配置的方式見 docs/Contributing/guides/cli/fleetctl-apply.md。配套的 REST API 也暴露了同樣的mdm.macos_updates/ios_updates/ipados_updates配置結(jié)構(gòu)見 docs/REST API/rest-api.md方便以代碼方式讀取與核對當前策略。補丁滯后首先是可見性問題其次才是更新問題內(nèi)核漏洞以及圖片解析這類日常框架中的代碼執(zhí)行漏洞不會等你設(shè)備池里的落后設(shè)備找時間安裝更新。那些在這次發(fā)布中處理得當?shù)慕M織往往不是補丁打得最快的而是能在幾分鐘內(nèi)確切知道哪些設(shè)備還需要打補丁的。把這次的節(jié)奏套進工作流里你可以這樣做發(fā)布當天用GET /api/v1/fleet/os_versions?platformdarwin或 UI 中的 OS 版本報告拿到 26.6.1 及更早版本的主機計數(shù)直接看到哪些設(shè)備暴露在本次 29 個 CVE 中按 CVSS 分數(shù)與 CISA KEV 狀態(tài)排序處置優(yōu)先級同日在 GitOps 配置中把macos_updates.minimum_version設(shè)為26.6.2、deadline設(shè)為 1–3 天后的日期或使用latestdeadline_days保持跟進最新版iOS / iPadOS 同理截止日之后報告中的hosts_count會告訴你還有多少臺落在舊版本上——這些就是需要人工介入離線、被關(guān)閉的自動更新、用戶反復(fù)跳過的少數(shù)派下一次發(fā)布重復(fù)同一套流程版本號與日期隨新公告滾動更新即可。小結(jié)Apple 三周三更的節(jié)奏意味著等下一個補丁一起裝已經(jīng)不再成立29 個 CVE其中 3 個內(nèi)核漏洞、1 個 ImageIO 代碼執(zhí)行也遠不是有空再打的清單。Fleet 把這件事拆成了兩個清晰的環(huán)節(jié)OS 版本報告負責(zé)給出誰還沒更新的精確計數(shù)并直接綁定 CVE 信息GitOps 里的minimum_version與deadline負責(zé)把剩余的缺口自動補齊。先看到數(shù)字再執(zhí)行策略補丁滯后就不再是拍腦袋的猜測而是可度量、可強制、可復(fù)盤的過程。深入閱讀OS 版本報告 REST API 完整參數(shù)與響應(yīng)示例docs/REST API/rest-api.mdOS 更新強制策略的 YAML 配置詳解docs/Configuration/yaml-files.mdAppleOSUpdateSettings配置結(jié)構(gòu)與校驗邏輯源碼server/fleet/app.goOS 版本列表/詳情端點的服務(wù)端實現(xiàn)server/service/hosts.goOS 版本聚合數(shù)據(jù)結(jié)構(gòu)定義server/fleet/hosts.go【免費下載鏈接】fleetOpen device management項目地址: https://gitcode.com/GitHub_Trending/fl/fleet創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考