緊急 / CRITICAL CVE-2026-109618 CVE-2026-109619 CVSS v4.0: 9.2

PHPの重大脆弱性「PHP2Shell」とは何か医療機関・病院・クリニックのための技術解説と、当社が実際に受けた攻撃事例

2026年10月21日、PHP公式が認証不要のリモートコード実行(RCE)につながる2件の重大な脆弱性の修正版を公開しました。日本では内閣総理大臣が「今夜に対応して頂きたい大至急のお願い」として異例の呼びかけを行っています。医療法人鳳應会グループ(株式会社Medi Face)は、今夏、医療系Webサイト21件が侵害される攻撃を実際に受けた当事者として、この問題を技術的に解説します。

公開:2026年10月22日 / 更新:2026年10月22日(JST) / 文責:株式会社Medi Face・医療法人鳳應会グループ サイバーセキュリティ対応チーム

この記事の結論(3行)

  1. 脆弱性はWordPressやプラグインではなく、PHPそのもの(実行環境)にあります。CMSのセキュリティプラグインでは防げず、アプリケーションのコードが動く前の段階で悪用され得ます。
  2. 修正版は PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35。PHP 8.1以前には公式の修正がありません。「更新する」以外に完全な解決策はありません。
  3. ホームページを「見るだけ」の患者さんは何もする必要はありません。対応が必要なのは、PHPが動いているサーバーを運営している医療機関・制作会社・サーバー会社です。

何が起きたのか——時系列

PHPは、WordPressをはじめ、世界中の非常に多くのWebサイトの裏側で動いているプログラミング言語(実行環境)です。今回の2件の脆弱性は「PHP2Shell」と呼ばれており、報道・研究者の整理では認証なしの単一のHTTPリクエストでリモートコード実行(RCE)に至り得る重大なものです。以下は、公開情報にもとづく時系列です(時刻は特記なき限り日本時間、報道・各社発表の記載に基づく)。

2026-08-11

研究チーム Calif が1件目の脆弱性をPHPに報告(PoCの共有は8月14日)。

2026-08-19

Wiz Research が独立に1件目を発見。両チームはOpenAIと連携し、PHP公式は「PHPチーム、Calif、OpenAIによる発見・調整・修正検証」と謝辞を述べています。

2026-10-17

Amazonのハニーポット(MadPot)が、公開の4日前に悪用の試みを記録(報道による)。

2026-10-20

非公式な情報(SNS上のリーク)をもとに、セキュリティ各社が注意喚起を先行して公開。

2026-10-21 正午ごろ

Cloudflareが全顧客向けにWAFルールを展開(同社は同日、自社顧客への攻撃トラフィックを観測したと説明)。

2026-10-21 23:00

PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 を公開。公開の前後から、複数のセキュリティ企業が実環境での悪用(試行)を観測したと報告。

2026-10-22

追加情報が更新され続けている段階。本記事も状況に応じて更新します。

※悪用状況についての報告は一致していません。ある企業は「大規模な悪用」を報告し、別の企業は「自社の顧客環境では未確認」としています。いずれにせよ、修正版が公開され、攻撃者がパッチを解析できる状態になった以上、未修正環境のリスクは時間とともに上がると考えるのが妥当です。

国は何と言っているか

今回の件が異例なのは、日本の内閣総理大臣自身が、公式Xアカウントで全国民・全事業者に対して「今夜の対応」を呼びかけたことです。以下に、その投稿を引用します。

高市早苗 内閣総理大臣 / 公式X(@takaichi_sanae) 2026年10月21日夜(日本時間)の投稿

皆様に、今夜に対応して頂きたい大至急のお願いです。

多くのウェブサイトで使用されているPHPに関し、PHPのセキュリティチームが、重大な2件の脆弱性に関する注意喚起を行っています。

公開しているウェブサイトでPHPを使用しているか確認し、今夜、10月21日午後11時(日本時間)に公開される修正パッチについて、可及的速やかに適用できるよう準備をお願いします。

修正パッチを速やかに適用することが困難な場合は、例えばウェブサイト等を一時的に停止させることも、リスクを低減させるための有効策の一つと考えられます。

国家サイバー統括室のXアカウントでも関係する情報を発信していますので、そちらも参考にして下さい。

この呼びかけのポイントは3つです。

  • 「PHPを使っているか確認」:まず自院のサイトがPHPで動いているかを知ること。
  • 「修正パッチを可及的速やかに適用」:日本時間21日23時の公開に合わせて準備すること。
  • 「一時的に停止させることも有効策」:適用できないなら、止めてよいという明確な方針です。

この投稿を、ITに詳しくない方向けに噛み砕いた解説も広く共有されています。たとえば taichi endoh 氏(X)は次のように整理しています(抜粋)。

taichi endoh X / 首相投稿の解説(抜粋)

「一時的に停止させることも有効策」=今夜中に更新できないなら、サイトを止めてもいい、ということ。予約フォームなら、明日の朝まで電話受付にする、で足ります。

もう一つ。「PHPの緊急アップデートはこちら」というメールのリンクは踏まないでください。便乗した詐欺です。

この「予約フォームなら電話受付に切り替える」という考え方は、医療機関にそのまま当てはまる現実的な判断です。詳しくは医療機関が今日やるべきことで述べます。

海外でも、英国NCSCは「修正できないシステムはオフラインにすることを推奨」と報じられ、米CISAも修正版への即時更新を強く促しています。Wizの研究者は「PHPで発見された脆弱性の中でも最も深刻なものに数えられる」「フロンティアAIモデルが参入障壁を大きく下げた」と述べ、セキュリティ研究者のKevin Beaumont氏は「PHPの件は大量のインシデントを生む。ここ数年で最大級の脆弱性の一つ」とコメントしています(いずれも報道による引用)。

技術解説——2つの脆弱性の仕組み

ここからは技術的な解説です。悪用の具体的な手順は意図的に記載しません。防御側が仕組みを理解し、正しく判断するために必要な範囲、すなわちPHP公式のアドバイザリ(GHSA-w8hw-w9fx-j79w / GHSA-6wmf-4rv5-p3rp)および各社の公開分析で明らかになっている範囲に絞って説明します。

1. 前提:PHPの「リクエスト処理モデル」

PHPは、Webサーバー(Apache・Nginxなど)から渡されたHTTPリクエストを受け、スクリプトを実行して結果を返します。このとき、実行形態(SAPI:Server API)によって「リクエストをまたいでプロセスを使い回すか」が変わります。

  • mod_php:Apacheの内部でPHPが動く。ワーカープロセスが多数のリクエストを順に処理する。
  • PHP-FPM / LiteSpeed(LSAPI) / FrankenPHP:常駐ワーカーが多数のリクエストを順に処理する。
  • php-cgi / CLI:基本的に1リクエスト(1実行)ごとにプロセスが終わる。

重要なのは、多くの本番環境ではワーカーが使い回されるという点と、リクエストの解析(POSTデータ、マルチパートのファイルアップロード、セッション関連の前処理)がアプリケーションのコードより先に自動的に行われるという点です。今回の2件は、いずれもこの「アプリのコードが動く前の自動処理」と「リクエスト終了時の後片付け」に関わっています。

HTTP リクエスト Webサーバ / SAPI mod_php・FPM など ① リクエスト初期化 POST / multipart 解析 セッション upload progress 内部状態の構築 ※アプリのコードより前 アプリのコード WordPress 等 ② 後片付け 状態の破棄・解放 同じワーカーが次のリクエストを処理 CVE-2026-109618 ① の途中でメモリ枯渇→中断 CVE-2026-109619 ② で残った古い状態を次が参照
図1 PHPのリクエスト処理(一般的なモデル)と、2つの脆弱性が関わる位置(概念図)。公開情報にもとづく当社による整理であり、PHP内部の実装そのものを示すものではありません。

2. CVE-2026-109618:メモリ枯渇(OOM)時の破損によるRCE

公式の説明:「メモリ不足の処理が、内部のリクエストデータがまだ部分的にしか初期化されていない段階でPHPを中断させる可能性がある。その後のリクエスト後片付けが、不正なデータを正当なものとして扱い、リモートコード実行につながる」(GHSA-w8hw-w9fx-j79w)。

平たく言えば、次のような構造です。

  1. PHPは通常、確保できるメモリの上限(memory_limit)に達するとその場でリクエスト処理を打ち切ります。
  2. この「打ち切り」が、リクエストの初期化の途中で起きると、内部のデータ構造が半分だけ作られた不整合な状態で残ります。
  3. その後の後片付け(クリーンアップ)処理は、不整合なデータを「正常」と信じて走り、壊れたポインタを読み書きしてしまう。ここが悪用の足場になります。

公開分析では、攻撃者がメモリ枯渇を意図的に起こすための入口として、マルチパート(ファイルアップロード形式)リクエストの処理が挙げられています。具体的には次の性質が指摘されています。

  • 有効な Content-Length を持たないマルチパートのリクエストは、post_max_size によるサイズ検査をすり抜ける
  • マルチパートの各パートに付けられるヘッダー数に実質的な上限がなく、メモリを大量に消費させられる
  • 空のファイル欄は max_file_uploads の制限を回避しつつ、メタデータ用の配列を生成する
  • 入れ子になったフィールド名が、処理量を増幅させる

修正方針:メモリ枯渇時に「その場で即中断」するのをやめ、安全な地点で制御可能に処理を止める“ソフトリミット”を導入し、2段階目の閾値で初めて強制終了する設計に改められました。つまり問題の本質は「メモリが足りなくなること」ではなく、「足りなくなったときの止まり方が、内部状態を壊す」ことでした。

3. CVE-2026-109619:残存した古い状態(Stale Global State)によるRCE

公式の説明:「リクエストが所有する内部状態が、その裏付けとなるメモリが解放された後も残り得る。同じワーカーが処理する後続のリクエストが、通常の初期化でリセットされる前にその古い状態を使い、RCEにつながり得る」(GHSA-6wmf-4rv5-p3rp)。

これはソフトウェアの世界でUse-After-Free(解放後使用)と呼ばれる種類の問題に相当します。常駐ワーカーはリクエスト間でグローバルな状態を保持しますが、その一部は「そのリクエストが確保したメモリ」を指しています。リクエストが致命的エラーなどで途中終了し、後片付けが完了しないと、メモリは解放されたのにポインタだけが生き残ることがあります。次のリクエストがそれを先に参照してしまうのが問題です。

悪用経路として確認されているのは次の2つです。

経路内容
PHP 8.5:致命的エラー時のバックトレースバックトレース用の状態がシャットダウン時にリセットされない。mod_phpで最も確実に実証された経路。
セッションのアップロード進捗(session upload progress)デフォルトで有効。session_start() を呼ばなくても、通常のセッション初期化より前に動く。メモリ枯渇や致命的エラーの後に影響。

「エラーを隠せば安全」ではありません

公開情報では、error_reporting の設定、@ 演算子、display_errors、log_errors でエラー表示や記録を消しても効果がないとされています。PHPは「エラーを報告するかどうかを決める前」に、すでに古い状態に触れてしまうためです。

4. なぜ「WordPressのセキュリティ対策」では防げないのか

WordPressのセキュリティプラグイン、ログインURLの変更、二要素認証、ファイル改ざん検知——これらはすべてPHPの上で動くアプリケーション層の対策です。今回の脆弱性はその一段下、PHPの実行環境そのものにあり、公開分析では「アプリケーションの入力検証より前の、自動的なリクエスト解析の段階で悪用が成立する」と説明されています。

  • Cloudflareは「サイトのコードやプラグインを更新しても、これらの欠陥は直らない。PHPのランタイムにあるからだ」と説明しています。
  • PHP2Shellは、別系統のWordPress脆弱性(WP2Shell)とは別物です。「WordPress本体・プラグインを最新にした」だけでは不十分で、PHP自体の更新が別途必要です。
  • WordPressだけでなく、Drupal・Joomla・Magento・Shopware・WooCommerceなど、PHPで動くあらゆる仕組みが対象になります。Wizは実験環境でWordPress・Drupal・Joomlaに対する悪用を実証したと報告されています。

影響範囲——SAPI別リスクと対象バージョン

SAPI別のリスク

公開分析(各SAPIの挙動に基づく評価)を整理します。ただし「リスクが低い」=「安全」ではありません。実証の有無が異なるだけです。

実行形態リスク理由(公開分析より)
Apache mod_phpCriticalデフォルト設定でHTTP経由の未認証RCEが実証。リクエストの自動解析時点で成立し、アプリの入力検証を回避。Webワーカー権限で実行。
PHP-FPMHighメモリ系はソース解析で影響を受け得ることを確認。完全な悪用は未実証。古い状態の系統は、特定のアプリ操作を要するものの実証済みの経路あり。
FrankenPHPHighメモリ系はmod_phpに近く、アプリ非依存で影響を受ける可能性が高いとソース解析が示す。
LiteSpeed (LSAPI)HighFPMに近い挙動。アプリ依存の悪用が現実的と見られるが未検証。
php-cgi / CLI相対的に低1リクエストごとにプロセスが終了するため、状態の持ち越しが起きにくい(PHP公式はphp-cgiも影響対象に列挙)。

対象バージョンと修正版

ブランチ修正版備考
PHP 8.58.5.12サポート中
PHP 8.48.4.27サポート中
PHP 8.38.3.36サポート中
PHP 8.28.2.352026年12月31日にサポート終了予定
PHP 8.1以前公式の修正なし公式サポート終了。7.4・8.0・8.1向けのバックポート(ソース形式)が一部で提供されているとの報告。PHP 5を含め、影響は2004年頃のバージョンまで遡るとされる。
  • 深刻度:PHP公式の評価はいずれもCVSS v4.0で9.2(Critical)。報道では、NVDがCVSS 3.1で9.8としているとも伝えられています。
  • 古いPHPのまま動いているサイトは多い:あるサイト監視データ(2026年10月20日時点)では、サポート中のブランチ(8.2〜8.5)で動くサイトが77.3%、サポート終了版(8.1以下)が22.7%でした。WordPressサイトは新しめの傾向(82%がサポート中)でした。

暫定緩和策と、それが「応急処置」にすぎない理由

PHP公式は、「更新が唯一の安全な選択」「回避策は一部の攻撃経路を塞ぐだけで、環境を安全にするものではない」と明記しています。以下は、今すぐ更新できない環境が、更新までの間だけ露出を減らすための設定です。

CVE-2026-109618(メモリ枯渇)向け

; PHP-FPM のプール設定 または Apache の設定(アプリ側から上書きされないよう admin 指定)
php_admin_value[memory_limit]   = -1      ; ← FPM
; php_admin_value memory_limit -1         ; ← Apache(mod_php)

; リクエストサイズの上限を下げる(アップロードを使わないサイト: 8M、使うサイト: 32M)
post_max_size       = 8M
upload_max_filesize = 4M                  ; post_max_size より小さく
  • なぜ memory_limit=-1 なのか:問題の引き金は「PHPが自分で決めた上限に達して中断すること」にあるため、その中断経路を通らせないという発想です。ただしこれは可用性のリスクを増やします。必ず次の対策と併用してください。
  • コンテナ/cgroupのメモリ上限を、可用性の境界として設定する(影響を受けたワーカーだけが落ちるようにする)。
  • Webサーバー/リバースプロキシ/WAF側で、デコード後のリクエストサイズ・フィールド数・マルチパートのパート数・ヘッダー数・ネストの深さに上限を設ける。Content-Length のないリクエストも対象にする。マルチパートを使わないサイトは、PHPに届く前に遮断する。
  • 避けるべき設定:RLIMIT_AS / RLIMIT_DATA によるプロセス制限は、まさに脆弱な経路を通らせるため推奨されません。

CVE-2026-109619(古い状態)向け

; php.ini または FPM プール/サーバー設定(リクエスト解析より前に適用される場所で)
session.upload_progress.enabled = 0

; PHP 8.5 のみ
fatal_error_backtraces = 0
  • 設定変更後は、すべてのワーカーを再起動してください。状態は「すでに動いているプロセス」の中にあるため、再起動しないと反映されません。
  • 起動前の警告を出す不正・非推奨のINI設定を取り除く。
  • 攻撃者が到達できる致命的エラーやタイムアウト(コールバック、アップロード/インポート処理、クリーンアップ処理)を修正する。

これらは「穴を一部ふさぐ」だけです

session.upload_progress.enabled=0 は確認済みのセッション経路を塞ぐものであって、CVE-2026-109619の全経路を塞ぐものではありません。WAFも同様に「防御の一層」にすぎません。最終的な解決は、修正版への更新、または更新できないシステムの停止・隔離です。

パッチ適用の手順(Debian/Ubuntu系の例)

以下は一般的な例です。ディストリビューションや提供元リポジトリによって、修正版パッケージが提供されるまでに時間差があります。必ず、ご利用のOS・ホスティング事業者の案内を確認してください。

# 1) 現在のバージョンを確認(「Webが実際に使っているPHP」を確認すること)
php -v                         # CLI(Webと異なる場合あり)
php-fpm8.4 -v                  # FPM(バージョン番号は環境に合わせる)
apachectl -M | grep -i php     # mod_php を使っているか

# 2) 修正版が配布されているか確認
sudo apt-get update
apt-cache policy php8.4-fpm    # Candidate が 8.4.27 以上か

# 3) 導入済みのPHPパッケージを一括更新(設定ファイルは維持)
sudo apt-get install --only-upgrade -y \
  -o Dpkg::Options::="--force-confold" \
  $(dpkg -l 'php8.4*' | awk '/^ii/ {print $2}')

# 4) 常駐プロセスを再起動して反映
sudo systemctl restart php8.4-fpm      # または apache2 など
# キューワーカー等、CLIで常駐しているPHPも再起動する
  • コンテナ環境は、ベースイメージを更新して再ビルド・再デプロイする(コンテナ内の php -v だけを確認しても不十分)。
  • レンタルサーバー・マネージドホスティングは、管理画面で選べるPHPバージョンに修正版が反映されているかをホスティング会社に確認する。修正版が選べない場合は、サポートに問い合わせる。
  • 導入元によっては、OSの自動セキュリティ更新ではPHPが更新されない構成があります(外部リポジトリからPHPを入れている場合など)。「自動更新だから大丈夫」と考えないでください。

侵害されていないかを確認する(検知とIoC)

2026年10月22日時点で、公式に確定したIoC(侵害指標)は公表されていません。以下は、公開分析で示されている「挙動ベースの兆候」です。

  • PHPのワーカー(php-fpm・php-cgi・httpd・apache2)が、sh・bash・cmd.exe・powershell.exe などのシェルを子プロセスとして起動している
  • 通常と異なるマルチパートのリクエストの直後に、HTTP 500 が続く
  • コマンドラインに /dev/tcp/、fsockopen、mkfifo を含む文字列(リバースシェルの典型)
  • 公開ディレクトリ(ドキュメントルート)に見覚えのない .php ファイル(ウェブシェル)が増えている/新しいcronジョブやスケジュールタスクが追加されている
# 直近N日で更新されたPHPファイルの一覧(ドキュメントルートで)
find . -type f -name '*.php' -mtime -7 -printf '%TY-%Tm-%Td %TH:%TM  %p\n' | sort

# PHPワーカーの子プロセスにシェルがいないか
ps -eo pid,ppid,user,cmd --forest | grep -E 'php-fpm|apache2|httpd' -A2 | grep -E 'sh|bash'

# cron の不審な追加
crontab -l; ls -la /etc/cron.d/ /var/spool/cron/ 2>/dev/null

当社の事例から:「見つけたら消す」前に保全する

当社はMF-2026-0812の対応で、ウェブシェルを削除する前に、ファイルシステムのメタデータ・タイムスタンプ・ハッシュ値、223,701行のサーバーアクセスログを保全しました。侵害の疑いがある場合は、自己判断で削除せず、証拠を保全した上で専門家・ホスティング会社・JPCERT/CC等に連絡してください。確認方法は「医療サイトのハッキング確認方法」も参照してください。

当社が実際に受けた攻撃——MF-2026-0812

当社(株式会社Medi Face/医療法人鳳應会グループ)は、2026年8月、PHPウェブシェルを起点とする標的型の攻撃を実際に受けました。今回のPHPの脆弱性が「PHPが動いているサーバーが攻撃の入口・足場になる」という現実を突きつけている今、当事者として何が起き、何を学んだかを記します。

21同時に侵害された
医療系Webサイト
130+悪意あるコードが
注入されたページ
120日攻撃の準備期間
(ドメイン登録から)
48時間全サイトを静的化
するまでの初動

何が起きたのか

日時(JST)出来事
2026-04-04攻撃者が攻撃用ドメインを登録(攻撃の120日前)。翌日にも別ドメインを登録
2026-04-28偽装ランディングページの画像をImgurにアップロード
2026-08-09攻撃ドメインのSSL証明書を更新(攻撃の3日前)
2026-08-12 19:33:27インドネシアのIPが、サーバー上のウェブシェル(fgh.php)を直接起動。サーバー全体が掌握される
2026-08-12 20:24WordPressデータベースへ、賭博サイトに誘導するSchema.org(LD+JSON)コードの注入を開始(ページサイズが約6KBから80KB超へ膨張)
2026-08-13Googleサーチコンソールで検索流入の異常な急増を確認し、被害を検知
2026-08-13〜14JPCERT/CC・警察へ報告。全サイトの静的化を48時間以内に実施
2026-08-26インフラの完全移管を完了(PHP/WordPress依存からの脱却を進める)

攻撃の技術的な特徴

  • PHPウェブシェルによるサーバー全体の掌握:6種類のバックドア(fgh.php ほか)を複数のファイル名・ディレクトリに冗長に設置。
  • LD+JSON注入:ページ上には見えず、検索エンジンのクローラーだけが読む構造化データに賭博サイト名を埋め込み、医療サイトの高い信頼性(YMYL)を悪用。
  • ジオクローキング:日本からのアクセスや調査には無害なページを見せ、検索エンジンやインドネシアのモバイル利用者にだけ違法賭博へ誘導。院長やスタッフが毎日サイトを見ても気づけない設計でした。
  • ブランド偽装:被害法人のブランド名を模したCloudflare Pagesの偽ページを事前に構築し、Googleサーチコンソールにも攻撃者が登録。
  • 二重脅迫の設計:アフィリエイト収益に加え、「被害法人が違法オンラインカジノを運営している」という偽の証拠を永続的に作り込む、脅迫の足場としての側面。
  • 追撃のフィッシング:攻撃の後、ホスティング会社を装うフィッシングメールが41件届きました(認証情報の窃取を狙うもの)。今回のPHPの件でも「緊急アップデート」を装った便乗メールに警戒してください。

PHP2Shellとの関係——断定できること、できないこと

正確に書くために

  • MF-2026-0812の初期侵入経路(ウェブシェルがどのように設置されたか)は、現時点で確定していません。当社の公開レポートも、侵害後の挙動の解析を中心とし、侵入経路は確定情報として扱っていません。
  • よって当社の事案が今回のPHP2Shellによるものだと主張するものではなく、そのような証拠も現時点ではありません。
  • それでも事案が示す本質は共通です。PHPが動く環境にウェブシェルを一度置かれれば、アプリケーション層の対策は意味をなさなくなる。そして今回のPHP2Shellは、まさに「その足場を、認証なしの1リクエストで作り得る」クラスの脆弱性です。

当社が下した判断:PHP/WordPress依存からの脱却

当社は事案の発覚から48時間以内に全サイトを静的サイトへ移行し、8月26日までにインフラの完全移管を終えました。その後も、PHPの残骸を含めて置き換えを進めています。これは費用(当社は事案対応に1万ドル以上を要しました)と手間のかかる判断でしたが、結果として今回のように「PHPそのものに重大な欠陥が見つかる」局面でも、緊急の対応に追われない構造になりました。当社代表の近澤徹は、今回の報道を受けて次のように投稿しています。

Dr. 近澤 徹 株式会社Medi Face 代表取締役 / X 2026年10月22日の投稿より(抜粋)

いろんなところから問合せ来てるなーと思ったら、PHPこんな大問題なってるのか。早めにサイバー攻撃受けておいて良かったほんと。

うちは今年の夏以降、phpの残骸も含め全てリプレイスしています。

「攻撃を受けておいてよかった」という言葉は、被害の重さを軽んじるものではありません。被害に遭った当事者が、同じ経験を他の医療機関にさせたくない——その思いから、当社は事案の詳細を公開しています(技術解析レポート:MF-2026-0812(日本語)/Medi Face Security Research)。

医療機関が今日やるべきこと

クリニックの院長・事務長が、ITの知識がなくても今日できることを、優先度順に整理します。

ステップ1:制作会社・サーバー会社に、この4点を聞く(メールで構いません)

そのまま使える問い合わせ文

お世話になっております。PHPの重大な脆弱性(CVE-2026-109618 / CVE-2026-109619)について、弊院のWebサイトおよび関連システムの状況を教えてください。

  1. 弊院のサイト(および予約・問診・お問い合わせフォーム等の関連システム)は、PHPで動いていますか?
  2. 現在のPHPのバージョンは何ですか?(Webサーバーが実際に使っているバージョンでお願いします)
  3. 修正版(8.5.12 / 8.4.27 / 8.3.36 / 8.2.35)への更新はいつ完了しますか? 完了したらご連絡ください。
  4. 更新が難しい場合の暫定対応(WAF、一時停止、フォーム停止など)はどうなりますか?

ステップ2:「自院のどのシステムがPHPか」を洗い出す

システムPHPの可能性優先度
ホームページ(WordPress等のCMS)高い最優先
予約フォーム・問い合わせフォーム・Web問診高い(自作/外注・CGI系を含む)最優先(個人情報を扱う)
オンライン診療・会員サイト・ブログ・採用サイト中〜高高
電子カルテ・レセコン・院内システム製品により異なる。多くは外部から直接アクセスできない構成ベンダーに確認
院内の古い共有サーバー・勝手に立てた検証サイト見落としがち棚卸しで確認

ステップ3:すぐに更新できない場合は「止める」判断を恐れない

首相の呼びかけにあるとおり、修正の適用が困難なら、サイトを一時的に停止することは有効なリスク低減策です。医療機関では、診療に直結する部分を優先して残し、そうでない部分を止める、という考え方が現実的です。

  • 予約フォーム/問診フォーム:一時停止し、「ただいまメンテナンス中のため、お電話でご予約ください」と案内(電話・LINEなど、PHPに依存しない窓口)。
  • ホームページ本体:アクセス情報・診療時間・電話番号だけの静的な臨時ページに差し替える。
  • 患者さんへの周知:閲覧するだけの患者さんには、何も操作は求められません。「緊急のPHPアップデート」を装うメールやSMSのリンクを開かないよう、院内掲示やLINEで一言添えると安心です。

ステップ4:更新後に確認すること

  • 更新後のバージョンがWebで実際に使われているもので、修正版以上になっていること。
  • PHPのワーカーが再起動されていること(更新しただけで古いプロセスが残っていないか)。
  • 見覚えのないPHPファイル・管理者アカウント・不審なcronがないこと(検知とIoC)。
  • Googleサーチコンソールで、検索流入の異常な増減やセキュリティの問題が出ていないこと(検出方法)。

個人情報が漏えいした可能性がある場合

患者さんの氏名・連絡先・症状などを扱うフォームが侵害された場合、個人情報保護法にもとづく報告・通知が必要になる可能性があります。詳しくは「医療サイトが改ざんされたら個人情報漏洩の報告義務はあるか」、および厚生労働省の指針については「厚生労働省のサイバーセキュリティ指針とクリニックが取るべき対策」を参照してください。

「PHPに依存しない」という選択肢

今回のようにランタイムそのものに欠陥が見つかると、「アプリを最新にする」では間に合いません。根本的な発想の転換として、そもそもPHPを公開サーバーで動かさないという設計があります。

従来:PHP/WordPress(動的) 患者・攻撃者 公開サーバー Webサーバ + PHP実行環境 WordPress + プラグイン データベース/書込可能領域 攻撃面:ランタイム・CMS・プラグイン・DB 静的サイト+エッジ配信 患者・攻撃者 CDN/エッジ 配信するのは「完成したHTML」 実行環境・DBが公開面にない フォーム等は 最小限の別系統で処理
図2 動的サイト(PHP)と静的サイト+エッジ配信の、攻撃面の違い(概念図)。
観点PHP/WordPress(動的)静的サイト+エッジ配信
公開面で動くコードPHPランタイム、CMS本体、プラグイン基本的にHTML/CSS/画像のみ
ランタイムの脆弱性(今回)直撃する公開面にPHPがなく、直接の影響を受けない
ウェブシェルの設置書込可能領域・アップロード経由で成立し得る書込可能なPHP実行領域がなく、成立しにくい
改ざんの検知ファイル・DBの両方を監視する必要配信物(ビルド成果物)の差分で管理しやすい
更新作業の緊急度PHP・CMS・プラグインを常に追う必要公開サーバー側で追う対象が大幅に少ない
弱み更新・運用負荷が常に発生フォーム・予約など動的機能は別設計が必要。ビルド環境や外部サービスの管理も新たな責任に

静的化は万能ではありません。予約・問診・お問い合わせなど動的な機能は別の安全な仕組みで受ける設計が必要で、ビルドやデプロイの環境、DNS、外部サービスの認証情報という新しい守る対象も生まれます。それでも、「公開サーバーでPHPを動かさない」ことで、今回のようなランタイム級の脆弱性に直撃されないという構造上の利点は、医療機関にとって大きな選択肢です。当社がMF-2026-0812の後に選んだのも、この道でした。

よくある質問

PHP2Shell(CVE-2026-109618/CVE-2026-109619)とは何ですか?

2026年10月21日にPHP公式が修正版を公開した、PHPのランタイムにある2件の重大な脆弱性の通称です。いずれも認証なしでリモートコード実行(RCE)につながり得るとされ、CVSS v4.0で9.2(Critical)と評価されています。1件はメモリ枯渇時の内部状態の破損(CVE-2026-109618)、もう1件はリクエスト終了後に残った古い状態の再利用(CVE-2026-109619)です。

自院のホームページがPHPかどうか、どうすれば分かりますか?

最も確実なのは、ホームページを作成・保守している制作会社、またはサーバー会社に「PHPで動いていますか? バージョンは?」と聞くことです。WordPressで作られたサイトは、ほぼすべてPHPで動いています。

WordPressを使っていなければ、影響はありませんか?

いいえ。PHPで動いているものはすべて対象です。WordPress以外のCMS、自作の予約・問診・お問い合わせフォーム、会員サイト、古い共有サーバー上のシステムなども含まれます。

ホームページを見るだけの患者は、何か対応が必要ですか?

必要ありません。対応が必要なのは、PHPが動くサーバーを運営する側です。ただし、「PHPの緊急アップデートはこちら」といった便乗メール・SMSのリンクは開かないでください。

WordPress本体やプラグインを最新にすれば防げますか?

防げません。脆弱性はWordPressではなくPHPのランタイムにあるため、CMSやプラグインの更新、セキュリティプラグインでは対処できません。PHP自体を修正版に更新する必要があります。

今夜中に更新できない場合はどうすればよいですか?

首相の呼びかけにあるとおり、サイトの一時停止はリスクを減らす有効な手段です。予約フォームなどは停止して電話受付に切り替え、ホームページは連絡先だけの臨時ページに差し替える方法が現実的です。暫定の設定緩和策やWAFは「一部の経路を塞ぐ」だけなので、更新までのつなぎと考えてください。

PHP 7系や8.1以前を使っています。どうなりますか?

PHP 8.1以前には公式の修正が提供されません。サポート中のバージョン(8.2〜8.5の修正版)への移行が原則です。移行が難しい場合は、ディストリビューション提供のバックポートを確認するか、該当システムの公開停止・隔離を検討してください。

侵害された疑いがある場合、最初に何をすべきですか?

自己判断でファイルを削除せず、まず証拠(ログ・ファイルのタイムスタンプ等)を保全し、ホスティング会社・制作会社・専門家に連絡してください。JPCERT/CCへの報告や、警察(サイバー犯罪相談窓口 #9110)への相談も有効です。患者さんの個人情報が関わる場合は、個人情報保護法にもとづく対応が必要になる可能性があります。

静的サイトにすれば安全ですか?

公開サーバーでPHPを動かさないため、今回のようなPHPランタイムの脆弱性の直接の影響は避けられます。ただし万能ではなく、フォームなど動的機能の設計、ビルド環境やDNS・認証情報の管理など、別の責任が生じます。

この問題について、Medi Faceに相談できますか?

当社は自社が受けた攻撃の知見を、同様の被害に遭う医療機関を減らす目的で公開しています。情報提供・ご相談は info@medi-face.co.jp までお寄せください(参照番号:MF-2026-0812)。

一次情報・参考資料

※本記事は2026年10月22日時点の公開情報にもとづく一般的な情報提供であり、個別の環境における安全性を保証するものではありません。悪用状況・パッケージの提供状況は刻々と変わります。最新の情報はPHP公式・ご利用のOS/ホスティング事業者の案内をご確認ください。技術的な誤りやご指摘は info@medi-face.co.jp までお知らせください。