HTML メールでの OLE パッケージ オブジェクトを制限する方法


015 年の 12 月に Outlook でメッセージをプレビューしただけで悪意のあるコードを実行されてしまうという Word の脆弱性に対応するセキュリティ修正プログラムがリリースされましたが、それに関連して以下のブログの脆弱性が話題になっているようです。

OLEOutlook – bypass almost every Corporate security control with a point’n’click GUI

このブログで記載されている脆弱性というのは、以下のような手順でメールを送信することにより、exe ファイルを意図せず実行させられるというものです。

  1. HTML 形式のメールを作成し、[挿入]-[オブジェクト] でパッケージとして exe ファイルを埋め込みます。
      (このとき、アイコンや名前を変更し、通常のファイルのように偽装できます。)
  2. 作成したメールを送信前の状態で下書きや msg ファイルとして保存し、別のメールに添付して送信します。
  3. 受信側で添付された下書きメールに表示されているオブジェクトをダブルクリックすると、埋め込んだ exe ファイルが実行できてしまいます。

この問題に対する対処方法としては、mso を危険な添付ファイルの拡張子としてブロックする設定を行うというものがあります。
Outlook での拡張子による添付ファイルのブロック方法はいくつかありますが、ユーザー権限でできる方法は以下のレジストリ設定となります。

  キー: HKEY_CURRENT_USER\Software\Microsoft\Office\<Ver>\Outlook\Security
  名前: Level1Add
  種類: REG_SZ
  値: .mso

※  <ver> は Outlook のバージョン (2007 = 12.0、2010 = 14.0、2013 = 15.0、2016 = 16.0)

上記以外の設定方法については Outlook 2013 で添付ファイル設定を計画する をご覧ください。

HTML メールで OLE オブジェクトを埋め込んだ場合は拡張子が .mso となるので、上記の設定により OLE パッケージ オブジェクトが埋め込まれたとしても実行ができなくなります。
ただし、この設定を行うと、パッケージ オブジェクトだけでなく、Excel ワークシートや PowerPoint スライドなど他の OLE オブジェクトも実行できなくなります。
そのため、Excel ワークシートを埋め込んで返信時にフォームのように入力させたり、AllowInplaceOleActivation レジストリの設定により受信時の OLE オブジェクト実行を可能としているような場合には注意が必要です。

なお、上記のブログでは回避策として ShowOLEPackageObj というレジストリ設定を 0 にするというものが紹介されていますが、これは回避策とはなりません。
何故なら、ShowOLEPackageObj が有効なのはリッチテキスト形式で本文に OLE パッケージ オブジェクトが埋め込まれている場合であり、HTML 形式のメールには作用しないためです。

また、ShowOLEPackageObj は既定で 0 (= 表示しない) となっているため、通常はリッチテキスト形式で上記の手順を実行しても OLE パッケージ オブジェクトは表示すらされません。
意図的に ShowOLEPackageObj を 1 と設定している場合に限り、既定の 0 に戻すことで上記のような手順による攻撃を防ぐことができるようになります。

メッセージ形式により OLE オブジェクトの動作や設定が変わり、ちょっとわかりにくいかと思いましたので、整理してみました。

HTML 形式の場合

  • 既定の動作
    • 受信メール: OLE オブジェクトは画像として表示され、実行はできない
    • 送信前のメール: OLE オブジェクトの実行ができる
  • Level1Add などにより .mso を制限する拡張子として追加
    • 受信メール・送信前のメールとも、OLE オブジェクトは画像として表示され、実行できなくなる
  • ShowOLEPackageObj を設定
    • HTML 形式では無効

リッチテキスト形式の場合

  • 既定の動作
    • OLE パッケージ オブジェクトは表示されない
    • 受信メール: パッケージ以外のオブジェクトは画像として表示され、実行はできない
    • 送信前のメール: パッケージ以外のオブジェクトの実行ができる
  • ShowOLEPackageObj を 1 とした場合の動作
    • 受信メール: パッケージを含む OLE オブジェクトは画像として表示され、実行はできない
    • 送信前のメール: パッケージを含む OLE オブジェクトの実行ができる
  • Level1Add などにより .mso を制限する拡張子として追加
    • リッチテキスト形式では無効

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中