【マクロ無効でも感染?】CSV、エクセルファイルの脆弱性について
先日、CSVファイルを開くと感染するウイルスがあるという話が話題になりました。
様々なホームページで注意喚起がされていますが、一部、誤情報もあるようなので、情報をまとめておきます。
この記事の目次
悪意のあるプログラムが実行される条件
悪意のあるプログラムが実行される条件は、次の2点です。
- 条件1.悪意のあるデータが含まれているファイルをエクセルで開くこと
-
特に、次の点に気をつけてください。
- マクロの有効・無効は問わない)
- CSVファイルだけでなく、通常のエクセルファイルでも感染する可能性があります
マクロを無効にしていれば問題ないと書かれているサイトもありますが、実際にはマクロの有効・無効は関係ありません。
また、今回は、CSVファイルを開くとウィルスに感染するということで話題になっていますが、後で説明するとおり、通常のエクセルファイルでも同じことができることに注意してください。
- 条件2.「外部データにアクセスできません」というダイアログが出るので、そこで「はい」を選択すること
-
このページで解説する「悪意のあるプログラム」を実行した場合、次のようなウィンドウが表示されます。
このウィンドウで「はい」を選択すると、悪意のあるプログラムが実行される可能性があります。
逆に「いいえ」を選択すれば、悪意のあるプログラムは実行されない(はず)です。
脆弱性の具体例
※下記は、Windows、Excel2013環境で試しています。
- 1.数式を入れる
-
A1セルに、次の数式を入れて、ENTERキーを押します。
=cmd|' /C calc'!A0 - 2.警告ウィンドウが表示される
-
先ほど紹介したウィンドウが表示されます。
- 3.「はい」を選択
-
ここで「はい」を選択すると、Windowsの電卓が起動します。
今回は、たまたま電卓が起動しましたが、さきほどの数式の「calc」の部分を変更すると、インストールされている任意のプログラムを実行できるのではないかと思われます。
参考サイト:Comma Separated Vulnerabilities(英語)
対策
考えられる対策を書いていきます。
正体不明のファイルを開かない
当たり前の話になりますが、インターネットから拾ってきた正体のわからないファイルを開かない、というのが鉄則です。
拡張子が「.xlsm」でなければ、ウィルス感染のおそれは低いと思われていましたが、ので、エクセルに関連するファイルを開くときは、常に注意が必要です。
CSVファイルの場合は事前にデータを改変する
CSVファイルを開く場合には、事前に内容を確認して「数式として解釈されそうな」値が入っている場合に、そのデータを修正するという方法が考えられます。
たとえば、CSVファイルのデータが「=」「+」「-」から始まっている場合、そのデータの先頭に「'」(シングルクォーテーション)を付けて文字列扱いにするといった方法が考えられます。
ただし、「'」を付けてしまうと、エクセル上、数値として認識されなくなりますので注意が必要です。
※同じ方法は「.xlsx」などのエクセルファイルに行うことは不可能ではないと思いますが、現実的ではないと思います。
マクロをできるだけ無効化しておく
今回の問題とは、直接関係はありませんが、ムダにマクロを実行できる状態にしておくのはリスクがありますので、マクロを実行しないのであれば、マクロを無効化しておきましょう。