ExcelでDDEの罠
はじめに
友達から教えてもらったお話です。対象はExcel2013です。友達は日本のMicrosoftの脆弱性届出窓口に脆弱性じゃないの?ってメール投げたところ、利便性からそういう仕様なんですし、この動作説明も公開OKですって返事来たそうです。
とにかく、脆弱性ではないってことを最初に強調しておきます。
- はじめに
- まずはDDEを悪用した攻撃について
- さあ、試したまえ
- これって脆弱性じゃないの?
- 対策はどないすりゃええんの?
- おまけ。しつこいですが、これって脆弱性じゃないの?(2019/11/07)
- 魔法の呪文
まずはDDEを悪用した攻撃について
どんな攻撃方法なの?
有名なので詳しく説明するまでもないですよね。
DDEコマンドが書かれたファイルを開くと実行されてしまうという、かつての脆弱性です。マクロ自動実行とかガクブルですね。
対策は?
いまのExcelではファイル開いたときにセキュリティ警告がでるようになりました。ここで間違って実行を許さなければ、かなり安全です。
一般に推奨されている方法
Excelで開いたファイルにマクロやDDEコマンドが入っていると「コンテンツの有効化」の警告が出ます。ここで「無効にする」を選びましょう。
たとえばJ-CSIPの公開レポートを読むと、ここで「無効にする」を選ぶと安全ってなってます。
ただし、無効にすると、Excelのシート間参照ができなくて困るのが難点。不便ですね。
そこまでやんなくても!?な方法
マイクロソフトはセキュリティにとてもとても気を遣うので、そもそもDDE機能を無効化することができます。 ちょっと罠っぽいのは、ExcelのGUIで設定する項目なので、GUIのデフォルトではDDE機能をOFFって意味のようです。後述しますがGUIの操作で回避できます...。
さあ、試したまえ
これで背景知識が習得できましたね。いかにDDEの悪用対策がパーペキか試して確かめてみましょう。
あなたの対策、大丈夫ですか?レッツトライ
=calc|' '!A0
- OutlookでそのCSVファイルをクリックして、Excelで開くと警告が出ます。もちろん「無効にする」でマクロを無効化します。
- ツールバーの「データ」の「リンクの編集」をクリックしましょう。
- 右上にある「値の更新」をクリックしてみましょう!
どうですか?電卓が立ち上がりますよね。
ほんとは怖い、DDE無効化
さて、前述のマイクロソフトセキュリティアドバイザリ4053440に従って、DDEを無効化してから、さっきのCSVファイルを開いてみましょう。
違いがわかりますか?
なんと、最初の「コンテンツの有効化」の警告が出ません。選ぶまでもなく「無効にする」を選んだのと同じ扱いになります。気分としては安全ですよね。
では、ついでなので、先ほど紹介した「リンクの更新」をやってみましょう!
あれ?
あれれ??
面白いと思うのは、この操作はマウスだけで出来ることです。便利ですよね☆
これって脆弱性じゃないの?
いいえ、脆弱性ではなく仕様です。マイクロソフト的にはPros/Consで判断して利便性が勝るからそうなってるそうです。
対策はどないすりゃええんの?
いくつか対策があります。
- Excelの設定でCSVやTXTを読めなくする(根本的対策!?)
- マイクロソフトセキュリティアドバイザリ4053440に従ってDDE機能無効化するから警告がでなくて危なくなるのです。このアドバイザリは無視して、ファイル読み込み時に「無効化する」を選ぶようにしましょう。これで危険性が把握できます。その上で「リンクの更新」はダメ、絶対。
- まあ、DDE機能無効化してても、警告が出なくて1ステップ安全策が消えるだけでそれなりに安全です。「リンクの更新」はダメ、絶対。を心がければ問題ありません。
- 「リンクの更新」の先で、「値の更新」以外のあるボタンを押して見るものも手です。なぜかExcelがクラッシュするので、電卓が立ち上がるのは阻止できます:)
なお、ここではユーザ教育コストってものはプレイスレスゼロエンとしています。
おまけ。しつこいですが、これって脆弱性じゃないの?(2019/11/07)
より安全と思えるオプション設定すると警告がでないので却って危険ってのは、すげー脆弱性っぽいですが、いとやんごとなきマイクロソフトさまによるとPros/Consの評価でProsが明らかに上回ると判断できる場合には脆弱性じゃなくて仕様なんだそうです。この脆弱性判定(MS的には脆弱性じゃないと思うよ)のJVNVU#98504876も同様。
これって、元ネタのCERT/CC #125336ではプロンプト無効にすると実行されちゃうってのが問題らしいですが、Mac用の新しいOfficeで本当にそんな動作するのでしょうかね??
魔法の呪文
なし