macOS Tahoe 26.4 セキュリティパッチ解析

01OK
802.1X
CVE-2026-28865
影響 ネットワーク上で特権的な地位を悪用した攻撃者が、ネットワークトラフィックを傍受できる可能性がある。
説明 ステート管理を改善し、認証の脆弱性に対処しました。
具体的な脆弱性
802.1X/PEAP(EAP8021X)で内側認証の「保護された成功通知(EAP Extensions Result TLV Success/Type33)」を内側方式やサーバ信頼の確からしさと無関係に無条件で認証成功扱いしていた。evil twin(偽AP+偽RADIUS)が成功TLVだけ送れば認証バイパス→MITM傍受が成立。
原因
peap_plugin.cのpeap_process_extensionsが、内側EAP固有の成功検証を経ずトンネル内Successシグナルだけでinner_auth_state=Successにしていた典型的な認証ステートマシン欠陥。
特定方法
Apple OSS公開ソース(eap8021x-368.60.2→368.101.1)のタグ差分でpeap_plugin.cの+78行を一次特定し、両IPSWから抽出したEAP8021Xバイナリでバージョンとパッチ文字列(protected success indication系3件)の有無により裏付け。
02OK
Accounts
CVE-2026-28877
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 ステート管理を改善し、認証の脆弱性に対処しました。
具体的な脆弱性
Accounts.frameworkのプロセス内read-throughキャッシュ(ACCredentialCache/ACAccountStoreCache)が、認証状態を変える経路でキャッシュ無効化を欠き、検証・更新・移行・検証付き保存後も古い(stale)クレデンシャル/アカウント情報がaccountsdの最新認可を経ずアプリへ返り、機微データにアクセスできた。
原因
26.3.1ではsetCredential:経路だけがキャッシュを無効化し、saveVerified/verifyCredentials/renew/migrate等の状態変更経路で無効化を取りこぼした「一部書込経路だけ無効化忘れ」バグ。
特定方法
class-dump --diffで再コンパイル不変の新規メソッドclearCachedAccountsForType:1点を発見、clearCachedCredentialsForAccount:呼出元が5経路で0→追加されたことと該当メソッドの逆アセンブルで確定。
03OK
Admin Framework
CVE-2026-28823
影響 ルート権限を持つアプリが、保護されているシステムファイルを削除できる可能性がある。
説明 検証を強化して、パスの処理における脆弱性に対処しました。
具体的な脆弱性
SystemAdministration.framework(ADM*)の特権ヘルパwriteconfig(root)が、ユーザ削除時のホームディレクトリを「パス文字列」で受け削除していたため、symlink/TOCTOUでパスをすり替えられroot権限で保護システムファイルを削除できた。
原因
writeconfigの_securelyRemoveFileAtPath:がfileExistsAtPath:確認のみでremovefile()し、所有者UID/ディレクトリ種別/Users限定/..拒否/symlink対策が全て無く、検証と削除の間にTOCTOU窓があった。
特定方法
両IPSWのDSCからSystemAdministrationをclass-dump --diffし、API引数がパス→fd+expectedUIDへ変わった点とwriteconfig側新規_validateAndRenameDirectoryFileDescriptor:(fstat+UID検証+/Users限定+..拒否)の逆アセンブルで確定。
04OK
Apache
CVE-2025-55753、CVE-2025-58098、CVE-2025-59775、CVE-2025-65082、CVE-2025-66200
影響 Apacheに複数の脆弱性がある。
説明 これはオープンソースコードにおける脆弱性です。
具体的な脆弱性
Apache mod_md(ACME)のmd_job_delay_on_errorsが指数バックオフをdelay=min_delay<<(err_count-1)の単発左シフトで計算し、apr_time_t(signed int64)が桁あふれして負値/0になり上限クランプを素通り→遅延ゼロの即時リトライ嵐(DoS)。既定構成で約30日で発火。
原因
符号付き整数の左シフトオーバーフロー(CWE-190)と過大シフト量によるUB。上限クランプが正の超過しか想定していなかった。
特定方法
Apple公開ソース(apple-871.140.1/mod_md 2.4.25→apple-886/2.6.6)のmd_status.c差分と上流コミットで根本原因を行単位特定、int64 PoCで約30日発火を再現。なおmacOS出荷Apacheはmod_md未同梱で実運用は到達不能と実機確認。
05NG
AppleMobileFileIntegrity
CVE-2026-28824、CVE-2026-20696
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 ステート管理を改善し、認証の脆弱性に対処しました。
NG理由
修正対象がAMFI.kext内CoreEntitlements V2のCEContextCheckSubset(エンタイトルメント部分集合=認可判定)の全面再実装(緩い遅延DER方式→型厳密・索引化方式)であることまではバイナリ+ヘッダで関数名レベルに確定したが、単一の悪性DER入力で確実にバイパスする厳密条件が型混同/重複キー/配列包含の複数仮説に分かれ、静的解析だけでは一意に確定できなかった。
06OK
AppleMobileFileIntegrity(2026年5月11日更新)
CVE-2026-20699
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 Intel搭載モデルのMacコンピュータでダウングレード問題に対処しました。
具体的な脆弱性
AMFIの-[AMFIPathValidator_macos validateWithError:]が、コード署名要求を満たせないad-hoc署名バイナリでもrestricted entitlementを宣言していれば拒否せず、Intel機で本来上位署名でのみ得られる特権エンタイトルメント(機微データアクセス)を取得できた(downgrade)。
原因
requirement評価がerrSecCSReqFailed(-67050)で失敗かつ_hasRestrictedEntitlementsが真の組合せを致命エラーとして弾く分岐が欠落していた。
特定方法
両IPSWの両アーキDSCからAMFI framework/libmisを抽出、validateWithError:のcold block 7→8増加と新規文字列"Adhoc signed app with restricted entitlements detected"を発見、errSecCSReqFailed判定とivar0x24=_hasRestrictedEntitlements(ゲッター逆アセンブルで実名確定)から拒否条件を復元。
07OK
AppleScript
CVE-2026-20684
影響 アプリにGatekeeperのチェックを回避される可能性がある。
説明 制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
OpenScripting.frameworkのScriptIOが、コンパイル済みAppleScript('scpt')をデータフォークが空のときレガシーなリソースフォークから読み込んで実行していたため、Gatekeeper/quarantine評価と整合しないリソースフォークに悪性スクリプトを隠してGatekeeperチェックを回避できた。
原因
OSAインタプリタセキュリティポリシーが及ばないリソースフォークという格納経路が生きており、しかも検査がpolicyフラグ(i&1)従属で検査すら走らない内部経路があった設計上の穴。
特定方法
DSCの.mapでOpenScripting本体がキャッシュ収録と判明し両版抽出、ScriptIOコンストラクタの逆アセンブルでリソースフォーク'scpt'検出時に無条件失敗(-1758)へ変わった点と新規拒否文字列・SecurityPolicyTestBufferFromPath削除で確定。
08OK
Archive Utility
CVE-2026-20633
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 シンボリックリンクの処理を改善することで、この問題に対処しました。
具体的な脆弱性
Archive Utility本体(BAHCodec)が展開後の保存先/移動先設定を生のパス文字列で環境設定に保存しfileURLWithPath:で直接URL化していたため、同一ユーザの別アプリが設定値を書換えたりsymlinkを仕込むと、ユーザ権限/TCCスコープで動く展開処理がリンク先(保護領域)へリダイレクトされ機微データへアクセスできた。
原因
展開先の信頼境界が攻撃者が触れる環境設定の文字列パスにあり、fileURLWithPath:はリンク非解決でTOCTOU/symlinkすり替えに弱かった。
特定方法
両IPSWからArchive Utility一式を抽出しclass-dump --diff+IMP復元によるメソッドサイズ差分で新クラスBAHRelocationPrefを特定、targetFolderForPrefKey:がfileURLWithPath:→セキュリティスコープブックマーク解決へ置換された逆アセンブルで確定。XPCヘルパAUHelperServiceは囮。
09NG
Archive Utility
CVE-2026-28910
影響 悪意のあるアプリが任意のファイルにアクセスできる可能性がある。
説明 アクセス権のチェック機能を強化することで解決されました。
NG理由
DesktopServicesPrivのclass-dump差分でArchiveService.xpcのプロトコルがaddToKeychain:→options:に一般化された点とクライアント経路(confused-deputy疑い)までは特定したが、改善されたアクセス権チェックの本体がサーバ側ArchiveService.xpc実行ファイル内にあり、それがDSC非収録かつルートFS DMGがAEA暗号化で抽出不能なため、欠落していた具体的検査を命令レベルで提示できなかった。
10NG
Audio
CVE-2026-28879
影響 悪意を持って作成されたWebコンテンツを処理するとプロセスが予期せずクラッシュする可能性がある。
説明 メモリ管理を強化し、解放済みメモリ使用の脆弱性に対処しました。
NG理由
Web経由オーディオUAFの攻撃面がAudioToolboxCoreのパース経路であることまでは追い込んだが、26.4でオーディオスタック全体が新ツールチェーンで全面再コンパイル(libc++ ABIタグ100%反転)されており、3バイナリ横断の精密正規化で残差3〜50の外科的パッチ帯がゼロ・UAF修正署名も皆無と立証され、単一の修正関数を再コンパイルチャーンから分離特定できなかった。
11OK
Audio
CVE-2026-28822
影響 攻撃者にアプリを突然終了される可能性がある。
説明 メモリ処理を強化し、型の取り違えの脆弱性に対処しました。
具体的な脆弱性
AudioQueueのIOエンジンAQMEIO_Baseが通知クライアント一覧をstd::vector<生ポインタ>で管理しており、クライアントが先に解放されるとダングリングポインタが残り、配信/破棄経路(SubmixTapDispose等)が解放済み(別型に再利用され得る)メモリへ仮想関数を呼び出して型取り違え→クラッシュした。
原因
通知クライアントリストが対象の生存を保証しない生ポインタで、使用前の生存確認なく無条件にデリファレンス・仮想呼び出ししていた。
特定方法
AudioToolboxを逆アセンブルし、要素型マングル名がvector<生ポインタ>(v263:15→v264:0)からvector<weak_ptr>(0→49)へ全面変化したgrep -cが決定打。各経路でlock()による生存確認後のみ呼出に変わった逆アセンブルで裏取り。
12NG
Calling Framework
CVE-2026-28894
影響 リモートの攻撃者からサービス運用妨害を受ける可能性がある。
説明 入力検証を強化し、サービス運用妨害の脆弱性に対処しました。
NG理由
Calling=TelephonyUtilities+通話デーモンであること、リモート無操作DoSの攻撃面が着信AV通話プッシュIMAVPushの検証経路(validateIMAVPush:)であることまでは強い根拠で特定したが、実検証本体validateIMAVPush:reply:のサーバ実装がavconferenced/callservicesd等のデーモン内にあり、DSC非収録かつDMGがAEA暗号化で抽出不能なため、欠落した具体的検証を修正差分で実証できなかった。
13OK
Clipboard
CVE-2026-28866
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 シンボリックリンクの検証を改善することで、この問題に対処しました。
具体的な脆弱性
Universal Clipboard/共有ペーストボードで、UserActivity.frameworkの-[UAPasteboardFileItemProvider accessFileAtURLWithCompletion:]が受領ファイルURLのsymlink判定なしにsandbox拡張を消費して読み取っていたため、symlinkを指すURLをペーストボードに載せるだけでリンクを辿り本来アクセス不可の機微データを読めた(CWE-59)。
原因
ペーストボード経由のファイルURLを無検証で信頼しsandbox拡張を消費・NSFileCoordinatorで読み取っており、リンク追従で意図外の実体ファイルにアクセスできた。
特定方法
pbs/pboard/HIServices/CFは全て論理無変更と判明し、ビルドパス除外後の新規文字列比較でUserActivityにのみsymlink拒否文字列群と_NSURLIsSymbolicLinkKeyインポート0→1が出現、accessFileAtURLWithCompletion:のgetResourceValue:forKey:による拒否ガード追加を逆アセンブルで確認。
14OK
CoreMedia
CVE-2026-20690
影響 悪意を持って作成されたメディアファイルでオーディオストリームを処理するとプロセスが終了する可能性がある。
説明 配列境界チェック機能を改善することで、領域外アクセスの脆弱性に対処しました。
具体的な脆弱性
CoreMedia CMAudioFormatDescriptionCreateが攻撃者制御のAudioChannelLayoutを保持する際、宣言要素数mNumberChannelDescriptionsとバッファ長layoutSizeの整合を検証せず、後段の配列走査で領域外読み取り(DoS)を招く。
原因
26.3.1はlayoutSizeぶんだけ確保・複製するが要素数を一切参照せず、短いバッファに対し巨大な要素数を許容。26.4でlayoutSize>=12+n*20の境界チェックを生成時に追加。
特定方法
CoreMedia本体をdyldキャッシュから抽出しobjdump差分。再ビルドノイズ下で「符号なし比較分岐の増加数」で全関数ランク付けし、本関数(8→12,+4)を唯一の正シグナルとして特定。最大diff関数parseMPEG4AudioSpecificConfigは囮。
15OK
CoreServices
CVE-2026-28821
影響 アプリに昇格した権限を取得される可能性がある。
説明 プロセスエンタイトルメントの検証を強化することで解決されました。
具体的な脆弱性
ScopedBookmarkAgentがO_SEARCH/O_EXEC(検索専用、読み取り権不要)で開かれたディレクトリfdにも読み取り権を含むsecurity-scoped bookmarkを発行し、検索権限しか持たないアプリが内容を読める権限昇格。
原因
ブックマーク生成時の検証がfdのO_ACCMODE(読み書きモード)だけを見ており、access-modeが0になるO_EXEC/O_SEARCHをO_RDONLYと誤認。26.4でfcntl(F_GETFL)のO_EXECビット(0x40000000)検査を追加。
特定方法
AEA手動復号+hdiutil手動マウントでデーモン抽出、objdumpで差分。新規tbnz w0,#0x1e(0→1)と新規文字列"without read access"が決め手。#16コンテンツ型CVEと取り違え注意。
16OK
CoreServices
CVE-2026-28838
影響 アプリがサンドボックスを破って外部で実行される可能性がある。
説明 サンドボックスの制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
LaunchServices __LSSetContentTypeHandlerに認可ゲートが欠落し、サンドボックス内を含む任意アプリがエンタイトルメント・ユーザ同意なしに任意UTIの既定ロールハンドラを差し替え可能(サンドボックス回避/既定ハンドラ乗っ取り)。
原因
URLスキーム経路__LSSetSchemeHandlerには認可ゲートがあったのに、コンテンツ型経路だけ無検査の非対称。26.4で__LSCheckEntitlementForChangingDefaultHandlerを型経路に追加し、未許可は新規同意UIを必須化。
特定方法
dyldキャッシュ抽出+objdump差分。新規ログ文字列は囮(判定本体は不変)で、同種2経路の認可ゲート呼び出し非対称が本体。呼び出し側の差(107→127命令、増えたbl先)が決め手。
17OK
CoreUtils
CVE-2026-28886
影響 ネットワーク上で特権的な地位を持つユーザからサービス運用妨害を受ける可能性がある。
説明 入力検証を強化し、ヌルポインタ逆参照に対処しました。
具体的な脆弱性
CoreUtils組込libsrpのSRP pair-setup処理が、ネットワーク由来(AirPlay/HomeKitペアリングTLV)の長さフィールドを未検証で下流に渡し、32bit int扱いの確保失敗・符号拡張でNULL/不正ポインタ逆参照→DoS。
原因
下流_cstr_setnが長さをint扱い(add w1,w2,#1/strb [x,w,sxtw])するのに、SRPエントリ4関数が攻撃者制御の長さを検証せず渡していた。26.4で各長さにlen<2^31検証(lsr#31;cbnz→-6743)を追加。
特定方法
dyldキャッシュ抽出+objdump。再ビルドノイズ下で(増えたcbz/cbnz)-(減ったb.lt等イディオム)のnetスコアでランク付けし、libsrp4関数が上位独占。協調した最小限guard追加が決め手。
18NG
Crash Reporter
CVE-2026-28878
影響 アプリが、ユーザがインストールしたアプリを特定できる可能性がある。
説明 機微なデータを削除することで、プライバシーの問題に対処しました。
NG理由
ReportCrash等を網羅的にdiffしたが、26.4がパターンマッチング撤去/PGM・Stackshot追加/Swift移行の大型機能改修を同時投入しノイズ過多で、アプリ列挙を可能にした機微データ削除を一意分離できず。最有力は修正が26.3.1以前に先行投入され差分窓に現れない可能性(手元は263/264の2版のみ)。
19OK
CUPS
CVE-2026-28888
影響 アプリがルート権限を取得できる可能性がある。
説明 ステート処理を強化することで、競合状態の脆弱性に対処しました。
具体的な脆弱性
cupsd create_subscriptions()がクライアント指定のnotifier-recipient-uri scheme から組んだnotifierパスを通常ファイルか確認せずroot実行し、symlink/特殊ファイル経由+TOCTOUで任意プログラムをroot実行(権限昇格)。
原因
双子関数add_subscriptions()はaccess+stat+S_ISREGの強い検査を持つのに、create_subscriptions()はaccessと./..チェックのみでstat/S_ISREGが欠落。26.4でstat+regular-fileガードを追加し対称化。
特定方法
cupsd(dyldキャッシュ非収録)をシステムDMGから抽出、関数境界復元+正規化ハッシュ差分。regular-fileガードcmn#0x7000の出現数0→3を入口に、意味変化は本関数1か所のみと切り分け。libcupsは囮。
20OK
CUPS
CVE-2026-28893
影響 プリントのプレビューを使用したときに、書類が一時ファイルに書き込まれる可能性がある。
説明 一時ファイルの処理を改善することで、プライバシーの問題に対処しました。
具体的な脆弱性
PrintCore PJCBeginDocumentが文書フォーマット未指定の既定ケース(Cocoa標準印刷/プレビュー)でPMSpoolFormat=application/pdfを強制し、プレビュー時に書類の完全なPDFコピーを一時ファイルへ書き出すプライバシー漏えい。
原因
既定フォーマット時に無条件でPDFスプールを強制する分岐。26.4でこのPMTicketSetItem(...,application/pdf)呼び出しを削除し、書類PDFの一時ファイルmaterializeを抑止。
特定方法
"preview"文字列でPrintCoreに絞り込み、ファイル生成プリミティブ(open/mkdir/権限)が全経路で不変と消去法確認。イディオム畳み込み後の唯一の意味差=PMTicketSetItem呼び出し2→1(削除)、chained-fixupでCFString解決が決め手。
21OK
curl
CVE-2025-14524
影響 curlに脆弱性が存在し、誤った接続を通じて機密情報が意図せず送信される可能性がある。
説明 これはオープンソースコードにおける脆弱性です。
具体的な脆弱性
libcurl SASLでOAuth2ベアラトークンが、HTTP(S)から別プロトコル(IMAP/LDAP/POP3/SMTP)へのリダイレクト追従時に、本来送るべきでないリダイレクト先ホストへ漏えい(認証情報漏えい)。
原因
Curl_sasl_startがベアラトークンを追従中か・他ホスト送出許可かを確認せず無条件にロード。26.4で(!this_is_a_follow||allow_auth_to_other_hosts)?token:NULLガードをバックポート(+7命令)。
特定方法
上流curl8.17.0→8.18.0ソース差分で根本原因確定後、版番号据置(libcurl/8.7.1)のApple同梱バイナリを抽出しpatch-diff。x24(=bearer,[data+0x918])ロード前のtbz/tbnzガード追加を命令レベルで裏取り。
22OK
DeviceLink
CVE-2026-28876
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 ディレクトリパスの処理における解析不備の脆弱性に、パス検証を強化することで対処しました。
具体的な脆弱性
DeviceLinkの*OnComputer系ハンドラがペアリング相手由来パスをルートにそのまま連結し..無検査でmkdir/open/rename等を実行、ルート境界外(他ユーザのホーム等)の機微データへアクセス(パストラバーサル)。
原因
ピア由来パス成分の..を一切検証していなかった。修正は共通検証関数__DLResolveAndValidatePathを新設し..の4出現形(単独/先頭/途中/末尾)を全ハンドラ経由で拒否。
特定方法
DeviceLink(dyldキャッシュ非収録、Templates/Data側実体)を抽出。ただし修正は26.3.1で既投入され263↔264差分は空。新規文字列"Path contains .."/"/../"、検証関数の全11ハンドラ配線、影響記述の三点一致で根本原因を確定。
23OK
Diagnostics
CVE-2026-28892
影響 ファイルシステムの保護された部分をアプリに変更されるおそれがある。
説明 脆弱なコードを削除することで、アクセス権の問題に対処しました。
具体的な脆弱性
OSAnalytics(コンポーネント名Diagnostics) OSATaskingが、呼出側指定のAWDルーティングを受理しrootのanalyticsdがタスキングblobを保護ディレクトリ/Library/AWD配下へ書き込む、非特権アプリによる保護領域改変。
原因
タスキング受理面がroutingを呼出側指定可能で、AWD routingの保存先が保護パス/Library/AWD。macOS未サポートのレガシー経路。26.4でAWDルーティング(pathAWDTasking//Library/AWD)を丸ごと外科的に削除。
特定方法
再ビルドノイズを貫通する削除文字列/セレクタ指標で特定。/Library/AWD・pathAWDTasking・unsupported文字列が263→264で消滅、CA/proxyは残存。capstone arm64e停止対策で4バイト単位デコード。
24OK
File System
CVE-2026-28832
影響 アプリがカーネルメモリを漏洩させる可能性がある。
説明 配列境界チェック機能を改善することで、領域外読み込みの脆弱性に対処しました。
具体的な脆弱性
APFS _key_val_to_jobjがB-tree16bit長さからjobjバッファサイズを計算する際、確保サイズだけ16bit切り詰めしフル長でstrlcpyコピー、node外を読み進めるカーネルメモリ漏えい(OOB read、getattr/xattr/readdir応答で開示)。
原因
26.3.1はsize=(len+header)&0xffffでlen+header>=0x10000がラップして極小確保→フル長コピー/記録のサイズ不整合。26.4で切り詰めを撤去し0<size<0x10000範囲チェックを追加。
特定方法
apfs kextをカーネルコレクションから抽出。全面リビルドノイズ下で「符号なし比較分岐の増加数(boundscheck-gain)」で全~2400関数を機械ランキングし唯一の正シグナルとして特定。dirlseek/searchfsは囮。
25OK
GeoServices
CVE-2026-28870
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 検証を強化することで、情報漏洩に対処しました。
具体的な脆弱性
_GeoServices_GeoToolbox(PlaceDescriptor実装)が場所のシリアライズで、システムが内部解決した派生(derived)精密座標と場所名を無条件で表現辞書に含め、アプリが本来持たない精密位置・場所名(機微データ)を取得可能。
原因
座標の出自(アプリ提供か派生か)を検証せず常に精密座標・名前を出力。26.4で_isCoordinateDerived検証を追加し、派生時は素座標露出と名前付与を抑制、MUID表現(pegasus_geo_internal_id)を追加。
特定方法
GeoServices3兄弟のうち+17KBの小型_GeoServices_GeoToolboxに絞り、純新規cstring(_isCoordinateDerived/_muid/pegasus_geo_internal_id)で裏取り。セレクタ呼出規約世代差(msgSendスタブ化)のgrep誤判定に注意。
26OK
GPU Drivers
CVE-2026-28834
影響 アプリがシステムを予期せず終了させる可能性がある。
説明 ステート処理を強化することで、競合状態の脆弱性に対処しました。
具体的な脆弱性
IOGPUFamily IOGPUDevice::set_resource_purgeableがpurgeable状態変更をGPU実行状態と同期せず、GPUが参照中リソースのGARTマッピングが回収・再利用され、解放/再利用済みメモリへのGPUアクセスでカーネルパニック(TOCTOU/DoS)。
原因
特定リソース種別・回収要求値でprepare→completeMemoryだけ行いGPU完了確認なし。26.4でtestAllStamps()(GPU quiesce判定)+完了時のみenable_gart_collector()を挿入し直列化。
特定方法
kextを抽出、再ビルド+PACノイズ下で「offset無し実シンボルへのbl集合差分+呼出元逆引き」を使用。testAllStampsの呼出元が0→1(元はデッドコード)が決定打。submitCommandBufferのunlock+2はtail-dup偽陽性。
27OK
iCloud
CVE-2026-28881
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 機微なデータを移動することで、プライバシーの問題に対処しました。
具体的な脆弱性
iCloud Drive デーモンbird(CloudDocs/iCloudDriveCore)がファイル削除時の一時退避ディレクトリ(file-unlinker staging)をユーザのホーム/キャッシュ配下に作成。rename後unlink完了までの間、同一ユーザ権限のアプリが削除途中の実ファイル(機微データ)を読み取れた。
原因
削除途中ファイルの作業ディレクトリをデーモンのサンドボックス境界外(ユーザ到達可能領域)に置いていた信頼境界の設計欠陥。
特定方法
文字列差分でdaemon container関連の新規文字列を発見、BRSpecialFoldersのメソッドが5→6個増えた新規internalDaemonContainerPathWithError:の唯一の呼出元を逆アセンブルで追跡。initWithCacheDirPath:廃止+_moveOldUnlinkDir新設で保存場所移設を確認。
28OK
iCloud
CVE-2026-28880、CVE-2026-28833
影響 アプリが、ユーザがインストールしたアプリを特定できる可能性がある。
説明 制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
CloudDocsがiCloud Driveコンテナの状態変化をNSDistributedNotificationCenter(システム全体ブロードキャスト、権限ゲートなし)で配信し、userInfoにコンテナID(=アプリのbundle id)を載せていた。任意アプリが購読でインストール済みアプリを列挙できた。
原因
配信通知でコンテナID(アプリ識別子)を無制限にブロードキャストしていたアクセス制御欠落。
特定方法
class-dump構造差分で通知系クラスの作り替えを発見、postContainerStatusChangeNotificationWithID:key:value:が漏洩本体と判明。CFString解決で通知名/キーを確認、264で関数削除+hasDaemonicPartsゲート付きprivate Darwin notify+ID難読化への置換を確認。
29OK
ImageIO
CVE-2025-64505
影響 悪意を持って作成されたファイルを処理するとアプリが予期せず終了する可能性がある。
説明 これはオープンソースコードにおける脆弱性です。
具体的な脆弱性
ImageIO同梱libpng(libPng.dylib)のpng_set_quantizeがquantize_index配列をnum_palette分しか確保せず、攻撃者制御の0..255パレットインデックスでpng_do_quantizeがヒープ境界外読み取り(最大256-num_paletteバイト)。
原因
quantize_indexの確保・初期化を宣言パレット長num_paletteに限定し、8bitインデックス全域(0..255)をカバーしていなかった。
特定方法
版表記1.6.43据置バックポートのため版数判別不可。全関数シンボル集合のcomm差分で「png_set_quantizeが消失した1点のみ」が変化と判明(他518関数不変)。上流コミット6a528eb(確保をPNG_MAX_PALETTE_LENGTH=256化)と照合。
30OK
IOGraphics
CVE-2026-28842
影響 バッファオーバーフローが原因でメモリが破損したりアプリが予期せず終了したりする可能性がある。
説明 配列境界チェック機能を改善することで、この問題に対処しました。
具体的な脆弱性
IOGraphics(IOGraphicsFamily kext)のIOFramebuffer::createSharedCursorがカーソルフレーム数countのcount==0境界チェックを欠き、count-1=0xFFFFFFFFの整数アンダーフロー+0要素確保でOOB。共有バッファ再利用時のサイズ未検証もあり。
原因
countを上限<=0x20のみ検査しcount!=0を検査せず、アンダーフローと0要素配列への書込を許した配列境界欠落。
特定方法
OOB定石で全1142関数を符号なし比較分岐の増加数でランク付け。StdFBRemoveCursor等の囮(b.gt→b.hi最適化)を除外し、+1cmpかつ命令+21の純追加createSharedCursorのみが真の修正と判定、count!=0ガード(A)を確定。
31OK
IOGraphics
CVE-2026-28841
影響 バッファオーバーフローが原因でメモリが破損したりアプリが予期せず終了したりする可能性がある。
説明 サイズ検証を強化し、バッファオーバーフローに対処しました。
具体的な脆弱性
同じcreateSharedCursorで、共有カーソル用IOBufferMemoryDescriptor(this+0xa0)をサイズ検証せず再利用。前回より大きい寸法で再呼出すると小さい旧バッファに大サイズ前提の書込が行われヒープオーバーフロー。
原因
既存バッファを実容量と要求サイズの照合なしで無条件再利用していたサイズ再検証欠落。
特定方法
符号なし比較分岐増加ランクでcreateSharedCursorを特定し、+21命令の差分が新規2ガードに分離されると判明。本件はガード(B)=既存容量を仮想呼出(vtable+0x1f0)で取得しx23と比較、不一致なら解放(vtable+0x28)&再確保するパターンに対応。フォルダ30の(B)エラー返却記述は誤読と訂正。
32OK
Kernel
CVE-2026-28868
影響 アプリがカーネルメモリを漏洩させる可能性がある。
説明 データの墨消しを改善することでログ入力の問題に対処しました。
具体的な脆弱性
XNUのmach_host MIGルーチンmach_memory_info(ID219)がnames/info/memory_infoの3配列をOOLメモリで返す際、ページ境界切上げで生じる末尾スラックをゼロ化せず、残留カーネルヒープデータや機微カーネルアドレスがユーザ空間へ漏洩。
原因
OOL出力バッファの未使用末尾スラックに対する返却前ゼロ化(墨消し)処理が存在しなかった。
特定方法
全cstring比較で唯一の新規文字列mach_memory_info_redactedを発見(Sandbox kextのMIG名テーブル内)。mach_host MIGサブシステム構造体のルーチン数35→36増加を裏取り、新規ID235ルーチンの逆アセンブルで_bzero×2+lockの墨消し追加を確認。
33OK
Kernel
CVE-2026-28867
影響 アプリが重要なカーネル状態を漏洩させる可能性がある。
説明 認証を強化することで、この問題に対処しました。
具体的な脆弱性
XNU Skywalkのnstatフロー統計プロバイダ関数が、呼出元の権限・所有権を検査せずに全フローの完全な記述子(接続5-tuple、ローカル/リモートアドレス・ポート、所有プロセス情報)を返却。非特権アプリがnstat制御ソケット経由で他プロセスのネットワーク接続情報を漏洩。
原因
フロー記述子を返す経路に認可ゲート(所有者/特権/エンタイトルメント検査)が欠落していた(Missing Authorization)。
特定方法
再ビルドノイズで関数バイト差分は全面ノイズ化。エンタイトルメント文字列の被参照数(adrp+add xref)の版間diffが決め手で、com.apple.private.network.tcp.infoが0→2参照で当該関数に新規追加と判明。逆アセンブルで所有者/proc_suser/エンタイトルメント3段ゲート追加を確認。
34OK
Kernel
CVE-2026-20698
影響 アプリにシステムを突然終了されたり、カーネルメモリを破損されたりする可能性がある。
説明 メモリ処理を改善することで、この問題に対処しました。
具体的な脆弱性
XNUのAF_VSOCKトランスポート管理で、トランスポート/メッセージ構造体の16bit ID(transport->id)を固定2エントリのグローバルテーブル添字に使う際、vsock_remove/reset_transport/put_messageに境界チェックが欠落。範囲外IDでbase+id*strideがテーブル外を指しcasal等でOOB read/write。
原因
add_transportのみid<=1を検証し、同テーブルを同じidで引く兄弟3関数が無検証だった検査非対称。
特定方法
clang -fbounds-safetyトラップbrk #0x5519の関数別増加数(再ビルドに安定、2843変更中17関数のみ変化)でランク付け。vsock系3関数が揃ってトラップ獲得した点が決定的で、逆アセンブルで境界チェック一斉追加を確認。
35NG
Kernel
CVE-2026-20695
影響 アプリがカーネルメモリのレイアウトを判断できる可能性がある。
説明 メモリ管理を改善し、情報漏洩の脆弱性に対処しました。
NG理由
カーネルメモリレイアウト漏洩(KASLR/ポインタ漏洩)の修正は本来1フィールドのゼロ化/マスク程度の極小インライン変更だが、フルリコンパイル(2843関数変化)+グローバルデータ再配置+ロックinline化+シンボル疎(503個の巨大blobが無名関数を吸収)の四重ノイズで分離不能。syscall/mach_trap/call-graph差分も確証なし。MIG表手動diffが最有力未踏査だがipswのMIGテーブル推定失敗で決め切れず。
36OK
Kernel
CVE-2026-20687
影響 アプリにシステムを突然終了されたり、カーネルメモリに書き込まれたりする可能性がある。
説明 メモリ管理を強化し、解放済みメモリ使用の脆弱性に対処しました。
具体的な脆弱性
XNU/IOKitがvnodeのbacking pager(メモリオブジェクト)をvnodeのiocountを取らずにvp->v_ubcinfo->pagerから生ポインタで取得・使用。vnodeが並行回収(強制アンマウント/revoke等)されるとubc_info/pager解放後のstaleポインタをmach_make_memory_entry_64が参照しUAF(カーネルメモリ書込/panic)。
原因
pager取得からmemory entry生成までvnodeのiocountを保持せず、整数オーバーフロー/サイズ境界検査も欠いていたこと。
特定方法
UAFに固有の指標「参照取得プリミティブの新規呼出元」で篩い、vnode_getwithrefの新規呼出元が_vnode_memoryobjectただ1件と判明(他プリミティブは新規ゼロ)。新設IOMemoryDescriptor::withVNode(264のみ、nm -gUで確認)が呼ぶ安全ルーチンにvnode_getwithref/put+加算オーバーフロー検査追加を確認。35-ngのcall-graphメモが手掛かり。
37OK
LaunchServices
CVE-2026-28845
影響 アプリが保護されたユーザデータにアクセスできる可能性がある。
説明 ステート管理を改善し、認証の脆弱性に対処しました。
具体的な脆弱性
LaunchServicesの接続認可ゲートclientIsAllowedToConnectが、sLSServerConnectionAllowedFlagsのbit1(kLSServerConnectionStatusProcessIsDaemonMask)を検査せず、ProcessIsDaemonが立ったデーモンでもユーザセッションのlaunchservicesdへ接続を許可。デーモンから隔離されるべきユーザ固有の保護データへ到達可能。
原因
接続可否判定でProcessIsDaemonビット(bit1)の参照が欠落していた状態管理/認証の欠陥。
特定方法
新規シンボル集合をauth/connect等でフィルタしcaic周りのsOnce/block_invoke増設を発見。文字列ProcessIsDaemonMask is setが263に0個・264に1個(新規)であることが決定打。block_invoke内のtbnz w21,#0x1新規追加を逆アセンブルで確認。
38OK
libxpc
CVE-2026-28882
影響 アプリが、ユーザがインストールしたアプリを特定できる可能性がある。
説明 チェックを強化することで解決されました。
具体的な脆弱性
libxpc.dylibのXPCバンドル実行ファイル解決(__xpc_bundle_resolve_executable)で、実行ファイルがバンドル外(他アプリ)を指してもtaint(soft)扱いで解決成功、参照先不在ならmissingと振る舞いが分岐。攻撃側が任意アプリの実行ファイルパスを指定し結果を観測する存在オラクルでインストール済みアプリを列挙。
原因
実行ファイルがバンドル内に同梱されているかの正規化後パス検証が甘く、バンドル外参照をハード拒否していなかった。
特定方法
版上げ3089→3102のos_system_versionリファクタ等のノイズ下、新規文字列The executable did not ship in the bundle(264のみ、__errors表に新規)をアンカーに分離。新規ヘルパ__xpc_resolve_real_path導入とエラーコード0xa4返却、bit5ゲート追加を逆アセンブルで確認。
39OK
libxpc
CVE-2026-20607
影響 アプリが保護されたユーザデータにアクセスできる可能性がある。
説明 制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
launchd(libxpcプロジェクト)が公開するXPCルーチン「サービスのプロパティ(attrs)取得」(番号0x2c8)に呼出元認可が欠落。任意プロセスが対象PID指定で他者のサービスのattrs辞書(mach送信ポートservice-port/bssendp、サービス名/タイプ/PID/ドメイン)を取得でき他プロセス情報・ケイパビリティを漏洩。
原因
特権的な内省ルーチンに対するアクセス制御(認可)の欠落(Missing Authorization)。
特定方法
libxpc.dylib側はリファクタノイズで特定不能。launchd実行ファイルの新規文字列pid %d not allowed to get properties for service(263:0→264:1)が一発で本命を示した。修正後ハンドラに所有者/同一uid/特権/エンタイトルメント認可ゲート+error 0x90追加、クライアント側copy_attrsの失敗パス追加を確認。launchdは26.4 IPSWをAEA復号+手動マウントで入手。
40OK
Mail
CVE-2026-20692
影響 メールの内容によっては、「IPアドレスを非表示にする」と「リモートコンテンツをすべてブロック」が適用されない場合がある。
説明 ユーザの環境設定の処理を改善することで、プライバシーの問題に対処しました。
具体的な脆弱性
MailがリモートURL添付のDL時にMailCoreのアクセスレベルを常に3(プライバシー制限無視の無条件フェッチ)でハードコードし、「リモートコンテンツをブロック」「IP非表示」設定が効かず実IPが露出した。
原因
-[MailWebAttachment startDownloadingIfNeededWithProgress:completionBlock:]がfileWrapperForAccessLevel:3固定で、MailCoreのゲートがレベル3時にdisableRemoteContent検査をスキップする非対称設計を突いた。
特定方法
ObjCメソッドシグネチャのcomm差分で新引数bypassPrivacyRestrictions:を発見、本体1命令差分(mov w2,#3→cinc x2,x8,ne)とMailCoreのアクセスレベル分岐ゲートで確定。
41OK
MigrationKit
CVE-2026-20694
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 シンボリックリンクの処理を改善することで、この問題に対処しました。
具体的な脆弱性
migrationhelperの移行先封じ込め判定がsymlinkを追従するrealpath正規化に依存し不健全で、symlinkや..でbaseディレクトリ外へ機微移行データを書き込めた。
原因
+[MHPath isPathSafeForWrite:withinBasePath:]がcanonicalPathForPath:経由のrealpath(と未存在パスでの親のみ解決+末尾素直連結)結果でhasPrefix:判定し、判定パスと実書込パスが乖離した。
特定方法
realpath import消失(263:1→264:0)+canonicalPathForPath:メソッド削除+traversal系文字列→absolute/dot系への置換の3点一致。実体はMigrationKit.frameworkでなくSystemMigrationNetworkのmigrationhelper。
42OK
Music
CVE-2026-20632
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 ディレクトリパスの処理における解析不備の脆弱性に、パス検証を強化することで対処しました。
具体的な脆弱性
Musicが機微データ用ディレクトリをDataVault(SIP)未保護の通常ディレクトリとして作成しており、同一マシン上の他プロセス・他アプリから読み取り可能だった。
原因
1.6.3以前は機微ディレクトリがDataVault化されず通常FS権限の隙で漏えい。1.6.4でMusicUtilities.Datavaultが未保護検出時にDataVault化する救済処理を追加。
特定方法
差分唯一のhardening文字列"Found unsecure directory..."とrootless_*_datavault API import(263:0→264:3)。囮はVisualizerPluginDirectoryLocator.validateAndAddPath。保護対象パス名は未確定。
43OK
NetAuth
CVE-2026-28839
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 チェックを強化することで、この問題に対処しました。
具体的な脆弱性
root権限のNetAuthSysAgentがクライアント指定のマウント先パスを無検証でマウントし、非特権アプリがTCC保護フォルダ(Desktop/Documents等)にリモート共有を被せて機微データへアクセスできた。
原因
特権デーモンが呼び出し元指定のマウント先(where)を信頼しそのままnetfs_Mountに渡しており、マウント先のTCC保護領域判定が存在しなかった。
特定方法
26.4新規のマウントポイント検証ヘルパsub_1000134fc(realpath正規化+保護領域判定+NoUI拒否/承認UI)、新規ログ文字列群とNAVerifyMountPoint新規import(263:0→264有)が決め手。
44OK
NetAuth
CVE-2026-20701
影響 ユーザの承認を得ずに、アプリがネットワーク共有に接続できる可能性がある。
説明 サンドボックスの制限を追加で設けて、アクセス関連の脆弱性に対処しました。
具体的な脆弱性
NetAuthSysAgentが代理マウント時に呼び出し元のサンドボックス権限を検証せず、サンドボックスアプリがデーモンを踏み台に自身の制限を迂回して無認可でネットワーク共有を接続できた。
原因
特権デーモンがマウント主体(who)の認可を検証していなかった。修正はsandbox_check_by_audit_token("file-mount")ゲートの追加。
特定方法
修正ゲートsub_100009b94は263/264バイト一致=26.3.1先行投入で差分に出ず、消去法で特定。文言「サンドボックス制限追加」=sandbox_check、両版存在の"mount a shared volume"ログ群で機構同定。
45OK
NetAuth
CVE-2026-28891
影響 アプリがサンドボックスを破って外部で実行される可能性がある。
説明 検証を追加することで、競合状態に対処しました。
具体的な脆弱性
NetAuthSysAgentがマウント先を正規化も/Volumes閉じ込めもせずマウントし、サンドボックスアプリが..やsymlinkを含むパスでコンテナ外へ共有を被せサンドボックス脱出できた(TOCTOU)。
原因
マウント先のrealpath正規化と/Volumes閉じ込めポリシーが皆無で、マウント実行時のパス解決が検証と乖離した。修正はsub_1000134fcにrealpath正規化+/Volumes閉じ込めを新設。
特定方法
関数ペアリング比較でmount経路の追加はverifier sub_1000134fc唯一と確定(認可/mountワーカー/quarantineは機能不変)。28839/28891/20701は同関数の別分岐への融合実装で帰属は推論込み。
46NG
NetFSFramework
CVE-2026-28827
影響 アプリがサンドボックスを破って外部で実行される可能性がある。
説明 ディレクトリパスの処理における解析不備の脆弱性に、パス検証を強化することで対処しました。
NG理由
NetFSFramework全バイナリ(framework2+plugin6)で263⇄264が機能的に完全同一、差分はlibc++ABIタグ反転とoutliner等の再ビルドノイズのみ。修正は26.3.1以前に先行投入済みで差分に現れず、どの検証がCVE本体か一意特定できないため。
47OK
Notes
CVE-2026-28816
影響 アプリが、権限を持っていないファイルを削除できる可能性がある。
説明 検証を強化して、パスの処理における脆弱性に対処しました。
具体的な脆弱性
Notesのpreview hardlink一時dirクリーンアップが起動時にプロセス共有コンテキスト固定で全アカウントのpersonaスコープ外のファイルを解決・削除し、権限外ファイル削除を起こせた。
原因
deletePreviewItemHardLinkURLsが列挙コンテキストを操作文脈に束ねず常にICNoteContext.sharedContextを使い、ストア/persona確定前の起動時に誤スコープでper-account一時dirを削除した。
特定方法
NotesSharedでメソッドが...WithContext:へ改名(context引数新設)が唯一のセキュリティ関連集合差分。呼出側がcleanUpTemporaryFilesWithContext:化し起動時コンテキストをICWorkerContextLaunchTaskへ差替えで確定。
48NG
NSColorPanel
CVE-2026-28826
影響 悪意のあるアプリがサンドボックスを破って外部で実行される可能性がある。
説明 制限を強化し、ロジックの脆弱性に対処しました。
NG理由
NSColorPanel系の全バイナリ(AppKit/LegacyExternalColorPickerService.xpc/BTM)が263⇄264で再ビルドノイズのみ。封じ込め機構(sandbox_extension_consume+BTMランチャビリティゲート)は両版同一に存在し、CVE固有の1点修正が差分に無く特定不能(26.3.1以前先行投入型)。
49OK
PackageKit
CVE-2026-20631
影響 ユーザが権限を昇格できる場合がある。
説明 チェックを強化し、ロジックの脆弱性に対処しました。
具体的な脆弱性
インストーラがペイロード信頼(installation exemption)評価をroot実行のpre-installスクリプト後に1回のみ行い、悪性スクリプトが注入した未署名/別チームbundleが正規パッケージの免除を継承し権限昇格できた。
原因
信頼評価のタイミングがroot特権スクリプトによる改ざんの後だった(TOCTOU/ロジック欠陥)。修正は評価をスクリプト前にも追加する2フェーズ化と後フェーズでのパッケージルート再スキャン。
特定方法
addCommitOperationsFromSandbox:でInformSystemPolicyのbefore/after2フェーズ化、_isBeforeInstallScripts ivar+afterPreInstallScript引数の配線、syspolicyd新規checkInstallPackagePayloadAfterPreInstallScript:を4バイナリ横断で確認。
50OK
PackageKit
CVE-2026-20693
影響 ルート権限を持つ攻撃者が、保護されているシステムファイルを削除できる可能性がある。
説明 ステート管理を改善し、この問題に対処しました。
具体的な脆弱性
-[PKBundleComponent subpaths]がパス文字列ベースのNSDirectoryEnumeratorで構成ファイルを列挙し、installd(root,SIP書込特権)が攻撃者設置のsymlinkを辿りSIP保護システムファイルを列挙結果に混入させ削除/上書きできた。
原因
options:0のパスベース列挙でsymlink追従し、唯一の防御referencesSameFileAs:もルートを1回確認するだけのTOCTOUで子孫を検査しなかった。
特定方法
列挙をvalidated fd起点のfdベース再帰下降(fdopendir+fstatat AT_SYMLINK_NOFOLLOW+openat O_NOFOLLOW)へ刷新。新規文字列validated fd/fdopendir/dup(fd)と新規_enumerateDirectoryWithFileDescriptor:が決め手。
51OK
PackageKit
CVE-2026-28840
影響 アプリがルート権限を取得できる可能性がある。
説明 制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
特権インストーラがシステムポリシー信頼性ゲートをroot実行のpreinstallスクリプトより後に置いていたため、未署名/未公証パッケージのスクリプトが先にrootで実行され、後で評価が失敗しても時すでに遅くroot昇格が成立した。
原因
信頼性ゲート(PKInformSystemPolicyInstallOperation→trustPackagePayload→systempolicyd)の実行順序がpreinstallスクリプトの後だった。修正はスクリプト前にも評価オペを挿入しbefore/afterフラグをsystempolicydまで配線。
特定方法
addCommitOperationsからの_enqueueOperation:列で前評価(beforeScripts=1)がpreflightスクリプト生成の直前に挿入と確認。クラスはGOT注釈下位32bitをnmの_OBJC_CLASS_$_と突合して同定、XPCブロックのBOOL数1→2で配線裏取り。
52NG
Phone
CVE-2026-28862
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 ログエントリに対するプライバシーデータの墨消しを改善することで、プライバシーの問題に対処しました。
NG理由
Phone全バイナリで{public}/{private}/{sensitive}マーカー差分・機微フィールド削除・墨消しヘルパ新設がすべて陰性、かつ全コンポーネントが完全再ビルドでログサイトの50-88%が変化し引数差し替え型墨消しを分離不能。墨消しは既にベースライン26.3.1に広範導入済みの可能性もあり一意特定できないため。
53NG
Printing
CVE-2026-28831
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 ステート管理を改善し、認証の脆弱性に対処しました。
NG理由
Printing-1(CVE-2026-28831)。printtool/PrinterTool.xpc/PrintCore等の印刷系全バイナリで認証・状態管理の実変更が皆無(新規インポート/ObjCメソッド/文字列/コマンドコード/opcode制御フロー全レイヤでゼロ)。実体仮説はPrinterTool.xpcのgetjoblistエンタイトルメントだが両版同一で、修正は26.3.1以前に先行投入済みのため差分に出ず特定不能。
54OK
Printing
CVE-2026-28817
影響 サンドボックス化されたプロセスが、サンドボックスの制約を回避できる可能性がある。
説明 ステート処理を強化することで、競合状態の脆弱性に対処しました。
具体的な脆弱性
PrintCoreのOpaquePMPrintSessionが保持する「現在のプリンタ」状態を無同期の生ポインタで読み書きしており、XPC/マルチスレッド並行アクセスでデータ競合・UAF・出力先のTOCTOU差し替え(サンドボックス回避)が成立した。
原因
現在プリンタ状態へのアクセスに同期プリミティブが無かった。26.4でOpaquePMPrintSession +0x50にpthread_mutexを新設し全アクセサ(GetCurrentPrinter等)を直列化、フィールドは0x90へシフト。
特定方法
印刷系dylibのシンボル集合diffでPrintCoreのみSetCurrentPrinter(CFString)削除/SetPMPrinter新設を検出。GetCurrentPrinterが2命令→14命令(lock包囲)へ激増し、a2sでpthread_mutex_lock/init/destroyを確認。
55NG
Printing
CVE-2026-20688
影響 アプリがサンドボックスを破って外部で実行される可能性がある。
説明 検証を強化して、パスの処理における脆弱性に対処しました。
NG理由
Printing-3(CVE-2026-20688,サンドボックス脱出/パス処理)。印刷全バイナリ+sandbox profile+cupsd+makequeuesagentで263⇄264の機能差分ゼロ(パスプリミティブ呼出数完全一致、symlinkジョブ拒否防御は263に既存)。修正は26.3.1以前に先行投入済みで、より古いベースラインが手元に無く特定不能。
56OK
Security
CVE-2026-28864
影響 ローカルの攻撃者が、ユーザのキーチェーン項目にアクセスできる可能性がある。
説明 アクセス権のチェック機能を強化することで解決されました。
具体的な脆弱性
secd/securityd_systemがペルソナmusr上書き用テストSPIのクライアント指定musrを認可コンテキスト構築時に信用し、managed persona(type2)統治下でも拒否しなかったため、ローカルプロセスが自身のキーチェーンクエリのmusrを操作し別ペルソナ/ユーザの項目にアクセスできた。
原因
デーモン側musr設定関数がmanaged persona配下でもクライアント上書きフラグ([client+0x30])を温存していた。26.4でtype2かつフラグ立ち時に拒否する新規ガードを追加しUMUserManager由来のmusrを強制。
特定方法
Security.frameworkのシンボル改名SecSecuritySetPersonaMusr→…ForTestsと、デーモン唯一のセキュリティ新規文字列"musr is overridden for tests and one returned by UMUserManager"の符合。grefdiffで新規ref全体スキャン。
57OK
Security
CVE-2026-28830
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 検証を追加することで、競合状態に対処しました。
具体的な脆弱性
authd認可プラグインstaging処理がプラグインを固定パスStagedPlugins/<name>へ上書き禁止copyItemでコピーするだけで、コピー先に居座る既存/悪性ファイルを退避せず、特権認証コンテキストへ意図しない認可プラグインをロードし得た(TOCTOU/予測可能名衝突)。
原因
固定・予測可能なstagedパス+上書きしないcopyItemで既存実体の退避・無効化が無く、起動時stagedirクリアも無かった。26.4でNSUUID一意リネーム退避(moveItemAtPath新規)+createDir結果検証+chmod修復+起動時クリアを追加。
特定方法
moveItemAtPath:toPath:error:セレクタが263:0→264:1で新規追加(removeItemへの部分一致偽陽性に注意)。"Clearing stagedir"新規文字列とstaging関数の逆アセンブル比較。
58OK
Security
CVE-2026-28860
影響 ローカルの攻撃者が、キーチェーンの状態を変更できる可能性がある。
説明 入力検証を強化することで、この問題に対処しました。
具体的な脆弱性
レガシーsecurityd(CSSM)のchangeAcl RPCハンドラが、データ保護版ログインキーチェーン(dp_login)のACL変更時にクライアント提供パスワードサンプルをprotected entropyで検証せず(unlock/changePassphraseは検証する非対称)、ローカル攻撃者が正規パスフレーズ証明なしにキーチェーンのACL状態を改変できた。
原因
changeAcl経路にderivePassphraseIfNecessaryの呼び出しが欠落していた。26.4でchangeAclハンドラにdp_loginサンプル検査ループとderivePassphrase呼び出しを追加(機能フラグ背後でロールアウト)。
特定方法
derivePassphraseIfNecessaryの呼び出し元が2→3に増加(増分がchangeAcl内0x1000436ec)。新規"changeAcl ..."デバッグ文字列群とcom.apple.keystore.keybag.create新規エンタイトルメント。
59OK
SMB
CVE-2026-28835
影響 悪意を持って作成されたSMBネットワーク共有をマウントするとシステムが終了する可能性がある。
説明 メモリ管理を強化し、解放済みメモリ使用の脆弱性に対処しました。
具体的な脆弱性
smbfs kextのSMB2/3マルチチャネル接続管理で、サーバ広告NIC情報処理経路(update_nic_list_from_notifier)が接続エントリsession_con_entryをアクティブ状態のまま解放し、別経路からの参照でUse-After-Free→カーネルパニックに至った。
原因
代替チャネル確立ループでiod破棄後の冗長接続後始末が不十分でアクティブ状態のconが残存・解放された。26.4でsmb_iod_establish_alt_chにsmb2_mc_return_excess_connections呼出を追加(1→2)し協調、解放点に状態診断ガードを新設。
特定方法
kext全体で新規cstringが2本のみ、1本"Freeing con with unexpected state of 0x%x?"が解放点に置かれていた(もう1本compress_lenは兄弟28825)。nmでaddr→name再解決し呼出集合diff。
60OK
SMB
CVE-2026-28825
影響 ファイルシステムの保護された部分をアプリに変更されるおそれがある。
説明 配列境界チェック機能を改善することで、領域外書き込みの脆弱性に対処しました。
具体的な脆弱性
smbfs kextの_smbfs_vnop_readdirattrが属性ブロック用カーネルバッファを列挙ループ外で1回・1件分の名前長見積もりで確保し、サーバ由来の長いファイル名を持つ後続エントリで_packattrblkがバッファ末尾を越え書き込みカーネルヒープOOB writeを起こした。
原因
バッファ確保がループ外固定で各エントリの可変長名を考慮しなかった。26.4でエントリ毎に必要サイズを厳密再計算し、不足時のみkfree+kallocで再確保(cmp w27,w28;b.lsガード)してから_packattrblkを呼ぶよう変更。
特定方法
shapediffの純増加(+101/-17)で_smbfs_vnop_readdirattrが唯一突出、符号なし比較分岐+1。ループ内に新規kfree+kallocとb.lsガード追加を逆アセンブルで確認。
61OK
Spotlight
CVE-2026-28818
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 データの墨消しを改善することでログ入力の問題に対処しました。
具体的な脆弱性
CoreSpotlight/SpotlightServicesがユーザの検索クエリ文字列をプライバシーマーカー無し(既定=平文)のos_log引数としてUnified Logに書き込み、ログ閲覧権限を持つプロセスが他人の検索語を復元できた(情報漏えいCWE-532)。
原因
os_log書式が%@(既定=平文)でクエリ引数を出力していた(アプリ層墨消しヘルパSSRedactStringClientは既存だがログ層が抜け)。26.4で%@→%{private}@へ変更しディスクリプタ0x40→0x41に。
特定方法
__oslogstring集合diffで264新規の%{private}@行(SpotlightServicesマーカー数2→11)。_os_log_impl引数ディスクリプタのフラグフリップ0x40→0x41を機械語で裏取り。
62OK
Spotlight
CVE-2026-20697
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
SpotlightDaemonの-[MDSearchableIndexService handleCommand:info:]がCarPlayアプリ(com.apple.carplay.application)索引へのアクセスにエンタイトルメントゲートを欠き(通知ゲートは存在する非対称)、任意アプリが無権限でCarPlayアプリの検索可能索引データを列挙・改変・削除できた。
原因
通知ゲートと対称なCarPlayゲートが無かった。26.4で新エンタイトルメントcom.apple.private.corespotlight.allowcarplayapps由来のallowCarPlayApps能力を要求し、無ければ拒否+"Attempt to access CarPlay apps by client %@"ログするゲートを追加。
特定方法
アクセス制御語彙に絞った新規文字列comm差分でSpotlightDaemonにCarPlay関連が263:0→264:7。class-dumpでSDConnectionConfigurationにallowCarPlayApps新設、handleCommandの263逆アセンブルでゲート不在を確認(disassは--force必須)。
63OK
StorageKit
CVE-2026-28820
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 チェックを強化することで解決されました。
具体的な脆弱性
-[SKManager diskForPath:]がローカル解決失敗時に呼出元のデーモンアクセス権を検証せず無条件で特権storagekitdへフォールバック(syncAllDisks+diskForPath:blocking:)し、サンドボックスアプリが任意パスのディスク/ボリューム情報を取得できた。
原因
フォールバック前の認可ゲートが欠落していた。26.4で[[SKHelperClient sharedClient] hasDaemonAccess]ゲートを追加し、アクセス不可なら"no daemon access"をログしてnilを返すよう変更。
特定方法
新規文字列"Cannot find disk for path %@, no daemon access"(同一ログ地点の分岐追加、前方一致で対応判明)。objdump literal-pool逆引きでdiskForPath:特定+hasDaemonAccess参照数3→4で確証。
64NG
System Settings
CVE-2026-28837
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 チェックを強化し、ロジックの脆弱性に対処しました。
NG理由
System Settings(CVE-2026-28837)。脆弱surface=Spotlight/AppIntents検索索引化は特定したが、無効/機微ペイン除外防御(DisabledSystemSettings等、固定除外集合{FollowUp,General,About,PrivacySecurity})は263に既実装で263→264はasync→sync等価リファクタのみ。__objc_stubs新設とSwift型キャッシュcmpの二大ノイズ下で新規チェック皆無、修正先行投入の公算大で特定不能。
65NG
SystemMigration
CVE-2026-28844
影響 攻撃者がファイルシステムの保護された部分へのアクセス権を取得できる可能性がある。
説明 入力検証を強化して、ファイルへのアクセスの問題に対処しました。
NG理由
SystemMigration(CVE-2026-28844)。修正機構=SMManagerのsystem defense封じ込め(setupSystemDefenseForRequest+safeDestinationForIntendedDestination:が保護領域集合へintersectsSet照合しquarantine)を特定したが263/264で呼出集合・行数完全一致=26.3.1先行投入。罠4種(symlinkAllowed死にコード/DirectorySurgeon再配置ノイズ/移行サンドボックス既存/hasValidHomeDir新機能)。修正前バイナリが無くbefore/after観測不能で特定不能。
66NG
TCC
CVE-2026-28828
影響 アプリが機微なユーザデータにアクセスできる可能性がある。
説明 脆弱なコードを削除することで、アクセス権の問題に対処しました。
NG理由
TCC関連7バイナリ+設定をpatch-diffしたが認可判定・付与・クエリの実行パスは263↔264でバイト等価。唯一CVE整合的な新規Photos auth_value=3掃除SQLはゲート関数が定数return1の静的デッドコードかつv20マイグレーション段限定で現行v32 DBでは走らず、修正と断定できない。修正が26.3.1以前に先行投入済みか真因がTCC外と推定され、素材から一意に特定不能。
67OK
UIFoundation
CVE-2026-28852
影響 アプリからサービス運用妨害を受ける可能性がある。
説明 入力検証を強化することで、スタックオーバーフローに対処しました。
具体的な脆弱性
NSTextLineFragmentの_defaultRenderingAttributesAtCharacterIndex:が引数characterIndexを裏付けattributedStringのlengthに無検証でattributesAtIndex:へ渡し、範囲外インデックスで範囲外アクセス(DoS)を起こす。
原因
レンダリング属性解決時に入力インデックスの境界チェックを欠いていた。26.4はlength取得+characterIndex>=lengthガード+__UIFoundationAssertを追加し範囲外時は危険な属性参照をスキップ。
特定方法
otool逆アセンブルでシンボル集合と__cstring差分を比較。264で唯一新規の文字列"Requested for attributes at %ld for length %ld"と新規_block_invokeシンボルがアンカー。命令数/フレーム差は再ビルドノイズで埋もれていた。
68NG
Vision
CVE-2026-20657
影響 悪意を持って作成されたファイルを解析するとアプリが予期せず終了する可能性がある。
説明 メモリ処理を強化し、バッファオーバーフローの脆弱性に対処しました。
NG理由
Vision系3バイナリが26.4で新LLVM/libc++全面リビルドを受け差分が再ビルドノイズに埋没。最有力候補parseLabels(名前がCVE説明に完全一致)はstd::getline再実装(push_back→memchr/append)の偽陽性で両版ともheap上std::stringでmemory-safe。新規文字列/セキュリティ関数/境界チェックを分離できず特定不能。
69OK
WebDAV
CVE-2026-28829
影響 ファイルシステムの保護された部分をアプリに変更されるおそれがある。
説明 制限を強化し、アクセス権の問題に対処しました。
具体的な脆弱性
webdav_fs.kextの_webdav_sysctl(associatecachefile経路)がキャッシュ関連付けfdをfile_vnode()でアクセスモード未検証のままvnode化し、読み取り専用で開いた保護ファイルfdを書き込み可能キャッシュバッキングに据えられ保護ファイルへ書き戻せた。
原因
fdが書き込み権を持つか検証していなかった。26.4はfile_vnode_ext(fd,vpp,vidp,3=FREAD|FWRITE)へ置換し読み書き可能なfdを強制。
特定方法
提供4ユーザ空間バイナリは全純リビルドだったため、マウント済みルートDMGをfind+md5比較し変化したwebdav_fs.kextをkernelcacheから抽出。Apple自身のエラー文字列差分file_vnode()→file_vnode_ext()が一撃の決め手。
70OK
WebKit
CVE-2026-20665
影響 悪意を持って作成されたWebコンテンツを処理するとコンテンツセキュリティポリシー適用を回避される場合がある。
説明 ステート管理を改善し、この問題に対処しました。
具体的な脆弱性
WebCore DocumentWriter::begin()が動的srcdoc代入で生成するドキュメントのポリシーコンテナを、親フレームではなく(初期about:blank由来の空)履歴項目から継承し、親のCSPが適用されずCSP回避を許した。
原因
履歴項目からのポリシーコンテナ継承がナビゲーション種別を問わず最優先で走っていた。26.4はtriggeringAction->type()==BackForwardのときのみに限定するゲートを追加し、srcdocは親ドキュメントから継承するよう修正。
特定方法
WSA-2026-0002でCVE→Bugzilla304951→公開コミットb4390e8を特定しソースで根本原因を確定。WebCoreバイナリでDocumentWriter::beginを逆アセンブルし、履歴継承手前にcmp #0x2(BackForward)ガード4命令が264にのみ存在することを裏取り。
71OK
WebKit
CVE-2026-20643
影響 悪意を持って作成されたWebコンテンツを処理すると同一生成元ポリシーを回避される可能性がある。
説明 入力検証を強化することで、Navigation APIのクロスオリジンの問題に対処しました。
具体的な脆弱性
WebCore Navigation::innerDispatchNavigateEventのcanIntercept可否判定がisSameSiteAs(eTLD+1一致、ポート/スキーム無視)で行われ、同一サイト別オリジン(典型はポート違い)でもintercept可能となりSOPを回避できた。
原因
URL書き換え可否判定に緩いsame-siteチェックを誤用していた。26.4はisSameSchemeHostPort(スキーム+ホスト+ポート厳密一致)一本に置換しcross-port/cross-originを拒否。
特定方法
WebCoreの該当関数を逆アセンブルし、関数内の判定関数呼び出しがisSameSiteAs/isSameOriginAs(263)→isSameSchemeHostPort(264)へ排他的に置換されたのが決め手。上流コミット850ce31とも突合。BSI適用前base線25D2128に未収録で明瞭な差分が出た。
72OK
WebKit
CVE-2026-28871
影響 悪意を持って作成されたWebサイトにアクセスするとクロスサイトスクリプティング攻撃を受ける可能性がある。
説明 チェックを強化し、ロジックの脆弱性に対処しました。
具体的な脆弱性
WebCore DOMImplementation::createDocumentがドキュメント種別判定にMediaPlayer::supportsTypeを使い、MSE専用型video/mp2t(bare URLでは再生不能=IsNotSupported)をメディアと認めずHTMLDocumentにフォールバックし、video/mp2tで配信されたHTML/JSが実行されXSSとなった。
原因
ロード可否判定(canShowMIMEType=レジストリベース)と種別判定(MediaPlayer::supportsType=実再生可否)の非対称。26.4は種別判定をMIMETypeRegistry::isSupportedMediaMIMETypeへ置換し判定経路を一本化。
特定方法
Apple advisory→Bugzilla305859→公開コミット312373@mainを特定。WebCoreでcreateDocumentを逆アセンブルし、MediaPlayer::supportsType呼出(263)がMIMETypeRegistry::isSupportedMediaMIMEType(264)へ逆対称に置換されたことをipsw disass --forceで機械語確認。
73OK
WebKit
CVE-2026-20664、CVE-2026-28857
影響 悪意を持って作成されたWebコンテンツを処理するとプロセスが予期せずクラッシュする可能性がある。
説明 メモリ処理を改善することで、この問題に対処しました。
具体的な脆弱性
JavaScriptCoreのArrayBuffer::refreshAfterWasmMemoryGrowがwasm memory growでバッファ再配置時にArrayBufferのm_dataと各TypedArrayビューのm_vector(データ生ポインタ)を更新せず、解放/移動済み旧領域を指すstaleポインタが残りUAFとなった(主CVE 20664)。
原因
再配置後にm_data基底ポインタ更新とincoming reference全ビューのm_vector貼り直しを欠いていた。26.4はbasePointer()でm_data更新+移動時にビューのrefreshVectorでm_vector再計算を追加。
特定方法
コンポーネント名はWebKitだが実体はJSC。WSA-2026-0002→Bugzilla306136→上流コミット6b357f3を特定。JavaScriptCoreでrefreshAfterWasmMemoryGrowを逆アセンブルし33行(263)→189行(264)でm_data更新・reference走査ループ・m_vector貼り直しを裏取り。副CVE28857はインライン展開のため上流ソースで確定。
74OK
WebKit
CVE-2026-28861
影響 悪意のあるウェブサイトが、ほかのオリジン向けのスクリプトメッセージハンドラにアクセスできる可能性がある。
説明 ステート管理を改善し、ロジックの問題に対処しました。
具体的な脆弱性
WebCore UserMessageHandler.postMessageに呼出元JSコンテキストとハンドラ束縛フレーム間のオリジン検証が欠落し、ハンドラ参照をフレーム外に退避→別オリジンへナビゲート→退避参照でpostMessageを呼ぶことで別オリジン向けスクリプトメッセージハンドラへ越境アクセスできた。
原因
ナビゲーションでフレーム状態が陳腐化してもpostMessage時にオリジンを再検証していなかった。26.4は新規passesSameOriginCheck(isSameSchemeHostPort厳密比較)を導入し不一致ならInvalidAccessError("Failed same-origin check.")でreject。
特定方法
WSA-2026-0002→Bugzilla307014→コミット795ef8a1を特定。再ビルドノイズ(toJS→wrap移行/buffers新機能等)を貫通する新規文字列"Failed same-origin check."1本と新規シンボルpassesSameOriginCheckが決め手で、WebCoreバイナリで逆裏取り。
75OK
WebKit
CVE-2026-28859
影響 悪意のあるウェブサイトが制限対象のウェブコンテンツをサンドボックス外で処理できる可能性がある。
説明 メモリ処理を改善することで、この問題に対処しました。
具体的な脆弱性
GPUプロセスのRemoteGraphicsContext::drawGlyphsがIPCデコードしたグリフ配列span<0>()を所有コピーせずGraphicsContext::drawGlyphsへ素通しし、デコーダのバッキングバッファをエイリアスしたまま読むためGPUプロセス内でOOB/UAF read(サンドボックス外処理)となった。
原因
隣接するadvances span<1>()は所有Vectorにコピー済みなのにglyphsだけ素通しという非対称。26.4はglyphsもVector<GlyphBufferGlyph,128>へmemcpySpanコピーして対称化。
特定方法
上流コミット6aacf62(311707@main)"Copy the glyph buffer"を特定。WebKit.frameworkでdrawGlyphsを逆アセンブルし、264新規の"memcpySpan...T=unsigned short"アサート文字列・スタックフレーム0x90→0x940・glyphs引数出所がIPC生ポインタ→コピー済Vectorへ変化の3点が決め手。
76OK
WebKit Sandboxing
CVE-2026-20691
影響 悪意を持って作成されたWebページがユーザを一意に識別するデータを作成できる場合がある。
説明 ステート管理を改善し、認証の脆弱性に対処しました。
具体的な脆弱性
WebLoaderStrategy::scheduleLoadFromNetworkProcessがcreateSandboxExtensionHandlesIfNecessaryの成否を無視してロードをNetworkingプロセスへ委譲し、WebContentがアクセスできずextensionを生成できなかったファイルもNetworking経由で読めるconfused deputyとなりローカルファイル存在オラクル化(フィンガープリント)を許した。
原因
extension生成の成否(=WebContentのアクセス可否)をロード可否ゲートに使っていなかった。26.4は当該関数をvoid→bool化しhas_value()を返し、false(アクセス不可)ならblockedErrorでdidFailし早期打ち切り。
特定方法
Apple advisory→Bugzilla306827→公開コミット311745@mainを特定。WebKit.framework dylibの2シンボルを逆アセンブルし、264呼出側にtbz w0,#0ゲート新設・被呼関数のbool化(mov w19,#1)・blockedError呼出1→2の3点照合で確定。
該当する項目がありません