CrLfインジェクション
ITproへの寄稿(インジェクション系攻撃への防御の鉄則 | 日経 xTECH(クロステック))に対して、水無月ばけらさんからコメントをいただきました。
脆弱性の呼称 | 水無月ばけらのえび日記
「メールの第三者中継」は結果、「CRLFインジェクション」は手法に注目した呼称で、両者の指すものは必ずしも同じではないと思います。
ブログ上の礼儀としては、そちらにコメントをつけるか、トラックバックするべきなのでしょうが、どうもうまくいかないので、こちらにお返事を書きます。こうやって転載すると、なんだか公開レターのようで少し恥ずかしい感じですね(^^;
# 公開レターみたいなので、引用風にします。
水無月ばけらさん、いつも丁寧なコメント、ありがとうございます。
脆弱性の呼称はなんとかしてほしいですね。いつも言い訳しながら解説を書いているような気がします。「安全なウェブサイトの作り方」のP30に出てくる「メールの第三者中継」に対する「根本的解決」は、単に中継のみならず、メール全体の改ざんにも言及しており、これは手段としてはCrLfインジェクションを指すものと思われます。第三者中継じゃないじゃないかという突っ込みを入れると言うよりは、脆弱性の呼称は難しいなぁと思う次第です。
hidden fieldにメールアドレスを持つような例は昔はとても多かったし、いまもありますね。これは、hidden fieldが「CGIに対する入力」の一つだと考えると脆弱性とは言えない、という論理はなりたちそうです。ただ、アプリケーション要件としてそのような仕様ではないでしょうから、その意味では脆弱性なのでしょう。
しかし、企業ホームページで要件定義を厳密にやっているかという疑問は現実的には存在します。あれは、アプリケーションというよりコンテンツという扱いでしょうしね。企業のホームページを診断していると、一つか二つの簡単な問い合わせCGIしかないものでも、ワラワラと脆弱性が出てくる例は珍しくありません(うわぁ、書いちゃった)。CrLfインジェクションという呼び方は私どもの報告書では以前から使っていますが、あまり普及していない言い方だと思っていました。「メールヘッダ・インジェクション」と言えばよいのですかね。
そういえば、「パス乗り越え」なんかもいつも困りますね。「安全な・・・」では、「パス名パラメータの未チェック/ディレクトリ・トラバーサル」ですか。
セキュリティホールmemoメーリングリストの方では、マルウェア類の呼称に関する議論が続いていますが、そちら同様Webアプリケーションの脆弱性パターンの呼び方も難しいなぁと思いますね。情報処理の試験に出るようになってきた現在となっては、もう一段整理されるべきなんでしょうけどね。