2026年8月2日

2026年8月2日

WordPressのServer-Side Request Forgery(SSRF)を防ぐ

はじめに

Server-Side Request Forgery(SSRF)は、攻撃者がサーバー側からHTTPリクエストを生成させることで、内部ネットワークへのアクセスやサービスのダウンロードなどを行う可能性がある深刻なセキュリティリスクです。WordPressサイトでは、プラグインやテーマが外部APIを呼び出す際によく見られる問題であり、適切な対策が必要となります。

この記事では、SSRF攻撃に対する防御策について説明します。特に、内部ネットワークへのアクセス制御と外部サービスとの安全な連携について詳しく解説します。

症状・背景

WordPressサイトでSSRFが発生する主な場面:

  • ネットワーク機能を活用したプラグインの使用
  • サードパーティ製テーマの利用
  • 外部APIとの連携がある場合

手順・設定方法

ステップ1: ネットワークアクセス制御の強化

# サーバー側でHTTPリクエストを送信する機能を有効にする際には、以下のように制限を設ける。
iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT # ローカルアクセスは許可
iptables -A OUTPUT -d <内部ネットワークアドレス> -j ACCEPT # 必要な内部ネットワークへのアクセスのみ許可
iptables -P OUTPUT DROP # すべての出力パケットを拒否

ステップ2: プラグインとテーマの安全性確認

# セキュリティ脆弱性のあるプラグインやテーマを削除または無効化する。
wp plugin deactivate <脆弱なプラグイン名>
wp plugin delete <脆弱なプラグイン名>

# 安全な最新版のプラグインとテーマをインストールする。
wp plugin update --all
wp theme update --all

ステップ3: PHP設定による制限

# PHP.iniファイルに以下のように設定を追加または変更することで、SSRF対策を行う。
# allow_url_fopen を禁止 (オンデマンドでフィルタリング可能)
allow_url_fopen = Off

# URLへのオープンを許可するホスト名のリストに例外を指定(必要最小限)
allow_url_include = <安全なホスト名1>,<安全なホスト名2>

# リクエストヘッダーのフィルタリング (optional)
suhosin.request.header.blacklist = "X-Forwarded-For,X-Originating-IP"

ステップ4: 定期的な監査と更新

# サイトのセキュリティ状態を定期的に確認し、必要に応じて更新を行う。
wp core update
wp plugin update --all
wp theme update --all

注意事項

  • 常に最新版のプラグインとテーマを使用すること。
  • ネットワークアクセス制御は過度に厳しく設定しないように注意する。
  • 定期的なセキュリティ監査を実施する。
  • 既存の攻撃を検出するために、ログファイルのモニタリングを行う。

まとめ

1. ネットワークアクセス制限: サーバー側から外部へのHTTPリクエストを適切に制御することが重要です。

2. プラグインとテーマの管理: 安全なプラグインとテーマを使用し、定期的な更新を行うことが求められます。

3. PHP設定による制限: ファイルやネットワーク機能へのアクセスを制限することで、不正なリクエストを防止します。

4. 定期的な監査: 定期的にセキュリティ状態を確認し、必要な更新を行います。

5. ログモニタリング: 不審なアクティビティの検出のために、サーバーのログファイルを定期的にチェックします。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ