先週、ネバダ州ラスベガスで開催された有名な DEF CON セキュリティ シンディグで、Mac のサイバーセキュリティ研究者である Patrick Wardle が 明らかになった 「ルートを取得」 特権の昇格 Mac 用 Zoom の (EoP) バグ:
私に来てくれたみんなにマハロ @defcon 「あなたは根付いています」と話してください🙏🏽
Zoom(macOS用)のローカルpriv-escの脆弱性(およびライブデモ😅)について話すことができてうれしかったです。
現在、パッチはありません👀😱
完全な詳細と PoC エクスプロイトを含むスライド: https://t.co/viee0Yd5o2 #0day pic.twitter.com/9dW7DdUm7P
— パトリック・ワードル (@patrickwardle) 2022 年 8 月 12 日
彼の講演[2022-08-12]に続くツイートで、ウォードルは次のように述べています。
現在、パッチはありません [:FRIED-EGG EYES DEPICTING ALARM EMOJI:] [:EDVARD MUNCH SCREAM EMOJI:]
Zoom はすぐにこの欠陥のパッチに取り組み、翌日に発表されました。 Zoomのセキュリティ速報ZSB-22018、祝詞を獲得 返信 プロセス中の Wardle から:
(信じられないほど)迅速な修正のために@ZoomにMahalos! [:祝福のために両手を上げ、絵文字について小刻みに動かしている:] [:精神的な善意のサインで手のひらを合わせた絵文字:]
ゼロデイ開示
Zoom がバグのパッチを発行することができた明らかな速度と容易さを考えると、吹き替え CVE-2022-28756、なぜ Wardle が事前にバグについて Zoom に知らせず、彼の演説の日を詳細を明らかにする期限として設定しなかったのか疑問に思っているでしょう。
そうすることで、Zoom に多くの Mac ユーザーにアップデートをプッシュする (または、少なくとも信頼できるユーザーに提供する) 時間を与えることができたでしょう。 早期にパッチを当てる/頻繁にパッチを当てる)、こうして Wardle がバグを悪用する方法を世界に説明してから、バグのパッチを適用するまでのギャップを解消します。
実際、Wardle は、数か月前に、このバグと、Zoom の自動更新プロセスにおける相互に関連した多数の欠陥について、Zoom に警告するために最善を尽くしたようです。
Wardle は、バグ開示のタイムラインについて説明しています。 彼の DEF CON トークからのスライド、および彼が発見した欠陥に関連する Zoom アップデートのストリームを一覧表示します。
両刃の剣
Wardle が議論したバグは、一般的に、Zoom の自動更新メカニズムに関連しています。Zoom は、ソフトウェア エコシステムの一部であり、両刃の剣のようなものです。通常の剣よりも強力な武器ですが、それに応じて安全に処理するのが難しくなります。
自動更新は、重要なパッチをより簡単かつ迅速に配布できるため、最新のクライアント アプリケーションには必須のコンポーネントです。これにより、ユーザーはサイバーセキュリティ ホールを確実に塞ぐことができます。
しかし、自動更新には多くのリスクが伴います。これは特に、更新ツール自体が通常、ルートレベルのシステム アクセスを必要とするためです。
これは、アップデーターの仕事がアプリケーション ソフトウェアを上書きすること (通常のユーザーが行うべきではないこと) であり、おそらく特権オペレーティング システム コマンドを起動して構成やその他のシステム レベルの変更を行うことであるためです。
言い換えれば、開発者が注意を怠ると、基礎となるアプリを最新の状態に保ち、より安全に保つのに役立つツールそのものが、攻撃者がアップデーターをだましてシステム権限で不正なコマンドを実行させることによってセキュリティを破壊する足がかりになる可能性があります。 .
特に、自動更新プログラムは、 信頼性 攻撃者がマルウェアを追加した偽のアップデート バンドルを単純に送り込むのを阻止するためです。
彼らはまた、維持する必要があります 整合性 これにより、ローカルの攻撃者は、ダウンロードされたばかりの「安全であることが確認された」アップデート バンドルを取得してからアクティブ化するまでの短い期間にこっそりと変更することができなくなります。
真正性チェックの回避
Wardle が彼の著書で説明しているように、 紙、彼が発見して開示したバグの XNUMX つは、Zoom の自動アップデーターがダウンロードしたばかりの更新パッケージの信頼性を検証しようとしたときの、上記の最初のステップの欠陥でした。
Zoom の開発者は、公式の macOS API を使用してダウンロードのデジタル署名を直接検証する代わりに、macOS ユーティリティを実行して間接的に認証を行うことにしました。 pkgutil --check-signature
バックグラウンドで出力を調べます。
以下はその例です pkgutil
古いバージョンの Zoom.pkg
ソフトウェア バンドル:
$ pkgutil --check-signature Zoom.pkg パッケージ "Zoom.pkg": ステータス: 配布用に Apple が発行した開発者証明書によって署名されています信頼できるタイムスタンプで署名されています: 2022-06-27 01:26:22 +0000 証明書チェーン: 1. 開発者 ID インストーラー: Zoom Video Communications, Inc. (BJ4HAAB9B3) 有効期限: 2027-02-01 22:12:15 +0000 SHA256 フィンガープリント: 6D 70 1A 84 F0 5A D4 C1 C1 B3 AE 01 C2 EF 1F 2E AE FB 9F 5C A6 80 48 A4 76 60 FF B5 F0 57 BB 8C ----------------------------------- ------------------------------------- 2. 開発者 ID 認証局の有効期限: 2027-02-01 22:12:15 +0000 SHA256 フィンガープリント: 7A FC 9D 01 A6 2F 03 A2 DE 96 37 93 6D 4A FE 68 09 0D 2D E1 8D 03 F2 9C 88 CF B0 B1 BA 63 58 7F -------- -------------------------------------------------- -------------- 3. Apple ルート CA の有効期限: 2035-02-09 21:40:36 +0000 SHA256 フィンガープリント: B0 B1 73 0E CB C7 FF 45 05 14 2C 49 F1 29 5E 6E DA 6B CA ED 7E 2C 68 C5 BE 91 B5 A1 10 01 F0 24
残念ながら、Zoom の署名検証コードを逆コンパイルしたときに Wardle が発見したように、Zoom アップデーターは pkgutil
人間の観察者と同じ方法でデータを取得します。
出力の有用な視覚的シーケンスに従って、出力を確認します。
まず、最初に目的のステータスを探します。 signed by a developer certificate issued by Apple for distribution
.
次に、サブヘッダーを見つけます Certificate Chain:
.
最後に、チェーンが次の XNUMX 人の署名者で正しい順序で構成されていることをクロスチェックします。
1. Zoom Video Communications, Inc. 2. 開発者 ID 認証機関 3. Apple ルート CA
驚くべきことに、Zoom のコードは上記の XNUMX つの文字列のそれぞれを単純に検証しました (Zoom 独自の一意の ID をチェックすることさえしません)。 BJ4HAAB9B3
) 現れた どこか からの出力で pkgutil
.
したがって、次のようなばかげているが有効な名前のパッケージを作成します。 Zoom Video Communications, Inc. Developer ID Certification Authority Apple Root CA.pkg
パッケージベリファイアをだまして、探している「識別文字列」を見つけさせます。
完全なパッケージ名が pkgutil
Zoom の不運な「ベリファイア」は、出力の間違った部分の XNUMX つのテキスト文字列すべてに一致します。
したがって、「セキュリティ」チェックは簡単にバイパスできます。
部分的な修正
Wardle は、Zoom がこのバグを報告してから XNUMX か月以上経ち、DEF CON に間に合うように最終的に修正したと述べています…
…しかし、パッチを適用した後、彼は更新プロセスに大きな穴がまだあることに気付きました。
アップデーターは正しいことをしようとしました:
- 1. ダウンロードしたパッケージを root が所有するディレクトリに移動し、 したがって、理論的には通常のユーザーには立ち入り禁止です。
- 2. ダウンロードしたパッケージの暗号署名を確認します。 公式の API を使用する。
pkgutil
出力。 - 3.ダウンロードしたパッケージファイルを解凍し、 バージョン番号を確認し、ダウングレード攻撃を防ぐため。
- 4.ダウンロードしたパッケージファイルをインストール、自動更新プロセスのルート権限を使用します。
残念ながら、更新パッケージの保存に使用されるディレクトリは root によって所有されていましたが、使用中に更新ファイルを破壊しようとするユーザーを詮索することから安全に保つために…
…新しくダウンロードされたパッケージ ファイルは、新しい場所で「誰でも書き込み可能」のままになりました (root ではなく、通常のアカウントによってダウンロードされた場合の副作用)。
これにより、ローカルの攻撃者が更新パッケージを変更する抜け穴ができました。 After そのデジタル署名が検証されている (ステップ 2)。 影響することなく バージョン チェックの詳細 (ステップ 3)、しかし 直前 インストーラーは、root 権限で処理するためにパッケージ ファイルを制御しました (ステップ 4)。
この種のバグは、 競合状態攻撃者は、インストーラーが開始する直前に家に帰ることができるように、終了時刻を計る必要があるため、悪意のある変更をインストーラーの直前に忍び込ませる必要があります。
また、エキゾチックな響きの頭字語で呼ばれるこの種の脆弱性についても耳にします。 トクトウ、の略 チェック時刻から使用時刻まで、あまりにも前もって事実を確認すると、信頼するまでに時代遅れになる可能性があることを明確に思い出させる名前.
TOCTOU の問題は、英国のレンタカー会社が、10 年前に発行された可能性があり、その後さまざまな理由で停止または取り消された可能性がある運転免許証の確認を求めなくなった理由です。あなたの側の安全でないまたは違法な運転の。 TOCTOU の潜在的なギャップを 21 年からわずか 10 週間に短縮するために、物理的なライセンスに加えて、過去 XNUMX 日以内に発行された XNUMX 回限りの英数字の「最近の有効性の証明」コードも提示する必要があります。
修正は現在
Wardle によると、Zoom は、上記の手順 1 でコピーした更新パッケージ ファイルのアクセス権を変更することで、このバグを防止しています。
署名の確認、バージョンの検証、および最終的なルート レベルのインストールに使用されるファイルは、常にルート アカウントのみによるアクセスに制限されています。
これにより、競合状態が解消されます。これは、権限のない攻撃者が手順 2 の最後までファイルを変更できないためです (検証に成功) とステップ 4 の開始 (インストールが始まります).
システムをだましてルート アクセス権を与えるためにパッケージ ファイルを変更するには、ルート アクセス権がすでに必要なので、そもそもこの種の EoP バグは必要ありません。
手順 2 のチェックはファイルの使用が開始されるまで有効なままであり、チェックが無効になる機会がなくなるため、TOCTOU の問題は適用されません。
何をするか?
Mac で Zoom を使用している場合は、アプリを開き、メニュー バーで zoom.us
> Check for Updates...
アップデートが利用可能な場合は、新しいバージョンが表示され、クリックできます [Install]
パッチを適用するには:
ご希望のバージョンは 5.11.5(9788) 以降。