Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s)
概要
- 脆弱性の名前: Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) ("X-Powered-By" HTTPレスポンスヘッダーによるサーバー情報漏洩)
- 問題の要点: Webサーバーが "X-Powered-By" HTTPレスポンスヘッダーを通じて、サーバーで使用されている技術やバージョン情報を公開してしまうことで、攻撃者にシステムの内部情報が漏洩するリスクがある状態。
- よくある発生シーン: Webサーバーやアプリケーションフレームワークの設定がデフォルトのままになっている場合や、設定ファイルで明示的にヘッダーを削除していない場合に発生しやすい。クラウド環境では、複数のサーバーを管理する際に設定の統一が不十分だと発生することがあります。
背景
"X-Powered-By" ヘッダーは、Webサーバーやアプリケーションフレームワークが自動的に付与する情報で、使用している技術(PHP、ASP.NET等)のバージョンを含みます。この情報は開発やデバッグ時には有用ですが、本番環境では不要な情報であり、攻撃者にとってシステムの脆弱性を特定する手がかりとなる可能性があります。
近年、セキュリティ意識の高まりとともに、本番環境での情報漏洩を防ぐために、このヘッダーを削除することが推奨されています。
セキュリティ上のリスク
- システム内部情報の漏洩。
- 攻撃者が脆弱性を特定しやすくなる。
- 特定のバージョンの既知の脆弱性を狙った攻撃のリスクが高まる。
- サーバー構成情報の漏洩。
- フィンガープリンティング攻撃の助長。
対処方法の具体例
Apache2
httpd.confでの設定
httpd.conf
または vhost.conf
に以下の記述を追加することで、"X-Powered-By" ヘッダーを削除します。
# httpd.conf または vhost.conf
<IfModule mod_headers.c>
Header unset X-Powered-By
</IfModule>
Nginx
nginx.confでの設定
nginx.conf
に以下の記述を追加することで、"X-Powered-By" ヘッダーを削除します。
# nginx.conf
http {
server_tokens off;
...
add_header X-Powered-By "";
}
WordPress
functions.phpでの設定
functions.php
に以下のコードを追加することで、"X-Powered-By" ヘッダーを削除します。
<?php
// functions.php
add_action('send_headers', function() {
header_remove('X-Powered-By');
});
.htaccessでの設定
.htaccess
に以下の記述を追加することで、"X-Powered-By" ヘッダーを削除します。
<IfModule mod_headers.c>
Header unset X-Powered-By
</IfModule>
PHP
php.iniでの設定
php.ini
で expose_php
を Off
に設定することで、PHP自体の "X-Powered-By" ヘッダーを削除します。
; php.ini
expose_php = Off
PHPコードでの設定
PHPコード内で header_remove()
関数を使用することで、"X-Powered-By" ヘッダーを削除します。
<?php
// PHPコード
header_remove('X-Powered-By');
JavaScript (Node.js / Express)
Express.jsでの設定
Express.js で app.disable()
メソッドを使用することで、"X-Powered-By" ヘッダーを削除します。
const express = require('express');
const app = express();
app.disable('x-powered-by');
AWS
CloudFrontの設定
CloudFrontを使用している場合、カスタムヘッダーポリシーを設定し、オリジンからの "X-Powered-By" ヘッダーを削除します。
Load Balancerの設定
ロードバランサー(ALB/ELB)を使用している場合、HTTPヘッダーの書き換えルールを設定し、"X-Powered-By" ヘッダーを削除します。
検出方法
OWASP ZAP での出力例
- Alert 名: Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s)
- リスク: Low
- URL: "X-Powered-By" ヘッダーが検出されたURL
- パラメータ: なし
- 詳細: レスポンスヘッダーに "X-Powered-By" が含まれているという情報
手動再現例
- Webブラウザの開発者ツールを開き、Networkタブを選択します。
- Webサイトにアクセスし、HTTPレスポンスヘッダーに "X-Powered-By" ヘッダーが含まれていないか確認します。
curl
コマンドを使用して、HTTPレスポンスヘッダーを確認します。
curl -I https://example.com
まとめ
- CVSS 基本値: 4.0 (Medium)
- 運用チームや開発者が意識すべきポイント:
- Webサーバーやアプリケーションフレームワークの設定を確認し、"X-Powered-By" ヘッダーを削除する。
- 不要なヘッダー情報を削除し、情報漏洩のリスクを低減する。
- 定期的にWebサイトのセキュリティ診断を実施する。
- 再発防止:
- 開発プロセス全体でセキュリティを考慮する (Security by Design)。
- コードレビューを実施し、不要なヘッダー情報が含まれていないか確認する。
- 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
- サーバー設定やアプリケーションフレームワークの設定に関するポリシーを策定し、遵守する。
補足資料・参考 URL
以上の対策と検出方法を活用して、Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) のリスクを低減してください。