php.net ではありません · NVD ではありません · CISA ではありません

PHP 脆弱性トラッカー

PHP のセキュリティ脆弱性に関する非公式ブリーフィング

English简体中文日本語DeutschFrançaisNederlandsEspañol

セキュリティ警報

PHP2Shell:PHP をアップデートしてください。それが唯一の完全な修正です。

CVE-2026-109618 と CVE-2026-109619 は、PHP 本体に存在する認証不要のリモートコード実行(RCE)の深刻な脆弱性です。PHP プロジェクトは 2026 年 10 月 21 日、サポート中の 8.2〜8.5 系に修正版を公開しました。アップデート後は PHP を再起動してください。ファイアウォールは代わりになりません。

対策の手順

PHP セキュリティ解説 · 防御向け

PHP ファイルインクルード(LFI/RFI)とは?直し方

include と require は渡されたファイルをそのまま実行します。パスの一部がリクエストから来るなら、何を実行するかを訪問者が決めていることになります。

最終更新

どんな問題か

ローカルファイルインクルード(LFI)では、設定ファイルやログなどサーバー上の既存ファイルを include や require に読み込ませられます。アップロードやログ書き込みと組み合わさるとコード実行になり得ます。リモートファイルインクルード(RFI)は別サーバーのコードを読み込むもので、allow_url_include が有効なときだけ成立し、php.net によれば既定は無効です。MITRE では CWE-98 に分類されます。

見つけ方

直し方

読み取り専用の確認と安全な書き方

# Find include/require with a variable path (read-only)
grep -rnE "(include|require)(_once)?\s*\(?\s*\$" --include=*.php . | grep -v /vendor/
php -i | grep -E "allow_url_include|allow_url_fopen|open_basedir"

; php.ini hardening
allow_url_include = Off
open_basedir = /var/www/example:/tmp

// Map user choices to fixed files instead of building paths
$pages = ['home' => 'home.php', 'about' => 'about.php'];
require __DIR__ . '/pages/' . ($pages[$_GET['p'] ?? 'home'] ?? 'home.php');

basename() を通せば include は安全ですか?

ディレクトリ部分は消えますが、そのディレクトリ内のどのファイルでも選べてしまいます。明示的な許可リストのほうが安全です。

今の PHP でも RFI は危険ですか?

allow_url_include を有効にしている場合だけです。LFI は特別な設定が要らないため今もよく見られます。

ほかの PHP の脆弱性の種類

出典

外部リンクは本サイトの外に移動します。本サイトはエクスプロイトコードを掲載しません。

  1. CWE-98: PHP Remote File Inclusion — MITRE CWE
  2. Testing for Local File Inclusion — OWASP Web Security Testing Guide
  3. Filesystem runtime configuration (allow_url_fopen, allow_url_include) — PHP Manual
  4. Core php.ini directives (open_basedir, expose_php) — PHP Manual