セキュリティーの勧告: Slim-Psr7 のヘッダー検証の不適切に関する問題
Slim-Psr7 におけるヘッダーの改行の処理に関連したセキュリティーの問題が最近報告されました。
影響
攻撃者はヘッダーの名前と値の両方に出入りを許可する改行 (\n)を忍び込ませることができます。\r\n\r\n はヘッダーリストを終了するために使用されると仕様書に記載されていますが、多くのサーバーでも \n\n を受け入れています。Slilm-Psr7 に渡されるヘッダー名を制御できる攻撃者は、意図的に無効なメッセージを作成することができ、アプリケーションエラーや PSR-18 HTTP クライアントを使用して無効な HTTP リクエストが送信される原因となる可能性があります。リモートサービスの Web アプリケーションファイアウォールが不正なリクエストを受け取ったためにアプリケーションを禁止した場合、後者はサービス拒否ベクトルの可能性があります。
影響を受けるバージョン
1.6.1 より前のすべてのバージョン。
パッチ
この問題はバージョン1.6.1でパッチが当てられています。
回避策
Slim-Psr7 1.6.0 以下では、HTTP ヘッダーキーや値を検証し、ユーザーが提供する値を使用する場合は、withHeader() を呼び出す前に値をフィルターして先頭または末尾の改行文字を取り除きます。
例
$request = $request->withHeader(trim($headerName), trim($headerValue));
謝辞
この問題を報告し、パッチを提供し、この問題に取り組んでくれた Graham Campbell に、心より感謝しています。