Microsoft8月11日(米国時間)にリリースした8月のセキュリティ更新プログラムには、2件のゼロデイ脆弱性に対する修正が含まれていた。そのうちの1件はInternet Explorerにおけるリモートコード実行の脆弱性で、CVE-2020-1380が割り当てられている。この脆弱性を最初に報告したKaspersky Labが、8月12日に公開した公式ブログ「SECURELIST」「Internet Explorer and Windows zero-day exploits used in Operation PowerFall|Securelist」において、CVE-2020-1380を悪用した具体的な攻撃手段について解説している。
CVE-2020-1380はInternet Explorer 9以降でデフォルトで使用されているJavaScriptエンジン「jscript9.dll」に存在する脆弱性で、JIT(Just In Time)最適化およびJITコンパイル済みコードにおける必要なチェックの欠如によって引き起こされる。Kasperskyでは、この脆弱性を悪用した韓国企業に対する攻撃を分析することで詳細を把握し、一連の攻撃を「Operation PowerFall」と名付けたという。
SECURELISTの記事では、Operation PowerFallによって使われた攻撃手法が、概念実証のコード付きで解説されている。この実証コードで示されているのは、オブジェクトを浮動小数点数に変換する過程で、解放されたオブジェクトのメモリがどのように扱われているかというJavaScriptエンジンの挙動だ。通常であれば解放されたメモリに値が格納されないようにチェックが行われるが、JITコンパイル済みのコードではこのチェックが行われない。攻撃者は戻り値が書き込まれるインデックスを制御できてしまうという。
攻撃コードでは、JITコンパイルが行われるまで無害な関数呼び出しを繰り返したり、オブジェクトの解放が行われるようにWeb Workers APIを悪用したりするなどの手法が組み合わせて使われている。その後、多数の整数配列が作成された場合に作成されるLargeHeapBlockオブジェクトの性質を利用して、解放されたメモリの再利用を試みるという。
最終的に攻撃者は、関数のリターンアドレスを上書きしてシェルコードを実行するためのリターン指向プログラミングのチェーン(ROPチェーン)を構築する。そしてシェルコードを経由して任意の実行可能ファイルをダウンロードして実行させるという。
Kasperskyは、過去の攻撃との類似性から、Operation PowerFallには「DarkHotel」と呼ばれるAPT攻撃グループ(高度で持続的な攻撃を実行するサイバー犯罪グループ)が関与している可能性があると伝えている。DarkHotelは主にアジアの特定のホテルに滞在する企業幹部をターゲットとして活動するAPTグループで、過去にも多くの企業が被害を受けているという。DarkHotelについては、Kaspersky公式ブログの次のエントリで詳しく報告されている。
Operation PowerFallで利用されたCVE-2020-1380の脆弱性は深刻度が「緊急(Critical)」に分類されており、早急にセキュリティアップデートを適用することが推奨されている。