5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

先日セキュリティについて勉強していたところ、知らない言葉が多く出てきたので簡単にまとめます。

HTTPパラメータ汚染(HTTP Parameter Pollution)

概要

HTTPパラメータ汚染(HPP)は、同一のパラメータ名を複数回送信することで、サーバ側の処理を混乱させる攻撃手法です。

仕組み

  1. 同一のパラメータ名を複数回送信する
  2. サーバ側で最初のパラメータの値を保持しつつ、後続のパラメータを無視する
  3. 結果として、意図しない動作や情報漏洩が発生する

対策方法

  • 同一のパラメータ名を複数回送信しない
  • サーバ側で受け取ったパラメータを厳密に検証する
  • 不要なパラメータは削除する

リクエストスマグリング

リクエストスマグリングとは

リクエストスマグリング攻撃は、フロントエンドのプロキシサーバ(ロードバランサーなど)とバックエンドサーバの間で、HTTPリクエストの境界認識に差異がある場合に発生する攻撃です。

攻撃の仕組み

HTTP/1.1では、リクエストの長さを指定する方法が2つあります:

  1. Content-Length: バイト数で指定
  2. Transfer-Encoding: チャンク形式で指定

この2つが同時に存在する場合、サーバによって優先度が異なります💀

フロントエンドサーバの解釈:

  • Transfer-Encoding: chunkedを優先
  • 0でチャンクが終了と判断
  • 残りの部分を次のリクエストとして処理

バックエンドサーバの解釈:

  • Content-Length: 44を優先
  • 44バイト全体を1つのリクエストとして処理

対策方法

  • フロントエンドとバックエンドでHTTPリクエストの処理を統一する
  • バックエンドのサーバーとの通信に HTTP/2 を利用する

まとめ

今回紹介した2つの脆弱性は、いずれも「入力データの処理」に関わる重要なセキュリティ課題です

共通の対策原則

  1. 入力バリデーション: すべての入力データを厳密に検証
  2. ホワイトリスト方式: 許可されたデータのみを処理
  3. 複数層での防御: フロントエンド・バックエンドの両方で対策
  4. 安全なライブラリの使用: 実績のあるセキュリティライブラリを活用
  5. 定期的なセキュリティテスト: ペネトレーションテストや脆弱性スキャンの実施
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?