グローバルナビゲーションへ

本文へ

フッターへ

お役立ち情報Blog



CSVファイルでウイルスに感染!?「CSVに関数を埋め込んで実行してみた」

先日、こんな記事を目にしました。

覆された常識、CSVファイルでウイルス感染(日経 xTECH)

ざっくり記事の概要を説明すると、


  • CSVなどテキストファイルは安全だと思われているが、CSVを開いただけでウイルスに感染する恐れがある。
  • ファイルは拡張子によってアプリケーションと関連付けがされているので実行するとアプリケーションが記述内容を解釈して実行できてしまう。
  • 悪意のある記述内容の場合、うっかり実行を許可してしまうと被害を被ってしまう。

※詳しくは元記事を参照してください。


この話題は実はかなり前からあったようです。
ただ筆者は普段業務であまりExcelやCSVを取り扱っていないので、これを機に何ができるのか試してみました。
※実際に試す場合は、自己責任でお願いします。

CSVとは?

今さら説明は不要かもしれませんが、CSVは「Comma-Separated Values」の略です。
いくつかのフィールド(項目)を区切り文字であるカンマ「,」で区切ったテキストデータおよびテキストファイルです。拡張子は 「.csv」です。
WindowsではExcelをインストールすると大体CSVファイルと関連付けられるため、CSVファイルをダブルクリックするとExcelが起動します。

CSVにExcelの関数を埋め込んでみる

今回はExcelの場合だけを想定して実験してみます。
筆者が検証したExcelのバージョンは「Excel2013」です。

Excelのセルに関数 “=SUM(・・・)”など を記述してCSV形式で保存すると、関数の箇所が無くなってしまいますので、今回はあえてCSVファイルを直接テキストエディタで編集して関数をテキスト内に記述していきます。

【ケース1 】SUM、AVERAGE

まず手始めに簡単な関数を記述してみます。
合計のSUM関数と平均のAVERAGE関数を書いてみます。

1行目がSUM、2行目がAVERAGEです。

実際にExcelで開いてみます。

警告も無く普通に動作しました。
F列に結果がでています。

【ケース2】 VLOOKUP

次はもう少し複雑な関数です。
VLOOKUPは、指定した範囲の中から検索条件に一致したデータを検索し、取り出してくれる関数です。

実際にExcelで開いてみます。

こちらも警告も無く普通に動作しました。B2に検索結果が表示されています。
ここまでで『=関数』形式であれば大体動きそうなことがわかりました。

【ケース3 】 WEBSERVICE

続いては外部のデータを取得するWEBSERVICE関数です。
郵便番号から住所を取得する例を書いてみます。関数内での「”」は「”」を前につけることでエスケープ可能です。

ちょっと長いですが、A1に郵便番号を記載しておいて、B1にWEBSERVICE関数などを用いて住所を表示する例です。

実際にExcelで開いてみます。

起動時に「セキュリティに影響を及ぼす可能性のある問題点が検知されました」ダイアログがでました。
ここで今回は気にせず「有効にする」をクリックします。(ここが危険です!)

実際に住所がB1に表示されています。

この例では実行時に外部のデータにアクセスしに行くことになるのでCSVファイルなのに「セキュリティに影響を及ぼす可能性のある問題点が検知されました」が出た時点で相当怪しいデータです。
デフォルトで選択されている「無効にする」をクリックすれば関数は実行されません。

Excel自体が警告してくれているのでちゃんとメッセージを読みましょう。
またCSVファイルはテキストエディタでも開けるので怪しいと思ったらメモ帳などで確認してみるのもいいかもしれません。

【ケース4 】番外編 電卓を起動してみる

次は「Dynamic Data Exchange (DDE) 」を使用する例です。
この場合はケース3よりも警告が多く表示されるので気づくとは思いますが、全部許可すると今回のケースは電卓が起動します!

実際にExcelで開いてみます。

ここもあえて「有効にする」をクリックします。

ここもあえて「はい」をクリックします。

ほかにもダイアログが出ていますが「電卓」が起動されました。
怖いですね。。

今回の記事には書きませんが「=」以外にも実行できてします書き方も存在しますし、「CSV Excel Macro Injection(CEMI)」として紹介もされています。

まとめ

いかがだったでしょうか?CSVファイルは確かにテキストデータですが、色々工夫するとそれを実行するアプリケーション側で色々な操作が出来てしまいます。

基本的にはアプリケーション側で注意喚起をしてくれているようですが、利用するユーザが意識せずに操作してしまうと思いもよらない動作を引き起こす事があります。

CSVに限らずですが、ファイルを操作する際には以下のことに注意しましょう。

  • OS、アプリケーションは常に最新にしておく
  • 古いアプリケーションは使用を避ける
  • 出どころのわからないファイルは不用意に開かない
  • CSVの場合、ファイルの出どころがわかっていても警告ダイアログが表示されたら実行しない
  • アプリケーションの警告をちゃんと読む
  • アプリケーションの警告の内容がわからなければ実行を避け、相談する

参考URL

覆された常識、CSVファイルでウイルス感染
http://tech.nikkeibp.co.jp/atcl/nxt/column/18/00001/00535/?P=1

郵便番号検索API
http://zip.cgis.biz/

CSV Excel Macro Injection(CEMI)
https://www.contextis.com/blog/comma-separated-vulnerabilities
https://github.com/cybozu/bugbounty/blob/master/scope/CEMI.md
https://shhnjk.blogspot.com/2016/03/cemi.html

この記事を書いた人

アーティス
アーティス
創造性を最大限に発揮するとともに、インターネットに代表されるITを活用し、みんなの生活が便利で、豊かで、楽しいものになるようなサービスやコンテンツを考え、創り出し提供しています。
この記事のカテゴリ

FOLLOW US

最新の情報をお届けします