CRLF インジェクションについて: Web アプリケーションの脆弱性と軽減策
ホームページホームページ > ニュース > CRLF インジェクションについて: Web アプリケーションの脆弱性と軽減策

CRLF インジェクションについて: Web アプリケーションの脆弱性と軽減策

Aug 18, 2023

ホーム » サイバーセキュリティ » アプリケーション セキュリティ » CRLF インジェクションについて: Web アプリケーションの脆弱性と軽減策

CRLF (Carriage Return Line Feed) インジェクションは、攻撃者が悪意のある CRLF 文字を HTTP 応答にインジェクトでき​​る場合に発生する Web アプリケーションの脆弱性です。 この脆弱性は、HTTP ヘッダー インジェクション、HTTP 応答分割、セッション固定、クロスサイト スクリプティング (XSS)、キャッシュ ポイズニングなどのさまざまなセキュリティ問題を引き起こす可能性があります。

CRLF インジェクションを理解するために、用語を分解してみましょう。

キャリッジリターン (CR):これは、カーソルを現在の行の先頭に戻すように指示する制御文字 (ASCII コード 13) です。

改行 (LF):これは、カーソルを次の行に移動するように指示する制御文字 (ASCII コード 10) です。

HTTP のコンテキストでは、CRLF は CR 文字と LF 文字の両方のシーケンス (「\r\n」) を指します。 これらの文字は、HTTP プロトコルで行を区切るために使用されます。

CRLF インジェクションの脆弱性は、ユーザー制御のデータ (入力) が HTTP 応答の構築に使用される前に適切にサニタイズまたは検証されていない場合に発生します。 攻撃者は、HTTP 応答を操作する目的で、ユーザー入力に CRLF 文字を挿入することでこの脆弱性を悪用します。

CRLF インジェクションは、さまざまなセキュリティ問題を悪用する一連の脆弱性の一部として使用される可能性があります。 CRLF インジェクションと一緒に利用できる一般的なチェーンの脆弱性をいくつか紹介します。

CRLF インジェクションは、不適切な入力検証やユーザー入力の安全でない連結などの他の脆弱性と組み合わせて、HTTP 応答分割攻撃を実行する可能性があります。 CRLF 文字を挿入することにより、攻撃者は応答ヘッダーを操作し、応答を複数の部分に分割する可能性があり、キャッシュ ポイズニング、セッション固定、クロスサイト スクリプティング (XSS) などのさまざまなセキュリティ問題を引き起こす可能性があります。

例:

コード セグメントが HTTP リクエストからユーザーの電子メール アドレスを読み取り、それを HTTP レスポンスの Cookie ヘッダーとして設定する別の例を考えてみましょう。

この例では、アプリケーションはリクエストで送信された電子メール アドレスを取得し、それを HTTP 応答で「user_email」という名前の Cookie として設定します。

電子メール アドレス「[email protected]」がリクエストで送信されたとします。 この Cookie を含む HTTP 応答は次のようになります。

入力 (「[email protected]」) は有害な文字を含まない有効な電子メール アドレスであるため、この応答は意図した形式を維持しています。

ここで、攻撃者が CRLF 文字を含む悪意のある電子メール アドレスを送信した場合に何が起こるかを考えてみましょう。

「email」パラメータの値は「john.doe%40example.com%0d%0aSet-Cookie%3A+admin%3Dtrue%0d%0a」です。 アプリケーションがこの入力を処理して Cookie を設定すると、HTTP 応答は次のように操作される可能性があります。

この場合、攻撃者は電子メール パラメーターに CRLF 文字 (「%0d%0a」) を挿入し、応答に追加の「Set-Cookie」ヘッダーが挿入されました。 攻撃者は事実上、「admin」という名前の別の Cookie に値「true」を設定しました。 これは、権限昇格やその他のセキュリティ関連の攻撃に使用される可能性があります。

CRLF インジェクションは、クロスサイト スクリプティング攻撃の足がかりとして使用される可能性があります。 CRLF 文字を挿入して応答を操作することにより、攻撃者は他のユーザーのコンテキストで実行できる悪意のあるスクリプトを導入し、セッション ハイジャック、データ盗難、またはその他の形式の不正アクセスを引き起こす可能性があります。

例:

CRLF をクロスサイト スクリプティング (XSS) にエスカレートするためのペイロードを作成します。

Web アプリケーションで VAPT (脆弱性評価および侵入テスト) を実行しているときに、CRLF (Carriage Return Line Feed) の潜在的な脆弱性を発見しました。 概念実証による CRLF 脆弱性の検出と悪用に関する説明をご覧ください。

コメントを追加すると、不要なヘッダーとコンテンツがすべてコメントの下に置かれます。 レスポンスには Content-Type:text/html ヘッダーがあるため、HTML コメントが使用されます。