Private IP Disclosure

概要

  • 脆弱性の名前: Private IP Disclosure (プライベートIPアドレスの漏洩)
  • 問題の要点: WebサーバーがプライベートIPアドレスを公開してしまうことで、内部ネットワーク構成が攻撃者に知られるリスクがある状態。
  • よくある発生シーン: Webサーバーの設定ミス、エラーメッセージ、HTTPヘッダー、またはリダイレクト先URLにプライベートIPアドレスが含まれてしまう場合に発生します。クラウド環境では、設定ファイルやメタデータへのアクセス制限が不十分な場合に発生しやすいです。

背景

プライベートIPアドレスは、通常、組織の内部ネットワークでのみ使用されるIPアドレスです。これらのアドレスが外部に漏洩すると、攻撃者は内部ネットワークの構造を把握し、より効果的な攻撃を仕掛けることが可能になります。
Private IP Disclosureは、内部ネットワークのセキュリティを侵害する第一歩となる可能性があります。
近年、クラウド環境の普及により、設定ミスやアクセス制御の不備が原因で、プライベートIPアドレスが漏洩するケースが増加しています。

セキュリティ上のリスク

  • 内部ネットワーク構成の把握。
  • ポートスキャンによる内部サービスの特定。
  • サーバーサイドリクエストフォージェリ (SSRF) 攻撃。
  • 内部ネットワークへの侵入。

対処方法の具体例

Apache2

ServerName の設定

httpd.conf または vhost.conf で、ServerName がプライベートIPアドレスになっていないか確認します。

# 誤った設定例: ServerName がプライベートIPアドレスになっている
ServerName 192.168.1.10

# 正しい設定例: ServerName をFQDNにする
ServerName example.com

エラーメッセージの抑制

httpd.confServerSignatureOff に設定し、エラーメッセージにサーバー情報を表示しないようにします。

# httpd.conf
ServerSignature Off

Nginx

server_name の設定

nginx.conf で、server_name がプライベートIPアドレスになっていないか確認します。

# 誤った設定例: server_name がプライベートIPアドレスになっている
server {
    listen 80;
    server_name 192.168.1.10;
    ...
}

# 正しい設定例: server_name をFQDNにする
server {
    listen 80;
    server_name example.com;
    ...
}

エラーメッセージの抑制

nginx.confserver_tokensoff に設定し、エラーメッセージにサーバー情報を表示しないようにします。

# nginx.conf
http {
    server_tokens off;
    ...
}

PHP

phpinfo() の制限

phpinfo() 関数が公開されていないか確認し、公開されている場合は削除またはアクセス制限を設けます。

AWS

セキュリティグループの設定

AWSのセキュリティグループを使用して、EC2インスタンスへのアクセスを制限し、不要なポートを閉じます。

IAMロールの設定

IAMロールを使用して、EC2インスタンスがAWSリソースにアクセスする権限を制限します。

検出方法

OWASP ZAP での出力例

  • Alert 名: Private IP Disclosure
  • リスク: Low
  • URL: プライベートIPアドレスが漏洩しているURL
  • パラメータ: なし
  • 詳細: レスポンスにプライベートIPアドレスが含まれているという情報

手動再現例

  1. Webブラウザの開発者ツールを開き、Networkタブを選択します。
  2. Webサイトにアクセスし、HTTPレスポンスヘッダーやレスポンスボディにプライベートIPアドレスが含まれていないか確認します。
  3. curl コマンドを使用して、HTTPレスポンスヘッダーを確認します。
curl -I https://example.com

まとめ

  • CVSS 基本値: 5.3 (Medium)
  • 運用チームや開発者が意識すべきポイント:
    • Webサーバーの設定ファイルにプライベートIPアドレスが含まれていないか確認する。
    • エラーメッセージに機密情報が含まれていないか確認する。
    • 不要なポートを閉じ、アクセス制限を設ける。
    • 定期的にWebサイトのセキュリティ診断を実施する。
  • 再発防止:
    • 開発プロセス全体でセキュリティを考慮する (Security by Design)。
    • コードレビューを実施し、プライベートIPアドレスの漏洩がないか確認する。
    • 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
    • 設定ファイルや環境変数の管理を徹底する。

補足資料・参考 URL

以上の対策と検出方法を活用して、Private IP Disclosureのリスクを低減してください。