OWASPのCSVインジェクション対策、改行(LF)と全角文字も対象になってた

  • Security
  • CSV

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

CSVインジェクション対策の話、また更新があったので書いておく。過去の記事はこちら。

何が増えたか

OWASP公式のCSV Injectionページを見直したら、対象文字が以下の8つ(+全角バリエーション)まで広がっていた。

  • =, +, -, @
  • タブ(0x09)
  • 改行/CR(0x0D)
  • 改行/LF(0x0A) ← 今回追加
  • 全角の =, +, -, @(ロケールによっては数式扱いされる、日本語環境も名指しされてる)

LF(\n)の追加は、OWASPのGitHubリポジトリの履歴を見る限り2025年8月1日にマージされていた。それまではCR(\r)だけがリストに載っていて、Unix系の改行であるLFが漏れていた、という指摘によるもの。

単純な先頭文字チェックだけでは足りない、という注意書きも

OWASPのページには、区切り文字(, や ;)やクオート(" や ')を悪用して新しいセルを開始させ、危険な文字をセルの先頭に持ってくる手口にも触れられている。つまり「値全体の先頭だけ見て弾く」実装だと、区切り文字とクオートの組み合わせ次第ですり抜けられる可能性がある、ということらしい。

あと、Excelは一度保存して開き直すとCSVセル内のクオートやエスケープ文字を消してしまうことがあるらしく、その場合エスケープ済みだったはずの数式が復活するケースがあるとも書かれていた。ここは実機未確認。

結論

2020年時点の4文字、2021年時点の6文字から、今は8文字+全角バリエーションまで対象が広がっている。CSVエクスポート機能を持ってる場合、この文字リストは定期的に見直した方がよさそう。区切り文字・クオート経由のすり抜けと、Excelの保存後挙動についても、実装によっては別途検証が必要になる。