.NET Frameworkに潜む脆弱性「SMTPコマンド・インジェクション」とその対処法 − @IT(情報元のブックマーク数)

佐名木さんによるSMTPインジェクションの記事を@ITで書かれています。

JISコードでエンコードされたメールを.NET Frameworkを用いて送信する際には、メール本文の作成にAlternateViewクラス(System.Net.Mail名前空間)を使う(.NET Framework 2.0以降で利用可能)。しかし、このAlternateViewクラスを使ったメール送信機能には、「SMTPコマンド・インジェクション(SMTP Command Injection)」の脆弱(ぜいじゃく)性が潜んでいることが判明したので、その内容と対策を解説する。
なお、本稿の内容は、2011年1月11日にNTTコミュニケーションズが公表した「.NET Framework 上の SMTP Command Injection」に基づいている。
この脆弱性を理解するためには、SMTPでのメール送信の仕組みを理解しておく必要がある。

.NET Frameworkに潜む脆弱性「SMTPコマンド・インジェクション」とその対処法 - @IT

ここですね。重要なのは。

個人的には、既存バージョンの.NET Frameworkにも修正プログラムを提供すべきではないかと思う。しかし、マイクロソフト社が「提供しない」と決断した以上、.NET Framework上でアプリケーションを開発しているプログラマーは、自分自身で対処しなければならない。
また、AlternateViewクラスだけではなく、Attachmentクラス(System.Net.Mail名前空間)のCreateAttachmentFromStringメソッドにも同様の脆弱性がある。
さらに、まれな状況とは思うが、添付ファイルをBase64などでエンコード処理を行わない場合、つまりAttachmentクラスを使ってファイルを添付する際にも、ファイル内容にSMTPコマンドを仕込むことで、同様の脆弱性が発現してしまう。ファイルを添付する際には、素直にBase64などでエンコードすることを筆者は推奨する。

.NET Frameworkに潜む脆弱性「SMTPコマンド・インジェクション」とその対処法 - @IT

screenshot