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.conf
で ServerSignature
を Off
に設定し、エラーメッセージにサーバー情報を表示しないようにします。
# 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.conf
で server_tokens
を off
に設定し、エラーメッセージにサーバー情報を表示しないようにします。
# 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アドレスが含まれているという情報
手動再現例
- Webブラウザの開発者ツールを開き、Networkタブを選択します。
- Webサイトにアクセスし、HTTPレスポンスヘッダーやレスポンスボディにプライベートIPアドレスが含まれていないか確認します。
curl
コマンドを使用して、HTTPレスポンスヘッダーを確認します。
curl -I https://example.com
まとめ
- CVSS 基本値: 5.3 (Medium)
- 運用チームや開発者が意識すべきポイント:
- Webサーバーの設定ファイルにプライベートIPアドレスが含まれていないか確認する。
- エラーメッセージに機密情報が含まれていないか確認する。
- 不要なポートを閉じ、アクセス制限を設ける。
- 定期的にWebサイトのセキュリティ診断を実施する。
- 再発防止:
- 開発プロセス全体でセキュリティを考慮する (Security by Design)。
- コードレビューを実施し、プライベートIPアドレスの漏洩がないか確認する。
- 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
- 設定ファイルや環境変数の管理を徹底する。
補足資料・参考 URL
以上の対策と検出方法を活用して、Private IP Disclosureのリスクを低減してください。