メインコンテンツまでスキップ

10. セキュリティに関する考慮事項 (Security Considerations)

HTTP/3のセキュリティ上の考慮事項は、TLSを使用したHTTP/2と同等である必要があります。ただし、[HTTP/2] のセクション10の考慮事項の多くは [QUIC-TRANSPORT] に適用され、そのドキュメントで説明されています。

10.1. サーバー権限 (Server Authority)

HTTP/3はHTTPの権限の定義に依存しています。権限を確立する際のセキュリティ上の考慮事項は、[HTTP] のセクション17.1で説明されています。

10.2. クロスプロトコル攻撃 (Cross-Protocol Attacks)

TLSおよびQUICハンドシェイクでのALPNの使用は、アプリケーション層のバイトが処理される前にターゲットアプリケーションプロトコルを確立します。これにより、エンドポイントはピアが同じプロトコルを使用していることを強く保証できます。

これは、すべてのクロスプロトコル攻撃からの保護を保証するものではありません。[QUIC-TRANSPORT] のセクション21.5は、認証されたトランスポートを使用しないエンドポイントに対してリクエスト偽造を実行するためにQUICパケットの平文を使用できるいくつかの方法を説明しています。

10.3. 中継者カプセル化攻撃 (Intermediary-Encapsulation Attacks)

HTTP/3フィールドエンコーディングは、HTTPで使用される構文では有効でないフィールド名の表現を許可します([HTTP] のセクション5.1)。無効なフィールド名を含むリクエストまたはレスポンスは、不正な形式として扱わなければなりません (MUST)。

同様に、HTTP/3は無効なフィールド値を転送できます。エンコードできる値のほとんどはフィールド解析を変更しませんが、キャリッジリターン(ASCII 0x0d)、ラインフィード(ASCII 0x0a)、およびヌル文字(ASCII 0x00)は、逐語的に翻訳された場合、攻撃者によって悪用される可能性があります。

10.4. プッシュレスポンスのキャッシュ可能性 (Cacheability of Pushed Responses)

プッシュされたレスポンスには、クライアントからの明示的なリクエストがありません。リクエストは、PUSH_PROMISEフレームでサーバーによって提供されます。

複数のテナントが同じサーバー上のスペースを共有する場合、そのサーバーは、テナントが権限を持たないリソースの表現をプッシュできないようにしなければなりません (MUST)。

10.5. サービス拒否に関する考慮事項 (Denial-of-Service Considerations)

HTTP/3接続は、HTTP/1.1またはHTTP/2接続よりも動作するためにより大きなリソースのコミットメントを要求する可能性があります。

対等方が無視する必要がある未定義のプロトコル要素を送信する機能は、対等方に追加の処理時間を費やさせるために悪用される可能性があります。

このような動作を監視しないエンドポイントは、サービス拒否攻撃のリスクにさらされます。実装は、これらの機能の使用を追跡し、使用に制限を設定すべきです (SHOULD)。

10.5.1. フィールドセクションサイズの制限 (Limits on Field Section Size)

大きなフィールドセクション(セクション4.1)は、実装に大量の状態をコミットさせる可能性があります。エンドポイントは、SETTINGS_MAX_FIELD_SECTION_SIZE(セクション4.2.2)設定を使用して、フィールドセクションのサイズに適用される可能性のある制限をピアに通知できます。

10.5.2. CONNECT問題 (CONNECT Issues)

CONNECTメソッドは、プロキシ上で不均衡な負荷を作成するために使用できます。ストリーム作成はTCP接続の作成と維持に比べて比較的安価だからです。

10.6. 圧縮の使用 (Use of Compression)

圧縮は、攻撃者が制御するデータと同じコンテキストで圧縮される場合、攻撃者が秘密データを回復することを可能にします。HTTP/3はフィールド圧縮を有効にします(セクション4.2)。

安全なチャネル上で通信する実装は、各データソースに個別の圧縮コンテキストが使用されない限り、機密データと攻撃者が制御するデータの両方を含むコンテンツを圧縮してはなりません (MUST NOT)。

10.7. パディングとトラフィック分析 (Padding and Traffic Analysis)

パディングは、フレームコンテンツの正確なサイズを曖昧にするために使用でき、HTTP内の特定の攻撃を軽減するために提供されます。

10.8. フレーム解析 (Frame Parsing)

いくつかのプロトコル要素には、ネストされた長さ要素が含まれています。実装は、フレームの長さがそれに含まれるフィールドの長さと正確に一致することを確認しなければなりません (MUST)。

10.9. 早期データ (Early Data)

HTTP/3で0-RTTを使用すると、リプレイ攻撃への露出が発生します。HTTP/3を0-RTTで使用する場合、[HTTP-REPLAY] の防リプレイ緩和策を適用しなければなりません (MUST)。

10.10. マイグレーション (Migration)

一部のHTTP実装は、ログ記録またはアクセス制御の目的でクライアントアドレスを使用します。QUICクライアントのアドレスは接続中に変更される可能性があるため、そのような実装は、関連するときにクライアントの現在のアドレスを積極的に取得するか、元のアドレスが変更される可能性があることを明示的に受け入れる必要があります。

10.11. プライバシーに関する考慮事項 (Privacy Considerations)

HTTP/3のいくつかの特性は、観察者に単一のクライアントまたはサーバーのアクションを時間の経過とともに関連付ける機会を提供します。これらには、設定の値、刺激への反応のタイミング、および設定によって制御される機能の処理が含まれます。

HTTP/3は単一のQUIC接続を使用することを好むため、サイト上のユーザーのアクティビティを関連付けることができます。