Server Leaks Version Information via "Server" HTTP Response Header Field

概要

  • 脆弱性の名前: Server Leaks Version Information via "Server" HTTP Response Header Field ("Server" HTTPレスポンスヘッダーによるバージョン情報漏洩)
  • 問題の要点: Webサーバーが "Server" HTTPレスポンスヘッダーを通じて、サーバーソフトウェアのバージョン情報を公開してしまうことで、攻撃者にシステムの内部情報が漏洩するリスクがある状態。
  • よくある発生シーン: Webサーバーの設定がデフォルトのままになっている場合や、設定ファイルで明示的にヘッダーを削除していない場合に発生しやすい。クラウド環境では、複数のサーバーを管理する際に設定の統一が不十分だと発生することがあります。

背景

"Server" ヘッダーは、Webサーバーが自動的に付与する情報で、使用しているサーバーソフトウェア(Apache、Nginx等)とそのバージョンを含みます。この情報は開発やデバッグ時には有用ですが、本番環境では不要な情報であり、攻撃者にとってシステムの脆弱性を特定する手がかりとなる可能性があります。
特定のバージョンのサーバーソフトウェアには既知の脆弱性が存在することがあり、攻撃者はこの情報を利用して、脆弱性を悪用する可能性があります。
近年、セキュリティ意識の高まりとともに、本番環境での情報漏洩を防ぐために、このヘッダーを削除することが推奨されています。

セキュリティ上のリスク

  • システム内部情報の漏洩。
  • 攻撃者が脆弱性を特定しやすくなる。
  • 特定のバージョンの既知の脆弱性を狙った攻撃のリスクが高まる。
  • サーバー構成情報の漏洩。
  • フィンガープリンティング攻撃の助長。

対処方法の具体例

Apache2

httpd.confでの設定

httpd.conf または vhost.conf に以下の記述を追加することで、"Server" ヘッダーを削除または変更します。

# httpd.conf または vhost.conf
ServerTokens Prod
ServerSignature Off

ServerTokens Prod は、サーバーが返す情報を最小限にします。
ServerSignature Off は、エラーページにサーバー情報を表示しないようにします。

Nginx

nginx.confでの設定

nginx.conf に以下の記述を追加することで、"Server" ヘッダーを削除または変更します。

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

server_tokens off は、サーバーが返す情報を最小限にします。

WordPress

WordPress自体は "Server" ヘッダーを直接制御しませんが、サーバーの設定を変更することで対応します。

PHP

PHP自体は "Server" ヘッダーを直接制御しませんが、サーバーの設定を変更することで対応します。

JavaScript (Node.js / Express)

Node.js/Expressを使用している場合、helmet ミドルウェアを使用することで、セキュリティ関連のヘッダーを簡単に設定できます。

const express = require('express');
const helmet = require('helmet');
const app = express();

app.use(helmet.hidePoweredBy());

AWS

CloudFrontの設定

CloudFrontを使用している場合、カスタムヘッダーポリシーを設定し、オリジンからの "Server" ヘッダーを削除します。

Load Balancerの設定

ロードバランサー(ALB/ELB)を使用している場合、HTTPヘッダーの書き換えルールを設定し、"Server" ヘッダーを削除します。

検出方法

OWASP ZAP での出力例

  • Alert 名: Server Leaks Version Information via "Server" HTTP Response Header Field
  • リスク: Low
  • URL: "Server" ヘッダーが検出されたURL
  • パラメータ: なし
  • 詳細: レスポンスヘッダーに "Server" が含まれているという情報

手動再現例

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

まとめ

  • CVSS 基本値: 4.0 (Medium)
  • 運用チームや開発者が意識すべきポイント:
    • Webサーバーの設定を確認し、"Server" ヘッダーを削除または変更する。
    • 不要なヘッダー情報を削除し、情報漏洩のリスクを低減する。
    • 定期的にWebサイトのセキュリティ診断を実施する。
  • 再発防止:
    • 開発プロセス全体でセキュリティを考慮する (Security by Design)。
    • コードレビューを実施し、不要なヘッダー情報が含まれていないか確認する。
    • 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
    • サーバー設定やアプリケーションフレームワークの設定に関するポリシーを策定し、遵守する。

補足資料・参考 URL

以上の対策と検出方法を活用して、Server Leaks Version Information via "Server" HTTP Response Header Field のリスクを低減してください。