クラウドコンピューティングが必要ですか? 今すぐ始める

最近の重要な libwebp および libvpx の脆弱性に関するガイダンス

防御者にとって重要なのは、ネットワーク内のワークロードの脆弱性を特定することです。

背景

この数週間で、Google は Google Chrome の 更新を リリース しました。これには、 CVE-2023-4863CVE-2023-5217の修正が含まれています。どちらの脆弱性もゼロデイ脆弱性が野放しで悪用されたため発見されました。そして、CVE エントリーが更新され、Google Chrome から基盤ライブラリー(libwebp と libvpx)に範囲が広げられました。また、どちらの CVE も  CISA の Known Exploited Vulnerabilities Catalogに掲載されています。

このブログ記事では、この 2 つの脆弱性を詳しく説明し、ネットワーク内の脆弱なアプリケーションを検知する方法に関する推奨事項を紹介します。これらの脆弱性は引き続き調査されているため、この記事は将来的に更新され、知見やガイダンスが追加される可能性があります。

CVE-2023-4863 — libwebp

この脆弱性は、Apple の Security Engineering and Architecture(SEAR)チームと The Citizen Lab によって報告されました。このレポートに基づいて、研究者はこの脆弱性と BLASTPASS 攻撃 (NSO Group による iPhone に対するゼロクリック・ゼロデイ攻撃)の相関関係を明らかにしました。

この脆弱性自体は libwebp のヒープオーバーフローであり、webp イメージをロスレス形式でデコードするプロセスに存在しています。Ben Hawkes 氏はこの脆弱性に関する非常に詳細な 技術分析 を記しています。

Libwebp は Google が開発したライブラリーであり、WebP 形式(同じく Google が開発)で画像をエンコードおよびデコードします。この脆弱性は、 Huffman テーブルを使用するロスレス圧縮によるライブラリーの画像解析に存在します。基本的に、攻撃者はテーブルを操作して、ライブラリーが実際のサイズよりも少ないメモリーをテーブルに割り当てます。これにより、ヒープオーバーフローと境界を越えた書き込みが発生します。

そのような結果を得るための方法や設定はたくさんあります。そのため、それらすべてを網羅する概念実証(PoC)はありませんが、 @mistymntncopによる PoC で攻撃実行例を確認することができます。

CVE-2023-5217 — libvpx

この脆弱性は、Google の Threat Analysis Group の Clément Lecigne によって発見されました。商業的監視ベンダーもこの脆弱性を 利用 しました。

Libvpx も WebP プロジェクトの一つです。具体的には、このライブラリーは動画のエンコードとデコードのために VP8 形式と VP9 形式を処理します。この脆弱性の詳細はそれほど明らかになっていませんが、ヒープ破壊の脆弱性でもあることがわかっています。

何が脆弱なのか?

最初は、脆弱性が Chromium に存在していたため、脆弱であると報告されたのはブラウザーだけでした。しかし、この脆弱性は libwebp と libvpx の基盤ライブラリーに存在するため、影響の範囲ははるかに広くなり、 libwebp バージョン 0.5.0 から 1.3.1 を使用するアプリケーションや、1.13.1 より前のバージョンの libvpx を使用するアプリケーションが影響を受けます。

Akamai は、一般に公開されているレポートに基づいて、そのいずれかのライブラリーに依存するアプリケーションのリストを作成しました。また、Akamai が Insight クエリーを使用して検知した、ライブラリーを使用するプログラムも含めました。 これは、それらが必ずしも脆弱であるということではありません。

脆弱なのは、libwebp の WebP ロスレス機能を使用するプログラム、または libvpx で V8 または V9 コーデックを使用するプログラムです。これらのライブラリーは完全に異なる機能に使用できるため、これらのライブラリーを使用していることが必ずしも脆弱性に該当するわけではありません。

Akamai は、Web ブラウザーがこれらの機能を使用することを認識していますが、他のプログラムがこれらの機能を使用しているかどうかを報告することはベンダーの判断に委ねています。次のブラウザーやその他のアプリケーションは、影響を受けるライブラリーを使用していることが確認されています。

  • Fedora(37–39)
  • Debian(10–12)
  • Google Chrome
  • Firefox
  • Microsoft Edge
  • Opera
  • Tor
  • Brave
  • Vivaldi
  • Telegram
  • Discord
  • 1Password
  • Electron
  • GIMP
  • Slack
  • LibreOffice
  • Skype
  • Grafana
  • KeePassXC
  • VLC

また、匿名の人物が Ubuntu のパッケージリポジトリーを分析し、libvpx7 に依存する全パッケージの リストをアップロード しました。

脆弱性への暴露 — OSquery

ライブラリーはさまざまな場所に存在し、製品のアップデートはソフトウェアベンダー次第であるため、ネットワーク内のマシンの脆弱性の範囲と暴露率を検知することが重要です。これを支援するために、Akamai は OSquery クエリーをいくつか開発しました。Akamai Guardicore Segmentation のお客様は、Insight 機能を使用して、ネットワーク全体でそのクエリーを実行できます。

メモリーにロードされる libweb と libvpx

ライブラリーはどのアプリケーションにも付随しているため、ハードドライブ上でライブラリーを特定することはできません。代わりに、OSquery テーブル process_memory_map を使用して、実行中の各プロセスのロード済みモジュール(DLL または SO ファイル)をチェックし、 ファイル テーブルを使用してバージョンの取得を試みることができます。

ライブラリーはバージョンメタデータなしではコンパイルされず、バージョンメタデータはコンパイルプロセス中に追加されるため、必ずしも使用可能ではありません。バージョンメタデータが使用可能な場合でも、ベンダーは独自のソフトウェアバージョン番号を付与できるため、正確ではない可能性があります。ユーザーの判断により、フォールス・ポジティブ(誤検知)やトゥルー・ネガティブを回避することが推奨されます。

  SELECT DISTINCT
    procs.name AS process_name,
    pmm.path AS lib_path,
    file.file_version,
    CASE
        WHEN file_version = '' THEN 'unknown version, potentially vulnerable'
        WHEN pmm.path LIKE '%libwebp%' AND file_version < '1.3.2' THEN 'vulnerable version'
        WHEN pmm.path LIKE '%libwebp%' AND file_version >= '1.3.2' THEN 'not vulnerable version'
        WHEN pmm.path LIKE '%libvpx%' AND file_version <= '1.13.1' THEN 'vulnerable version'
        WHEN pmm.path LIKE '%libvpx%' AND file_version > '1.13.1' THEN 'not vulnerable version'
        ELSE 'unknown version, potentially vulnerable'
    END is_vulnerable
  FROM process_memory_map AS pmm
  JOIN processes AS procs USING(pid)
  JOIN FILE ON file.path = pmm.path
  WHERE pmm.path LIKE '%libwebp%' OR pmm.path LIKE '%libvpx%'

Web ブラウザーの特定

CVE とユースケースの初期レポートは Chromium から作成されているため、インストールされているブラウザーを検知するためのクエリーが含まれています。このクエリーにより、ブラウザーを実行していて追加調査が必要である可能性のあるネットワーク内のアセットを特定できます。さらに、インストールされているバージョンを、 National Vulnerability Database (NVD)の脆弱なブラウザーバージョンのリストと照らし合わせて確認できます。

  SELECT name, version FROM programs
  WHERE LOWER(name) LIKE "%chrome%" 
  OR LOWER(name) LIKE "%firefox%" 
  OR LOWER(name) LIKE "%microsoft edge%"
  OR LOWER(name) LIKE "%thunderbird%" 
  OR LOWER(name) LIKE "%brave%" 
  OR LOWER(name) LIKE "%opera%"

インストールされているプログラムの特定

上記のリストに含まれるいずれかのプログラムがインストールされているかどうかを確認するためには、次のクエリーを使用します。<program_name>を実際のプログラム名に置き換えるだけです。

  SELECT name, version FROM programs
  WHERE name LIKE "%<program_name>%"

緩和

脆弱なアプリケーションと資産のマッピング 

このブログ記事に記載されているアプリケーションのリストと Osquery クエリーを使用して、ネットワーク内の脆弱である可能性のあるアプリケーションをマッピングし、脆弱である可能性のある資産のリストを取得できます。

Akamai Hunt のお客様には、環境が脆弱性にさらされたことについて詳しく説明したレポートをお送りしました。その Hunt レポートは、このブログ記事に記載されているのと同様のクエリーに基づいており、インシデントの発生から数時間以内に送信されました。クエリーにより、世界中で数千もの脆弱な資産が検知されました。

パッチ適用

アプリケーションに脆弱性があるかどうかを評価する際に考慮されるパラメーターは多数あります。どのバージョンの libwebp または libvpx がロードされますか?そのアプリケーションは WebP ロスレス圧縮または VP8/VP9 コーデックを使用しますか?さまざまな組み合わせが考えられるため、多くのアプリケーションが悪用され、甚大な影響が生じるおそれがあります。

残念ながら、この脆弱性を緩和するパッチはありません。また、パッチを適用するためには、ソフトウェアベンダーがそのプログラムに関連するパッチをリリースする必要があり、それにはしばらく時間がかかる場合があります。組織は、脆弱性がありパッチが適用されていないワークロードはどれであるかを、時間をかけて評価する必要があります。

脅威アラートの感度 

影響を受けるすべてのプログラムに対するパッチがすでに入手可能であるとは限らないため、脆弱性がありパッチが適用されていない可能性があるワークロードに対するアラートの感度を高めることが賢明です。そうすることで、脆弱性が悪用されたり検知されなかったりしても、その後の影響を多少認識することができます。

ただし、これによりアラート疲れが増大する可能性があります。そのため、ネットワークに対する影響を受けるワークロードの重要性や影響力に応じて、アラートの感度を調整することをお勧めします。

まとめ

このブログ記事では、野放し状態で悪用されていた libwebp と libvpx の重大な脆弱性に関して、明らかになっている情報を確認しました。

防御者にとって重要なのは、ネットワーク内のワークロードの脆弱性を特定することです。Akamai は、ライブラリーを使用するプログラムを検知するための OSquery クエリーを提供しています。また、パッチを適用できない場合に、一部のリスクを緩和するためにすべきことについても説明しました(脅威アラートの感度の調整など)。

このブログ記事では、現在入手可能な情報に基づいた Akamai の見解と推奨事項について概要を紹介しています。Akamai ではレビューを継続的に行っているため、本資料に含まれる情報は変更される可能性があります。また、Akamai の Twitter アカウントでリアルタイムの更新情報を確認できます。