この度、当社の高度な脅威検知技術によって特定され、改善された様々な共通脆弱性・暴露(CVE)に焦点を当てた技術分析ブログのシリーズをご紹介いたします。すべての研究は、2023年9月に開始されたOPSWAT サイバーセキュリティ・フェローシップ・プログラムに参加する大学院生によって行われています。
このブログでは、Google Chrome CVE-2019-13720 と、組織が CVE-2019-13720 悪用攻撃を防御する方法について説明します。
グーグル・クロームとは?
Google ChromeはGoogleによって開発され、2008年9月2日に正式にリリースされたクロスプラットフォームのウェブブラウザである。より優れた、よりモダンなブラウザを作ろうというGoogleの努力の一環として開発された。当時、タブブラウジング、プライバシーモード、Googleサービスとの同期など、多くの新機能を提供していた。リリース以来、世界中で最も人気のあるウェブブラウザのひとつとなっている。2021年現在、グーグル・クロームのユーザー数は約32億人と推定されている。
Google Chromeの人気のため、研究や攻撃の焦点となっており、倫理的なハッカーと悪意のあるハッカーの両方を魅了しています。Google Chromeで確認されている一般的な脆弱性には、サービス拒否(DoS)、情報漏洩、リモートコード実行などがあります。リモートコード実行の脆弱性については、Google Chromeにはサンドボックスからのエスケープと非エスケープの2種類が存在します。
CVE-2019-13720とは?
CVE-2019-13720 は、バージョン 78.0.3904.87 より前の Google Chrome における WebAudio の Use After Free (UAF) 脆弱性であり、リモートの攻撃者が細工した HTML ページを介してヒープ破壊を悪用する可能性があります。被害者が悪意のあるウェブページにアクセスしたり、脆弱性のある Google Chrome ブラウザ上で細工された HTML ページを開いたりすると、被害者のエンドポイント上で悪意のあるコードが実行されます。このCVEは、2019年にAnton IvanovとAlexey Kulaevによって最初に報告されました。
技術的な観点からは、Qt WebEngine のオーディオコンポーネントにおける Render スレッドと Audio スレッド間の競合状態により、use-after-free 脆弱性が悪用される可能性があり、リモートの攻撃者に WebAssembly のシェルコードを実行され、被害者のデバイスが侵害される可能性があります。この問題を解決するには、すべての Qt WebEngine ユーザが最新バージョンにアップデートする必要があります。
攻撃の局面
攻撃者は、悪意のあるHTMLを含む特別なURLを作成し、そのリンクを記載したフィッシング・メールを被害者に送信する。被害者がメールを開き、リンクをクリックすると、悪意のあるコードが実行され、攻撃者は感染したシステムを乗っ取ることができる。HTML文書に表示されるリモート・コードの手口の詳細は、こちらを参照してください。
Use After Free(UAF)とヒープスプレー脆弱性とは?
UAF脆弱性とは、セキュリティ上の欠陥の一種であり、メモリが解放された後もプログラムがメモリを使用し続けることで発生する。これは、データの破損、任意のコードの実行、システム・クラッシュなど、さまざまな悪影響につながる可能性がある。
ヒープ・スプレーは、ヒープ全体の異なる場所に複数のバイトを書き込むペイロード配信技術です。これは、細工されたペイロード(すなわち有害なデータ)をメモリヒープに注入し、実行フローがアプリケーションのオリジナルコードではなく、スプレーされたメモリにジャンプするようにすることを含みます。この攻撃の目的は通常、EIPレジストリを制御することである。
WebAssemblyとは?
WebAssemblyは、しばしばWasmと略されるが、新しいバイナリ命令フォーマットであり、C/C++のような高級言語をコンパイルするための移植可能なターゲットとして機能し、ウェブブラウザのJavaScriptエンジンでネイティブに近い速度で実行できるようにします。
しかし、WebAssemblyはC/C++のようなメモリセーフではない言語からコンパイルできるため、バッファオーバーフローやフォーマット文字列の脆弱性のような一般的なコーディングの脆弱性がクロスコンパイルされたWebAssemblyバイナリに導入される可能性があります。このようにWebAssemblyモジュールに脆弱性が含まれる可能性があるため、現代のWebアプリケーションの攻撃対象が増加しています。
レースコンディションの脆弱性とは何か?
ソフトウェアにおけるレースコンディションの脆弱性は、複数のプロセスやスレッドが共有リソースに同時にアクセスしようとする際に発生し、アクセスのタイミングによって予測不可能な結果や動作の中断を引き起こす。プログラムにレースコンディションの脆弱性があると、アプリケーションのクラッシュ、データの破損、不正な結果、不整合など様々な問題が発生します。攻撃者はこの脆弱性を悪用し、不正アクセス、情報漏洩、特権の昇格、システムクラッシュを誘発することができます。
レースコンディションの脆弱性として分類されるTOCTTOU脆弱性は、リソースのチェックと使用の間の時間差を悪用します。
CVE-2019-13720はどのように機能するのか?
この脆弱性を悪用するために、研究者はJavaScriptコードをHTMLファイルに添付する。ユーザーがHTMLファイルを起動すると、スクリプトは同じバッファ・データを扱う2つのスレッド(メイン・スレッドとオーディオ・スレッド)を作成し、リークされたアドレスを見つけようとする。次に、ReverbConvolverStageのtemporary_buffer_objectのリークされたアドレスを使用して、IIRFilterNode(Convolverと同じスーパーページを共有している)のfeedforward_arrayのポインタを取得する。その後、研究者は、2番目のトリガーUAFのfeedforward_arrayのポインタを取得しようとする。
WebAssembly はシェルコードの実行を処理する。シェルコードの実行を可能にするために、研究者はIIRFilterの解放を試み、スプレーを必要とせずに新しい割り当てが行われる場所の制御を得るまで、GCPreventerに書き込みを行う。最後に、研究者はメモリ内のジャスト・イン・タイム(JIT)領域にシェルコードを書き込む。その結果、ファイル・リーダーのエラー・イベントが追加されると、WebAssemblyモジュールはシェル・コードを実行する。
この脆弱性に関連するシェルコードを実行するには、脆弱なバージョンのChromeでサンドボックスを無効にする必要があります。
シェルコードが実行されると、被害者のデバイス上でメモ帳サービスが自動的に開かれる。
修復方法
MetaDefender EndpointOPSWAT設計されたエンドポイントセキュリティソリューションであるMetaDefender Endpointは、ユーザがこれらの攻撃を検出し、攻撃からシステムを守ることを可能にします。ユーザがSandbox 機能(--no-sandbox)を無効にした後、MetaDefender Endpoint CVEを検出し、最新のGoogle Chromeのパッチを適用することができます。その後、ユーザは手動でGoogle Chromeを最新バージョンに更新するか、Patch Management タブの下にある「自動更新」機能を有効にして、新しいパッチが利用可能になり次第、OPSWAT MetaDefender Endpoint ブラウザを自動的に更新させることができます。
悪意のあるコードにさらされるのを防ぐため、ユーザーは電子メール・フィルター・ツールを使ってフィッシング攻撃を検知し、電子メール内の不明なURLをクリックしないようにすべきである。
MetaDefender Endpoint 主な製品の特徴と利点
- リスクのあるアプリケーションのレビューと修正MetaDefender Endpoint UIで脆弱なアプリケーションや古いアプリケーションを確認することができます。
- OS上でマルウェア対策が適切に設定されていることを確認する。
- 組織のセキュリティ基準を確実に遵守する。
- ハードディスク暗号化の保証。
- オペレーティングシステムのパッチ検証。
- マルウェアをスキャンし、エンドポイントにマルウェアフリーのアナウンスを行うための複数のオプション。
MetaDefender Endpoint forEndpoint Vulnerability and Application Patchingはこちらからダウンロードできます。
参考
- https://nvd.nist.gov/vuln/detail/CVE-2019-13720
- https://bugs.chromium.org/p/chromium/issues/detail?id=1019226
- https://www.w3.org/TR/webaudio/
- https://security.gentoo.org/glsa/202004-04
- https://www.cve.org/CVERecord?id=CVE-2019-13720
- https://packetstormsecurity.com/files/167066/Google-Chrome-78.0.3904.70-Remote-Code-Execution.html
- https://devopedia.org/race-condition-software
- https://webassembly.org/
- https://www.researchgate.net/figure/WebAssembly-high-level-architecture_fig1_360232889
- https://www.researchgate.net/publication/331990070_Native_Web_Audio_API_Plugins
- https://whitehat.vn/threads/gioi-thieu-ky-thuat-khai-thac-exploit-heap-spray.5056/
- https://www.opswat.com/