- 大手 IT 企業の Tencent 社が作成した人気のメッセージングアプリ WeChat の特定のバージョンには、攻撃者がリモートでコードを実行できるようになる型混乱の脆弱性が含まれています。
- V8 エンジンに起因するこの問題(CVE-2023-3420)は 2023 年 6 月に公開されてパッチが適用されましたが、WeChat WebView コンポーネントは更新されず、2024 年 4 月に Talos がベンダーに報告した時点では依然として脆弱性が残っていました。
- Cisco Talos の研究者は、WeChat のバージョン 8.0.42(Google Play ストアで公開されている 2024 年 6 月 14 日時点での最新バージョンで、Android デバイス向け)までのバージョンが、この問題に対して脆弱であることを確認しました。ただし WebView では動的なローディングメカニズムを使用しているため、Talos はすべてのバージョンにパッチが適用されているかを確認することはできません。
- 2024 年 4 月 30 日、Talos はこの脆弱性を Tencent WeChat に報告し、以降の数週間から数か月にわたって調査を継続しました。
脆弱性の概要
WeChat は中国で多くのユーザーに使用されているインスタント メッセンジャー アプリです。ユーザーはこのアプリを使って特定の商品の支払いを行うことができます。WeChat では、Facebook や X のようなソーシャル メディア プラットフォームに似た機能も提供されています。
Cisco Talos が WeChat を調査したところ、内蔵の Android WebView ではなくカスタムの WebView コンポーネントを使用していることが判明しました。このコンポーネントは Tencent 社が保守している XWalk のカスタムバージョンです。組み込みの Chromium ブラウザ(V8 バージョン 8.6.365.13、2020 年 10 月 12 日にリリース)で構成されており、HTML のレンダリングと JavaScript の実行をサポートしています。
カスタムの WebView コンポーネントは、ユーザーがアプリに初めてログインした後で携帯電話に動的にダウンロードされるため、Tencent 社は動的なアップデートを展開できます。ダウンロードされた XWalk WebView コンポーネントは「/data/data/com.tencent.mm/app_xwalk_4433/apk/base.apk」というパスに配置されます。/data/data/com.tencent.mm/app_xwalk_4433/extracted_xwalkcore/libxwebcore.so にあるライブラリには、V8 の古いバージョンを使用した埋め込みブラウザ環境が含まれています。
GitHub Security Labs は、V8 バージョン 11.4.183.19 に関する脆弱性 CVE-2023-3420 の詳細な分析を 2023 年 6 月に公開しました。
エクスプロイトがトリガーされる仕組み
このエクスプロイトは、被害者が悪意のある WeChat メッセージ内の URL をクリックしたときにトリガーされます(実際に悪用が確認されています)。WeChat 内で URL をクリックすると、JavaScript が埋め込まれた Web ページが XWalk 内にロードされてエクスプロイトが実行されます。いわゆるワンクリックエクスプロイトです。
この脆弱性の影響
このエクスプロイトにより、攻撃者は被害者のデバイスを制御し、任意のコードを実行できるようになります。
CVSSv3 スコア:8.8 – CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
影響を受けているか確認する方法
Talos は WeChat バージョン 8.0.42(Play ストアで入手可能な 6 月 14 日時点での最新バージョン)が影響を受けていることを確認しています。影響を受けるカスタムブラウザ(MMWEBID/2247)を使用している WeChat では、リクエストのユーザーエージェントにカスタムブラウザのバージョン情報が含まれています。たとえば次のような情報です。
Mozilla/5.0 (Linux; Android 14; Pixel 6 Build/UQ1A.240105.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4433 MMWEBSDK/20230805 Mobile Safari/537.36 MMWEBID/2247 MicroMessenger/8.0.42.2428(0x28002A48) WeChat/arm64 Weixin GPVersion/1 NetType/4G Language/en ABI/arm64
影響を受けている場合の対処方法
WeChat を最新バージョンにアップデートし、XWalk もアップデートされていることを確認してください(Talos のテストでは、アップデートがリリースされた直後にアプリが最新バージョンに自動でアップデートされることはありません)。また、影響を受けているバージョンを使用している場合は、WeChat で送信されたリンクをクリックしないようにしてください。リンクを確認する必要がある場合は、WeChat のチャットからリンクをコピーしてアプリから離れ、更新された Web ブラウザでリンクを開いてください。WeChat ユーザーは、WeChat で送信される URL のリンクにはくれぐれもご注意ください。URL のリンクをクリックする前に、信頼できるソースからのものであることを確認する必要があります。
バグ報告のタイムライン
- 2024 年 4 月 30 日:調査中にベンダーに開示。
- 2024 年 5 月 31 日:Tencent 社が報告を認め、脆弱性を認識していること、パッチを適用中であることを確認。
- 2024 年 6 月 14 日:WeChat の新バージョン 8.0.48 が Play ストアでリリース(ただし、Talos のテスト用デバイスのアプリは自動的にアップデートされなかった)。
- 2024 年 6 月 27 日:ベンダーに公開の意思を通知。
クレジット
Cisco Talos の Chi En Shen(Ashley Shen)、Vitor Ventura、Michael Gentile、Aleksandar Nikolic。
本稿は 2024 年 09 月 06 日にTalos Group のブログに投稿された「Vulnerability in Tencent WeChat custom browser could lead to remote code execution」の抄訳です。