HTTPヘッダインジェクションとは
情報セキュリティスペシャリスト試験を目指す女性SE

インジェクションは「注入」という意味ですから、HTTPのヘッダに悪意のコードを注入(インジェクション)するのですね。
そう考えてよい。
情報処理振興機構(IPA)の「安全なウェブサイトの作り方 改訂第7版」には、HTTPヘッダ・インジェクションについて次のように説明されている。
ウェブアプリケーションの中には,リクエストに対して出力する HTTP レスポンスヘッダのフィールド値を,外部から渡されるパラメータの値等を利用して動的に生成するものがあります。たとえば,HTTPリダイレクションの実装として,パラメータから取得したジャンプ先の URL 情報を,Location ヘッダのフィールド値に使用する場合や,掲示板等において入力された名前等を Set-Cookie ヘッダのフィールド値に使用する場合等が挙げられます。このようなウェブアプリケーションで,HTTP レスポンスヘッダの出力処理に問題がある場合,攻撃者は,レスポンス内容に任意のヘッダフィールドを追加したり,任意のボディを作成したり,複数のレスポンスを作り出すような攻撃を仕掛ける場合があります。このような問題を「HTTP ヘッダ・インジェクションの脆弱性」と呼び,この問題を悪用した攻撃手法は「HTTP ヘッダ・インジェクション攻撃」と呼びます。
http://www.ipa.go.jp/security/vuln/websecurity.htmlより引用)

ここにあるに「掲示板等において入力された名前等を Set-Cookie ヘッダのフィールド値に使用する場合」に関して、過去問(H27春SC午後Ⅰ問1)では具体的な例が掲載されている。

具体的に書く
入力欄の文字列に以下を入れる

%0d%0a%0d%0a%3chtml%3e%3cbody%3e%3cscript%3ealert%28%221%22%29%3c%2fscript%3e%3c%2fbody%3e%3c%2fhtml%3e

これをデコードすると以下になる
「改行コード」「改行コード」<html><body><script>alert("1")</script></body></html>

すると、Webサーバに対するHTTPリクエストは以下のようになる
GET /search?kensaku=jewelry「改行コード」「改行コード」<html><body><script>alert("1")/script></body></html>
HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ja-JP
Accept-Encoding: gzip, deflate
Host: www.example.co.jp
Cookie: SESSIONID=134D96E470da240421svr5B019

これに対し、WebサーバからクライアントへのHTTPレスポンスは以下になる。
HTTP/1.1 200 OK
Date: Tue, 10 Jun 2014 05:45:58 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache
Set-Cookie:kensaku=jewelry

<html><body><script>alert("1")</script></body></html> ←このようにスクリプトが実行できる
すると改行コードにより、レスポンスヘッダではなくレスポンスボディとブラウザは認識する。ヘッダにはスクリプトが書かれても実行はされないが、レスポンスボディに配置されれば、ブラウザにてスクリプトが実行される。
こうやって、攻撃者は任意の攻撃コードをクライアント側で実行することができる。

HTTPヘッダインジェクションの対策
対策に関しても、同じ過去問(H27春SC午後Ⅰ問1)で述べられている。
U主任:仮に問題があるとした場合,Set-Cookieヘッダの値をセットするサーバ側の処理において,どのような対策が考えられますか。
T君:幾つかの対策があります。例えば,HTTPレスポンスヘッダを適切に出力するために,Webアプリの実行環境やプログラム言語が用意している,ヘッダ出力用の関数やAPIを使用する方法が考えられます。それが使用できない場合は,[ c ]するといった処理を開発者が自身で実装する方法も考えられます。

空欄cは穴埋め問題であり、解答例は以下である。
・出力文字列に改行コードがあるとエラー画面を出力
・出力文字列の改行コード以降の文字列を削除