t-hom’s diary

主にVBAネタを扱っているブログです。

Excelのセキュリティ設定と怪しいファイルの対策

Excelには、悪意のあるマクロによってコンピューターが被害を受けることがないようにいくつかの防御機構が備わっている。
しかしExcelマクロの解説書・解説サイト等では利便性の観点からか、設定を無効化しましょうという方向での解説が多く、セキュリティリスクについては「注意しましょう」という漠然とした勧告か「自己責任で」という免責のみで具体的に何をどう気を付ければ良いのかが書かれていないことが多い。

今回は、これらの防御機構の紹介と、正しい活用方法、外した場合の具体的なリスクについて説明する。
Excel 2013を基に紹介するが、これらの機能はExcel 2010にも存在する。(2007にも恐らくあるけれど、持っていないので不明)

目次

(1) 保護ビュー

説明

Excelの初期設定では、インターネット等のネットワーク経由で入手したファイルは次のように、保護ビューで開くような設定になっている。
f:id:t-hom:20180503230028p:plain

保護ビューはファイルを安全に閲覧することに特化したビューアで、一切の編集ができない。煩わしいことに、社内ネットワーク経由で入手した正当なファイルまでインターネット経由と判定されてしまうが、セキュリティに気を配るのであればたとえ社内ネットワーク経由で入手したとしても原則編集の必要が無いファイルは保護ビューのまま閲覧するのが安全である。

設定箇所

ファイル→オプション→セキュリティ センターからセキュリティ センターの設定ボタンを押し、左のメニューから保護ビューを開く。
f:id:t-hom:20180503230355p:plain

煩わしいので設定ごと無効化を推奨する記事も多いが、ファイルに悪意のあるコードが埋め込まれていた場合はコンピューターに被害を与えることも考えられるので、基本的には編集が必要かつ安全が確認されたものだけ個別に保護ビューを外すという使い方がオススメ。

保護ビューを外したファイルを再度保護ビューに戻す方法
基本的に一度安全を確認したファイルのはずなので、クリアする必要性はあまり無いが一応紹介。

セキュリティ センターの設定から信頼済みドキュメントをクリアすることで、保護ビューに戻すことができる。
f:id:t-hom:20180503233031p:plain

(2) 標準ブック形式へのマクロ保存不可

説明

Excel 2003まではマクロの有無にかかわらず、Excelブックの拡張子は「xls」だったが、Excel 2007以降はマクロが保存できない「xlsx」と、マクロが保存できる「xlsm」に分かれた。従来の「xls」や新しいバイナリ形式「xlsb」もサポートしているが、基本的にはマクロを利用しないファイルは「xlsx」とし、マクロを利用するファイルは「xlsm」とすることが望ましい。

熟練者がその気になれば悪意のあるマクロを作ることもできるため、マクロを使わないファイルではそもそもマクロを使えない「xlsx」形式にしてしまうことで、無用なリスクを減らすことができる。

ちなみに保存した後でファイル名の拡張子だけ変えてもダメで、以下のようなエラーになる。
f:id:t-hom:20180503232051p:plain

Excelはすべてお見通し。きちんと名前を付けて保存のダイアログから正しい形式を選択するべし。

(3) セキュリティの警告

説明

標準の設定では、マクロ付きのファイルを開く際に以下のような警告が表示され、マクロが一旦無効にされる。
f:id:t-hom:20180503232756p:plain

単にコンテンツを有効化してくださいと書かれている記事が多いが、なんでもかんでも有効化してはダメで、自分で作成した安全なマクロと信頼できる入手元から取得したファイルに限定してコンテンツを有効化すると良い。インターネットから入手したファイルは基本的に信頼性が低いものと考え、安易にコンテンツの有効化を行わないこと。

保護ビューとの違いはマクロを実行する以外の操作は自由に行えるという点である。
ファイルの編集もできるし保存もできる。マクロの編集もできる。ただ実行ができないというだけ。

入手元が完全に信頼できない場合、マクロが無効化の状態のままコードを読み、安全性を確認してから有効化すると良い。
コード確認の際のポイントをいくつか挙げてみた。

  • 完全には理解できなくとも、ある程度処理の流れが読めるコードであること。
  • わざと難読化されているコードや、プロジェクトが保護されていて閲覧できない場合はコンテンツを有効化しない。
  • 参照設定とCreateObjectを確認し、マクロが謳っている目的とかけ離れたオブジェクトが参照されていないことを確認する
  • ファイルシステムオブジェクトやファイル操作関連の関数が利用されている場合は特に内容を理解し、意図しないファイル操作が行われないことを確認する
  • 標準モジュールにAuto_Openプロシージャがあれば、特に注意深く処理内容を確認する。
  • ThisWorkbookモジュールにWorkbook_Openプロシージャがあれば、特に注意深く処理内容を確認する。

対象のコードを読むスキルが足りない場合、熟練者にお願いするか、マクロの利用を諦めたほうが無難である。

コンテンツを有効化したファイルを再度無効化に戻す方法
保護ビューを外した場合のクリア方法と同じく、セキュリティ センターの設定から信頼済みドキュメントをクリアすることで、コンテンツ無効化に戻すことができる。

設定箇所

セキュリティ センターのマクロの設定から「警告を表示してすべてのマクロを無効にする」を選択すると上記の設定になる。これが一番お勧め。業務で一切マクロを利用しない場合は一番上の「警告を表示せずにすべてのマクロを無効にする」でも良い。
f:id:t-hom:20180503235302p:plain

(4) VBAによるマクロの書き換え防止

説明

VBAではExcelブックを開いてそのブックのマクロの内容をマクロで書き換えるといった処理も可能であるが、これは標準では無効化されている。なぜ無効化されているかというと、マクロによるマクロの書き換えができるなら、悪意のあるマクロによって、正当なマクロファイルに悪意のあるコードを埋め込むことができてしまうから。
これはマクロウイルスの感染の基本的な仕組みである。

設定箇所

前項と同じ画面で「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」のチェックが外れている状態が安全。
f:id:t-hom:20180503235302p:plain

チェックを付けると、前述のような高度な処理が可能になりプログラミングが捗る場合がある。このブログでもこの設定を外さないと実行できない便利なマクロを紹介している。しかし、設定を外すとマクロウイルス感染の危険性は高まるので、これまで紹介してきた保護機能を活用してより注意深く実行するマクロを選択・確認する必要がある。また、面倒でも入手元が不明なファイルを開く前にはこの設定を無効に戻してから開く方が安全である。

まとめ

Excelにおけるセキュリティの基本は、不必要に設定を緩めないことである。必要が生じたら、その都度、必要な分だけ個別に対応すること。そしてファイルの安全性を注意深く確認すること。そうすれば無用なリスクを避けることができる。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。