macOS Vulnerability (CVE-2023-32428) Grants Root Access, PoC Published
2024/11/26 SecurityOnline — Apple の MallocStackLogging フレームワークに存在する、ローカル権限昇格 (LPE) の脆弱性を悪用する攻撃者が、macOS システムの制御を取得する可能性について、セキュリティ研究者の Gergely Kalman が解説している。この脆弱性 CVE-2023-32428 (CVSS:7.8) の悪用が実証するのは、正当に見える開発ツールを操作して、セキュリティ対策を回避し、高権限アカウントを侵害する方法である。

MallocStackLogging は、メモリ割り当てを監視するために用いられる、macOS のデバッグ・フレームワークである。この脆弱性により、特別な権限を必要とせずに、このフレームワークをプロセスへと、動的にロードする機能が悪用されてしまう。Kalman は、「MallocStack* 環境変数が検出されるたびに、動的ローダー (dyld) により、MallocStackLogging.framework が任意のプロセスにロードされる。この機能は suid-root バイナリに対しても機能するため、攻撃者にとって格好の標的となる。
彼は、「最も危険な点は、このフレームワークがログ・ファイルを書き込む方法にある。それが生じていることを、ターゲット・プロセスは知ることができない。そして、これらのログ・ファイルが、実行中のプロセスの権限で作成されることに注意してほしい」と付け加えている。
すでに Apple は、このエクスプロイトを制限するために、以下の緩和策を実装していた:
- 対象となるファイルへの、上書きとシンボリック・リンク追跡を防ぐために、セキュア・フラグ付きの open() を使用する。
- ログ・ファイル名をランダム化して、予測の試みを阻止する。
- ファイル権限を制限して、セキュリティを強化する。
その一方で Kalman は、これらの緩和策に重大な欠陥が存在することを指摘している。彼は、「たとえば、access() は、ファイル・システム操作のセキュリティ保護において有益ではない。なぜなら、権限チェックの後の、ファイルが開かれる前に、ファイルが交換される可能性があるからが。さらに、open() の O_NOFOLLOW フラグは、最後のパス・コンポーネントのシンボリック・リンクだけを防止するため、パスの他の部分は脆弱な状態を維持する」と指摘している。
Kalman が開発した PoC エクスプロイトは、競合状態を使用して、プロセスからアクセスが可能な任意の場所に、ログ・ファイルの書き込みをリダイレクトするものである。それをタイミングよく、シンボリック・リンクの置き換えと組み合わせることで、攻撃者は crontab などの特権バイナリを操作できるという。
Kalman は、「たとえば、エクスプロイトにより /etc/sudoers.d にファイルを作成し、パスワードを要求せずに、ルート・アクセスを取得できる。この PoC が実証するのは、脆弱性 CVE-2023-32428 を悪用した、ルート権限の取得である」と述べている。
この脆弱性が影響を及ぼす範囲は、macOS Ventura 13.3 以前のバージョンである。すでに Apple は、macOS Ventura 13.4/iOS tvOS 16.5 などのプラットフォームでの問題にパッチを適用している。ユーザーに対して強く推奨され、この潜在的な悪用を回避するために、デバイスを更新することだ。
Kalman は、「一連の作業に対して $22,500 の報酬を受け取ったが、TCC バイパスの方が価値があったので、それが残念だ」と、複雑な気持ちを述べている。
メモリ割り当て監視のデバッグ・ログから、情報が漏洩してしまうようです。それに加えて、競合状態を絡めることで、ログ・ファイルの書き込みをリダイレクトするという、PoC エクスプロイトが提供されています。ご利用のチームは、十分に ご注意ください。よろしければ、macOS で検索も、ご参照ください。
You must be logged in to post a comment.