Apple 製品に「不法侵入」が可能なゼロデイ脆弱性。今すぐパッチの適用を

私たちが何をお伝えしようとしているのか、NakedSecurity の読者の方はもう分かっていると思うので、単刀直入に言います。

早めに、そして頻繁にパッチを適用しましょう。

プライバシーとサイバーセキュリティに関連する活動を推進しているグループであるカナダの「The Citizen Lab」は、Apple の iPhone、iPad、Mac OS にゼロデイ脆弱性があることを発表しました。

この脆弱性は FORCEDENTRY というニックネームで呼ばれていますが、正式には CVE-2021-30860 が採番されています。

Citizen Lab は、この脆弱性とそれを悪用するコードを、スパイウェア製品の Pegasus を提供しており物議を醸すことが多いデバイス監視会社 NSO Group に帰属することを指摘しています。

Citizen Lab によると、この脆弱性はトラップが仕込まれた PDF ファイルを処理するときに攻撃されるとしています。サウジアラビアの活動家が、NSO のスパイウェアが何らかの形でデバイスに埋め込まれていることを疑い、自分の iPhone を渡して分析を依頼した際に発見されたとのことです。

Citizen Lab の報告は、Apple 社のセキュリティ情報 HT21807 と一致しており、Citizen Lab がこの脆弱性を報告したことを認めた上で、Apple は次のように述べています。

(引用文日本語訳) 悪意を持って作成された PDF を処理すると、任意のコードが実行される可能性があります。Apple は、この問題が実環境で悪用されている可能性があることを認識しています。入力値の検証を改善することで、整数オーバーフローの問題は解決されました。

Citizen Lab は、調査対象となったスマートフォンが iMessage のやり取りによって感染したことを明確にしていますが、Apple の公報では、この PDF 処理のバグはコアのグラフィック システムコンポーネントに存在すると説明されており、この脆弱性が iMessage アプリに限定されないことを示唆しています。

整数が抱える問題点

整数オーバーフローは、算術計算が利用可能な数値精度に収まらない場合に発生し、多くの場合、後に何らかのメモリバッファオーバーフローが発生します。

コンピュータは通常、整数 (1、42、2021 など) の演算に、16、32、64 といったビット幅が固定された値を使用するため、入力の組み合わせによっては、利用可能なスペースに収まらない出力が得られます。

これは非常に有名な 2000 年問題と同じレベルの欠陥です。年号を格納するため 2 桁の計算を使用するプログラムでは、99+1 = 100 と全体を計算するのではなく、2 桁の「ショートカット」を使用して、1999 年の次の年号を 1999+1 = 2000 と計算していました。

もちろん 2 桁で計算すると、「100 年」を表す先頭の 1 桁が失われ 00に戻ってしまうため、午前 0 時に日時が 1 秒進むどころか、1 世紀も後ろにずれてしまうことになります(2000 年になるはずが 1900 年になってしまう)。

メモリ管理コードでは、このようなオーバーフローが発生すると、メモリブロックに単純に収まりきらないデータチャンクが書き込まれることになります。

たとえば、画像の幅と高さを 16 ビットで表現するプログラムでは、幅 65535ピクセル、高さ 65535 ピクセル (16 進数では 0xFFFF、2 進数では 16 ビットの 111...111) までの画像を指定できてしまいます。

一見すると、必要以上に大きな画像のように思えます。

しかし、プログラマが必要なピクセル数 (幅 × 高さ) を 32 ビットで指定するのを忘れて、つい 16 ビットの整数を割り当ててしまうと、たとえば 1000 × 1000 ピクセルの画像であっても、大変なことになってしまいます。

1000 × 1000 の積は 1,000,000 ピクセル、また 16 進数では 0xF4240 となりますが、この数字は整数オーバーフローのため、全体 (5 桁の 16 進数) を格納するために 16 ビットではなく 20 ビットが必要になります。(N 桁の数字を 2 つ掛け合わせると、結果は 2N 桁もの長さになります。)

16 ビットの整数にすると、数値の最初にある 0xF は捨てられ、4 桁の 16 進数 (16 ビット) しか残らないため、計算された「画像サイズ」は 16 進数で 0x4240 までラップアラウンド (処理可能な範囲の最後に達した後に、最初に戻ること) して、まるで昔の車の走行距離メーターが 99,999 キロを超えると、ゼロからやり直したような状態になります。

これでは、1,000,000 ではなく 16,960 という誤った答えが出てしまいます。

もしソフトウェアが、1000 × 1000 ピクセルの画像の「正しい」値として誤算した 16,960 バイトのストレージをやみくもに割り当ててしまうと、画像がサイズの小さいバッファにコピーされた途端に、巨大で壊滅的なバッファオーバーフローが発生してしまいます。

修正されたもう 1 つのバグ

興味深いことに、Apple 社は同時に、CVE-2021-30858 と呼ばれる別のバグも修正しました。

この 2 つ目のゼロデイ脆弱性は、Apple の Web レンダリングエンジンである WebKit で発見されました。WebKit は、すべての Apple OS に内蔵されている Safari ブラウザのコア機能です。

ご存知かもしれませんが、HTML コンテンツをレンダリングして表示できる全ての App Store 上のプログラム (最も基本的なゲームやユーティリティから最も強力な Web ブラウザまで) は、WebKit を使用するように強制されています。

通常は Web レンダリングエンジンとして Chromium と Gecko を使用している Edge や Firefox などのブラウザでも WebKit を使用しなければならないため、WebKit のセキュリティバグは iPhone や iPad に広く影響を及ぼす可能性があります。

TCVE-2021-30858 のバグは Use After Free (解放済みメモリの使用) という脆弱性で、不要になったメモリを OS に解放することで、別の場所で使えるようにするのですが、

不用意にもそのメモリを使い続けてしまい、そこに保存されていた新しいデータが上書きされる問題です。

このようなバグがあると、通常、アプリケーションがクラッシュするだけですが、攻撃者がリモートからコードを実行)できるようになる場合もあります。今回はそのケースに該当しているようです。

この記事にある 2 つのバグが関連しているかどうかはわかりません。Citizen Lab の報告書では、CVE-2021-30860 についてのみ言及されており、WebKit の CVE-2021-30858 については、単にある匿名の研究者による報告とされています。

対策

明らかに独立した 2 つのバグが同時に発生して悪用されており、ブービートラップ付きの PDF ファイルや Web ページにおいて何に気をつければよいのか、これまでのところほとんど示されていません。

早めに、そして頻繁にパッチを適用すること以外にできることはありません。

現在のパッチは、Apple の最新セキュリティ情報に以下のように記載されています (協定世界時 2021 年 9 月 14 日 0 時 1 分現在)。

  • HT212804: macOS Big Sur 11.6、両方のバグを修正。
  • HT212805: 2021-005 Catalina、PDF のバグのみを修正。
  • HT212806: watchOS 7.6.2、PDF のバグのみを修正。
  • HT212807: iOS 14.8 および iPadOS 14.8、両方のバグを修正。
  • HT212808: Safari 14.1.2 for Catalina および Mojave、WebKit のバグのみを修正。

つまり、macOS Catalinaでは、現在 OS 自体のパッチと WebKit / Safari のパッチの 2 つが必要になります。

アップデートをチェックする(まだ自動でダウンロードされていない場合は自動で取得する)には、次のようにします。

  • iPad または iPhone の場合、 「設定」→「一般」→「ソフトウェア・アップデート」を選択します。iOS 14 を使用している場合は、14.8 が必要です。
  • MacBook ノートパソコンまたはデスクトップ Mac の場合、 「Apple メニュー」→「システム環境設定」→「ソフトウェア・アップデート」を選択します。macOS Big Sur 11 を使用している場合は、11.6 が必要です。

ソフォスが知る限り、Citizen Lab が報告したバグは、14.8 より前の iOS バージョンを搭載したすべての iPhone」に影響を与えるとされており、Apple がサポートしている iOS 12 も対象であると考えられます。

しかし、iOS 12 に言及している最新のセキュリティ情報は見当たらないため、古い機種には脆弱性があってもまだパッチが適用されていない可能性があります。

今回のゼロデイパッチの直前に発行された HT212803 は、iPhone を排気量の大きなオートバイや、悪路の走行に使用されるマウンテンバイクに直接取り付けると、携帯電話のレンズ内の精密工学部品が振動による損傷を受ける可能性があるというニュースを取り上げています。順番ではこのバッチの次にあたる HT212809 はまだ存在しません (協定世界時 2021 年 9 月 14 日 0 時 1 分現在)。

古い iPhone をお使いの場合、現時点では、PDF ファイルを受け取る相手やダウンロードするサイトについて、いつも以上に慎重になっていただくことをおすすめします

特に、自分の仕事や趣味に関連するような文書に決して惑わされないようにしてください。

サイバー犯罪者は、職務経歴書を読んだり、SNS のページをのぞいたりするだけで、仕事上や家庭内で、あなたが何に関心を持っているか簡単に把握できます。

疑わしい場合は、無視しましょう。