PHP脆弱性の対処ガイド:確認からPHP卒業まで
PHP2Shellのような脆弱性に、何をどの順番でやればいいのか。確認・更新・応急処置・侵入の点検の4ステップと、根本解決としての「PHPを使わないサイト」の長所と限界をまとめました。

PHPフリー · Webセキュリティ · 改善編ガイド
?こんな方におすすめです
- PHP2Shellのニュースを見て「で、うちは何をすればいいの?」と思った方
- 会社のホームページ(WordPress)を自分で、または制作会社に任せて管理している方
- これを機に、PHPを使い続けるか考えている方
!この記事でわかること
- 確認 → 更新 → 応急処置 → 侵入の点検、という順番と、段階ごとにやること
- 日本・韓国・米国・中国の資料40件がそろって強調した注意点
- 根本的な解決としての「PHPを使わないサイト」の長所と限界

リスクはわかりました。では、何をすればいいのでしょう?
不安は、わからないところから生まれます。順番がわかれば、不安は「やることリスト」に変わります。
リスク編の5本では、何が問題なのかをお話ししました。この記事はその続き、何をどの順番でやればよいかを一枚にまとめた案内書です。日本・韓国・米国・中国の公的機関、セキュリティ企業、ホスティング会社の資料40件を読み、4か国がそろって勧める順番に沿いました。
PHPの脆弱性、何から手をつければよいのか?
確認、更新、応急処置、侵入の点検。この4つのステップを順番にやれば大丈夫です。4か国の資料は、言い方こそ違っても同じ順番を勧めています。
近所で空き巣が出ていると聞いたとしましょう。まず、わが家の鍵がどんなものかを見ます。弱い鍵なら新しいものに替えます。替えるまでは、かんぬきを掛けておきます。そして、もう誰かが入っていないか家の中を見て回ります。PHPへの対処も、これとまったく同じです。
- 確認:Webで実際に使っているPHPのバージョンと、サーバーを管理しているのは誰か
- 更新:修正版(8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 以降)に上げ、必ず再起動
- 応急処置:すぐに上げられないなら、PHPの設定ファイル(php.ini)とWAF(Webアプリケーションファイアウォール)で時間を稼ぐ
- 侵入の点検:直す前に入られた跡がないかを見て、パスワードまで替える
- 根本解決:会社紹介のサイトなら、PHPを使わない形も検討
共用レンタルサーバー(1台のサーバーを複数の会社で分け合う借りものサーバー)なら、ステップ2は多くのサーバー会社が代わりに済ませたと公表しています。入居者がビルのボイラーを自分で直さないのと同じです。まず、契約しているサーバー会社のお知らせを確かめるのが第一歩です。
直す方法は更新ひとつだけ。ほかはすべて、時間を稼ぐための手段です。
PHPの公式発表も、一時的な設定は特定の攻撃経路を減らすだけで、環境を安全にするものではないと明言しています。1

ヤンのまとめ順番があれば、あわてることはありません。ただし、鍵を替えるステップ2を飛ばして、かんぬきを掛けるステップ3で止まってはいけません。
ステップ1:うちのサイトの「本当の」PHPバージョンは、どう確かめるのか?
Webサイトを実際に動かしているPHPを見る必要があります。
サーバーで php -v と打って出てくるのはコマンド用のPHPで、ホームページが使うPHP-FPM(ホームページへのリクエストを受けてPHPを実行するプログラム)やWebサーバーのPHPとは違うことがあります。3 家に時計がいくつもあるとき、居間の時計が合っていても台所の時計まで合っているとは限りません。韓国のセキュリティ企業Xintは、確認用のPHPファイルを他人に推測されにくい名前で置いてWebから開き、確認が済んだらすぐに消すよう案内しています。4
もうひとつの落とし穴はバージョン番号です。番号は外に貼った名札にすぎず、中身をすべて語ってはくれません。UbuntuやRed Hatのようなディストリビューション(サーバー用OSをまとめて配っているところ)は、番号はそのままで修正だけを入れるため、番号が古く見えても修正済みのことがあります。その場合は、パッケージの変更履歴(changelog)にCVE番号(脆弱性ごとに付く世界共通の番号)があるかで確かめます。5·6
| 運用の形 | 確かめ方 |
|---|---|
| 共用レンタルサーバー | サーバー会社のお知らせで修正の完了を確認。WordPressなら「ツール → サイトヘルス → 情報 → サーバー」でバージョンを確認 |
| VPS・自社サーバー | php-fpm -v のようにWeb用のPHPを別に確認し、パッケージのchangelogでCVE-2026-109618の反映を確認6·7 |
| コンテナ(Docker) | イメージのタグを修正版の番号に固定したか、新しいイメージで配置し直したかを確認 |
| マネージドホスティング | 画面の番号が変わらないこともあるので、サポートに修正の有無を問い合わせ8 |
サーバー会社ごとの確認・変更メニューと、切り替える前の落とし穴は改善編「PHPのバージョン、どこで見てどう変える?」でまとめます。

ヤンのまとめ番号ひとつで「大丈夫」「危ない」を決めないでください。最初に聞くべきは「うちのサーバーは誰が面倒を見ているのか」です。その答えが出れば、残りはぐっと楽になります。
ステップ2:更新したのに、なぜ再起動まで必要なのか?
すでに動いているPHPのプログラム(ワーカー)が、古いコードを握ったままだからです。6
薬は買っておくだけでは効きません。飲んで初めて効きます。新しいPHPを入れても、いま働いているワーカーは古いPHPのまま働き続けます。再起動とは、そのワーカーたちを新しいPHPに入れ替えることです。
韓国のセキュリティ企業ジニアンスは、Debian・Ubuntuなら sudo apt update && sudo apt upgrade、RHEL系なら sudo dnf update 'php*' で上げたあと(このコマンドはPHP以外のプログラムも一緒に上げます)、PHP-FPMやApacheを必ず再起動するよう案内しています。9 コンテナ(プログラムを箱ごと包んで動かす方式)は箱の中を直せないので、新しいPHPのイメージで作り直して配置し直す必要があります。10
8.1以前には公式の修正版がありません。サポート中のバージョンに切り替えるか、ディストリビューションが古い番号に修正だけを入れた版(バックポート)を使う必要があります。1
共用レンタルサーバーは、会社が代わりに済ませていることが多いです。たとえばエックスサーバーは、提供するPHP 5.6〜8.5への修正パッチの適用が完了しており、急いでPHPのバージョンを変える必要はないと案内しました(2026年10月22日時点)。ただしVPSについては、自社では修正パッチを適用していないとしています。11 サポートが終わった古いバージョンを使っているなら、管理画面からバージョンを切り替えます。エックスサーバーでは、サーバーパネルの「PHP Ver.切替」からドメインごとに変えられます。12

ヤンのまとめ「上げた」と「終わった」は別の言葉です。再起動して、Webでもう一度確かめて、ようやく終わりです。
ステップ3:すぐに上げられないときは、何をすればよいのか?
PHPの設定ファイル(php.ini)やPHP-FPMの設定に一時的な設定を入れて、ワーカーを再起動します。ただし、完全な防御ではありません。1
雨の夜、割れた窓にビニールを貼るようなものです。今夜の雨は防げますが、ガラスを入れ替えたわけではありません。
| 設定 | 内容 |
|---|---|
| session.upload_progress.enabled = 0 | アップロードの進捗表示機能を止める。10月23日に公表された別の脆弱性への対策も兼ねる1 |
| memory_limit = -1 | メモリ上限の解除。アプリから変えられないようphp_admin_valueで入れ、サーバー障害に備えてプロセス数など別の上限も置く(RLIMIT系は使わない)1·4 |
| post_max_size = 8M | リクエストの大きさを制限。アップロードが必要なら32M(upload_max_filesizeはそれより小さく)1·9 |
| fatal_error_backtraces = 0 | PHP 8.5のみ1 |
WAFは、怪しいリクエストを門の前で止める警備員です。これも時間を稼いでくれます。Cloudflareは無料プランを含む全顧客に防御ルールを適用しました。ただし、アップロード進捗機能の名前(session.upload_progress.name)を変えているサイトは、このルールでは防げないと説明しています。13
韓国のセキュリティ企業PLURAは、アップロードが不要なアドレスに届くファイル送信形式(multipart)のリクエストを止めるよう勧めています。14 それでも米国CISAは、WAFはあくまで一時的な保護で、修正できないならオフラインにすることまで勧めています。15 警備員がいても、扉は直さなければなりません。

ヤンのまとめ応急処置を入れた日に、「いつまでに、誰が更新するか」も一緒に決めてください。終わる日が決まっていてこそ「応急」です。
ステップ4:もう入られていないかは、どう確かめるのか?
ログ、プロセス、ファイル。この3か所を見ます。
空き巣が入った家には跡が残ります。玄関の足跡、家の中の見知らぬ人、なかったはずの物です。サーバーでは、ログ(サーバーが残す出入りの記録)、プロセス(いまサーバーで動いているプログラム)、ファイルがその3つです。4か国の資料がそろって挙げた確認項目は次のとおりです。
- ログ:PHP_SESSION_UPLOAD_PROGRESSを含むmultipartリクエスト、アップロード機能のないアドレスに届いたmultipartリクエスト、その前後のメモリエラーやHTTP 50016·17·18
- プロセス:PHPのワーカーの下で、sh・bash・curl・wgetのようなプログラムが実行された跡15·17
- ファイル:最近変わったPHPファイル、アップロード用フォルダにある見覚えのないPHPファイル。中国には、Webシェル(外からサーバーを操るためにこっそり置かれる裏口ファイル)を探す検査ツールの使い方を公開した資料もあります。こうしたツールも、出どころと動作を確かめてから使ってください17·19
- パスワード・キー:異常がなくても、データベースや管理者のパスワード、APIキーを替えます。韓国の情報保護機関KISAも、そう勧めています2
確認の順番は、リスク編4本目「パッチの前に侵入されていたら?攻撃の痕跡三つ」で詳しく説明しています。サーバーに直接入らずに社長が見られる場所と、見つけたときの順番は、改善編「うちのサイトに裏口が残っていないか?」で扱います。

ヤンのまとめ跡がないからといって「誰も来なかった」とは言い切れません。鍵を替えるのに大きな手間はかかりません。だから、パスワードの変更だけは皆さんにお勧めしています。
更新のあとでサイトが崩れたら、どうするのか?
原因になったプラグインやテーマを見つけて止めるか替えれば、たいていは元に戻ります。WordPressはデバッグログ(debug.log)を有効にすると、どのファイルがエラーを出したかを教えてくれます。21
だからこそ、更新の前にバックアップを取り、できればテスト環境で先に試すことが、各資料に共通する勧めです。バックアップは、戻ってくるための橋です。橋を架けてから渡る川は怖くありません。
同じ系統の中のセキュリティ修正(例:8.3.x → 8.3.36)なら、たいていサイトは崩れません。問題が起きやすいのは、7.xから8.xへの移行のように大きなバージョンを変えるときです。
画面が真っ白になったときに元に戻す順番は、改善編「PHPを上げたら画面が真っ白に?」でまとめます。

ヤンのまとめ「サイトが崩れるかもしれない」と先延ばしにするのが、いちばん危険です。バックアップさえあれば、昨日に戻れます。
根本解決:PHPを使わないサイトに変えると、どうなるのか?
PHPの更新・再起動・点検が要らなくなります。その代わり、フォーム・検索・コメントのようにPHPが担っていた仕事は、別の方法で解決する必要があります。
PHPで動くサイトは、お客さんが来るたびに厨房で料理を作り直すレストランです。PHPを使わない静的サイト(あらかじめ作ったHTMLファイルを見せるだけのサイト)は、作り置きのお弁当を渡すお店です。火を使わないので、火事の心配がありません。その代わり、お客さんごとに違う料理を出すのは苦手です。
WordPressのサイトをHTMLファイルに書き出すSimply Staticのようなツールがあり、Cloudflareはそうして作ったファイルを自社サービスに載せる方法を公式文書で案内しています。22·23 中国では、WordPressの記事をHugoという静的サイトのツールに移し、本番サーバーからPHPをなくした事例も紹介されています。24
- 10ページ前後の会社紹介サイト
- 更新が月に数回ほど
- お問い合わせフォームがあれば足りるところ
- ネットショップ・会員制サイト
- 予約や検索など機能の多いサイト
- 毎日何人もが記事を書くところ
無料のツールだけではフォーム・検索・コメントが動かず、記事を直すたびに書き出し直す必要があるという限界も、公式文書に書かれています。22·23 あたたかいデジタルのPHPフリーは、この移行と移行後の運用をお引き受けするサービスです。
移し方、載せる先の料金、お問い合わせフォームの代わりは、改善編「WordPressを静的サイトに移すと?方法と費用」でまとめます。

ヤンのまとめすべてのサイトが移るべきだとは思いません。ただ、会社紹介のサイトなら、毎年繰り返されるステップ1〜4そのものをなくす道もあります。扉をしっかり閉める方法もあれば、守るべき扉を減らす方法もあるのです。
PHPの脆弱性への対処についてよくある質問
共用レンタルサーバーなら、何をすればよいですか?
まずサーバー会社のお知らせを確認します。エックスサーバーやKinstaのように、会社が対応を済ませたと公表しているところが多く、サポートの終わった古いバージョンを使っているなら、管理画面から新しいバージョンに切り替えます。
php -v に古い番号が出たら危ないですか?
必ずしもそうではありません。コマンド用のPHPかもしれませんし、ディストリビューションは番号を変えずに直すこともあります。Web用のPHPと、パッケージのchangelogを確認してください。
php.iniに一時的な設定を入れておけば十分ですか?
いいえ。リスクを減らすだけで、完全な対策ではありません。根本的な対策は修正版への更新です。
WAFを使っていれば安全ですか?
いいえ。WAFは時間を稼ぐ補助的な手段で、PHPの更新の代わりにはなりません。
SOURCES
- PHP Group 「Security advisory: Critical remote code execution vulnerabilities, update now」(2026年10月21日、10月23日に追加のお知らせ) php.net
- KISA 보호나라 「PHP 보안취약점(PHP2Shell) 관련 기업 보안 대응 수칙」(韓国語、2026年10月22日) boho.or.kr
- HeroDevs 「PHP2Shell Is Two Critical PHP Flaws」(2026年10月21日) herodevs.com
- Xint 「PHP2Shell (CVE-2026-109618/109619) 긴급 대응 방안」(韓国語、2026年10月21日) xint.io
- Red Hat 「Security Backporting Practice」(作成日の記載なし) access.redhat.com
- Zenn(GeneLab)「PHP2Shell: php -v が8.3.6のままでも修正済みだった話」(2026年10月22日) zenn.dev
- CNCERT/CNVD PHPリモートコード実行の脆弱性の分析と修正の勧告(中国語、2026年10月22日、安全内参に転載) secrss.com
- Kinsta 「PHP2Shell: How Kinsta protected WordPress sites」(2026年10月23日) kinsta.com
- ジニアンス 「PHP 원격 코드 실행 취약점 긴급 안내 보고서」(韓国語、2026年10月21日) genians.co.kr
- AWS Security Bulletin 2026-143-AWS 「PHP web runtimes」(2026年10月21日) aws.amazon.com
- エックスサーバー 「予防的な安全対策に伴う公式サイト・管理画面等の一時停止のお知らせ」(2026年10月22日) xserver.ne.jp
- エックスサーバー マニュアル(PHPのバージョン切替) xserver.ne.jp
- Cloudflare Blog 「Cloudflare deploys protections against php2shell vulnerability」(2026年10月21日) blog.cloudflare.com
- PLURA 「PHP 취약점 대응: WAF로 먼저 방어하고, 서비스를 유지하며 패치하라」(韓国語、2026年10月22日) blog.plura.io
- CISA 「Critical Vulnerabilities in PHP Require Immediate Patching」(2026年10月21日、10月23日改訂) cisa.gov
- VulnCheck 「PHP2Shell Vulnerabilities」(2026年10月21日) vulncheck.com
- ログプレッソ 「PHP 원격 코드 실행 취약점(PHP2Shell) 대응 권고」(韓国語、2026年10月21日) logpresso.com
- JPCERT/CC 注意喚起 JPCERT-AT-2026-0033(2026年10月22日更新) jpcert.or.jp
- SHELLPUB Webシェル検査ツールのマニュアル(中国語、作成日の記載なし) shellpub.com
- AhnLab ASEC 「GitHub php2shell 저장소 분석」(韓国語、2026年10月22日) asec.ahnlab.com
- WordPress.org 「Debugging in WordPress」(2026年10月14日最終更新) developer.wordpress.org
- Cloudflare Pages 「Deploy a static WordPress site」(2026年4月21日) developers.cloudflare.com
- WordPress.org プラグイン「Simply Static」(2026年10月24日確認) ja.wordpress.org
- knightli.com WordPressからHugoへの移行(中国語、2022年3月23日) knightli.com
この記事を中心に、ステップごとの詳しいやり方を一本ずつまとめていきます。
- PHPの脆弱性の対処ガイド(この記事)
- PHPを上げたら画面が真っ白に?原因と戻し方
- PHPのバージョン、どこで見てどう変える?サーバー会社別の方法
- うちのサイトに裏口が残っていないか?Webシェル・侵入の痕跡セルフチェック
- WordPressを静的サイトに移すと?方法と費用
何が問題なのかは、リスク編1本目「PHP2Shellとは?」からお読みください。
うちのサイトは、どのステップからやればいい?
サイトのアドレスを入れるだけで、PHPを使っているか、サーバー会社の対応状況はどうかをすぐにお知らせします。当てはまらなければ「今は移行しなくて大丈夫です」とそのままお伝えします。
無料で30秒チェック結果をご覧になってご相談が必要なら あたたかいデジタルに問い合わせる

最終更新 2026年10月26日

