TL;DR
-
CEMI
は全角記号始まりでも起こせる -
CSV
出力処理でエスケープ処理を実装する場合、全角記号もエスケープ処理に含めるべき
本文
CEMI
(CSV Excel Macro Injection
)は、細工したCSV
をExcel
へ読ませることで、任意のマクロを実行させる攻撃です。
=cmd|' /C calc'!A0
で電卓を起動するサンプルなどが有名です。
ユーザーがマクロを有効にする必要があることから脆弱性扱いされないこともありますが、CSV
出力処理の修正を求められることもあるでしょう。
この挙動は"
で囲っても抑制できず、フィールドの先頭に'
を入れることで、Excel
側に生文字列で扱わせるようエスケープする必要があります。
ここで、この攻撃は全角記号からでも起こすことができる点に注意が必要です。
例えば=cmd|’ /C calc'!A0
で再現できます。
1文字目が条件を満たす場合のみエスケープとする場合、対象には全角記号も含めなければなりません。
雑感
これは現時点でOWASP
のページ等にも記述されておらず、罠感が強いです、、、