
macOS Sonoma、Sequoia、およびTahoeにおいて、権限のないユーザーからrootへ権限昇格。macOS 26.6 / 15.7.8 / 14.8.8で修正済み。
macOS Tahoe、Sequoia、および Sonoma の macOS 26.6 / 15.7.8 / 14.8.8 より前のバージョンに影響する CUPS の脆弱性を介して、非特権ユーザーが root になります。



この脆弱性は、特権を持つ cupsd デーモンにおける 2 つの連鎖した論理欠陥に起因します。
1. 信頼境界を越えて転送される特権認証トークン。
CUPS が新しく登録されたプリンタをプローブする際、プリンタの device-uri で指定されたエンドポイントであるプリンタのバックエンドに、有効な Local 認証トークンを転送します。非特権ユーザーがその device-uri を制御できるため、自分が制御するリスナーを指すプリンタを登録し、信頼済みサブシステム境界から出ることを意図されていなかったトークンを受け取ることができます。この設計はバックエンドが信頼されていることを前提としていますが、非特権ユーザーにプリンタの登録を許可することで、その前提が崩れます。
2. 認証検証が完了する前に到達可能な root 特権によるファイル I/O。
プリンタ登録中に確実に再現可能なタイミングウィンドウ内で、cupsd は認証検証が完了する前に root 権限でファイル書き込みを実行します。特権 I/O は auth チェックの解決を待たずに実行され、書き込みが発生する時点で、宛先パスとファイル内容の両方が攻撃者の影響を受けます。
python3 poc.py
この概念実証は、2 つの欠陥を 3 つのステージで連鎖させます。
ステージ 1 — トークン取得。
攻撃者は、自分が制御するローカルリスナーを指す device-uri を持つプリンタを登録し、プローブをトリガーします。cupsd は、攻撃者が制御するリスナーに有効な Local 認証トークンを転送します。
ステージ 2 — トークンリプレイ。
攻撃者は、取得したトークンをリプレイして、任意の SIP 非保護パスを対象とする file:// の device-uri を持つ 2 つ目のプリンタを登録します。
ステージ 3 — root としての任意書き込み。
攻撃者は、攻撃者が制御するコンテンツを含む印刷ジョブを 2 つ目のプリンタに送信します。cupsd は、指定されたパスにジョブデータを root として書き込みます。どのステージでもユーザーの操作は必要ありません。
その後、スクリプトはファイルが root として作成されたことを検証し、脆弱性を実証します。
Dallas Dubs によって独立して発見されました。また、Apple によってもクレジットされているのは Aaron Grattafiori - NVIDIA AI Red Team、XBreach.ai、Nosebeard Labs の Andreas Jaegersberger & Ro Achterberg です。