ゼロデイ攻撃に利用された一太郎の脆弱性とシェルコードの詳細分析

11月13日にジャストシステム社より、一太郎シリーズの脆弱性(CVE-2014-7247)を修正するパッチが公開されました。同日の本ブログ記事でもお伝えしているように、トレンドマイクロでは、この一太郎の脆弱性をパッチ公開前に利用した、いわゆるゼロデイ攻撃を日本国内において観測しています。今回トレンドマイクロでは、この脆弱性とシェルコードに対して、より詳細な分析を行いました。

■確認された不正プログラムの悪用する脆弱性と、シェルコードの詳細について
この脆弱性は、一太郎に含まれるコンポーネントファイルのひとつである “JCXCALC.DLL” 内から呼び出されるコピー処理に起因し、ローカルの静的に確保された配列に対して、その大きさを超える量のデータを書き込むことが可能となるものです(図1)。その結果、スタック上のリターンアドレスを任意の値に書き換えることが可能となります。

図1:上書きの発生個所
図1:上書きの発生個所

今回観測されたゼロデイ攻撃ではこの脆弱性を悪用し、同じく一太郎に含まれるコンポーネントのひとつである “JSFC.DLL” のコードの一部をトランポリンコードに指定することで、スタック上からコードを実行します。シェルコードは 2段に分かれており、1段目のコードは、メモリ中に読み込まれた一太郎文書ファイル(jtd)に含まれる 2段目のコードを検索するものです(図2)。

図2:2段目のシェルコードをメモリ上から検索するコード
図2:2段目のシェルコードをメモリ上から検索するコード

2段目のシェルコードは、最初に XOR によるデコードを行い本来のシェルコードを復号し、jtd ファイルに含まれる不正プログラム本体の exe ファイルを抽出し、実行します(図 3)。

図3:シェルコードのデコードと本体ファイルの取り出し処理の開始箇所
図3:シェルコードのデコードと本体ファイルの取り出し処理の開始箇所

一太郎の脆弱性を狙う攻撃は、件数は少ないものの毎年継続して発生しています。これは、日本を対象とした標的型攻撃が継続して発生していることを示していると言えます。標的型攻撃において攻撃者は攻撃対象が利用しているソフトを把握した上で脆弱性を狙います。言い換えれば、攻撃対象が利用しているソフトウェアであればどのようなものでも攻撃される可能性があります。会社や組織内での対策を考える上では、自組織で使用しているソフトウェアを把握し、アップデートの管理を行うことが重要です。またこのような標的型攻撃においてはゼロデイ攻撃の可能性も高いため、修正プログラム適用までの期間、ゼロデイ攻撃の影響を防ぐ代替策の導入を検討しておく必要があるでしょう。

シェルコードによって不正プログラムの本体ファイルが文書ファイルから取り出され、実行されますが、この不正プログラムの本体ファイルは「BKDR_PLUGX」ファミリや、先日報告している医療費通知に偽装した不審メールでも悪用された「BKDR_EMDIVI」ファミリを確認しています。これらの不正プログラムは脆弱性によって実行されたのち、外部の C&C サーバと通信を行い、侵入した端末を外部から遠隔操作することを実現します。

図4:「BKDR_PLUGX」の通信例
図4:「BKDR_PLUGX」の通信例

■脆弱性への対策
当該脆弱性については既にジャストシステム社より修正パッチが公開されておりますので、一太郎利用者の方は速やかにパッチ適用を行うことを推奨します。何らかの事情でパッチ適用が行えない場合でも、当該脆弱性はスタックベースのオーバーフローを悪用するものであり、Microsoft の脆弱性緩和ツール「Enhanced Mitigation Experience Toolkit(EMET)」を適切に設定することによってその悪用を抑制することができます。

トレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network(SPN)」の機能の 1つである「ファイルレピュテーション」技術により、当該脆弱性を悪用する検体は「TROJ_TARODROP」などとして検出対応を行っております。また、当該検体が使用する C&Cサーバへの通信は「Webレピュテーション」技術によりブロックします。「Trend Micro Deep Discovery」シリーズでは、以下の監視ルールで「BKDR_PLUGX」が行う通信を検知し、侵入を可視化することが可能です:

  • HTTP_PLUGX_REQUEST-5(1547)

※記事構成:岡本 勝之(シニアスペシャリスト)