体験申込で

Amazonギフト

カードもらえる

体験申込・無料相談

News

お知らせ

PHP2shellとは?RCEと欠陥2種類でわかる危険度

コラム  

インターネットのニュースで「重大な脆弱性が見つかった」という話題を目にすると、自分たちの使っているスマートフォンやパソコンにどんな危険があるのか、不安に感じる場面があるかもしれません。2026年10月、Webサイトの裏側で広く使われているプログラミング言語「PHP」において、「PHP2shell」と呼ばれる深刻な欠陥が公表されました。専門用語が並ぶセキュリティの話題ですが、仕組みを一段ずつ分解していくと、何が起きていて何に注意すべきかが落ち着いて見えてきます。

PHP2shellとは(2026年10月に公表されたPHPの脆弱性)

今回の問題となっている脆弱性は、正式には「CVE-2026-109618」および「CVE-2026-109619」という2つの識別番号で管理されています。IPA(独立行政法人情報処理推進機構)は2026年10月22日、これらの脆弱性について最新版へのアップデートを呼びかけました。注意喚起の中で「PHP2shell」という通称が用いられていますが、これは正式な規格名ではありません。

PHP公式のセキュリティリリースでは、2026年10月21日付で修正版となるPHP 8.2.35、8.3.36、8.4.27、8.5.12が公開されました。欠陥の仕組みを理解するためには、まずPHPという技術がインターネットのどこで働いているのかを整理しておく必要があります。

PHPはどこで働いているのか(PHP本体とWebアプリ、ブラウザーの役割)

Webサイトを表示する通信の裏側では、大きく分けて3つの要素が異なる役割を担っています。

1つ目は、閲覧者が手元で操作しているパソコンやスマートフォン上で動く「ブラウザー」です。2つ目は、ブログや予約システムなどの具体的な機能を管理画面とともに提供する「Webアプリケーション」(WordPressなど)です。そして3つ目が、そのWebアプリケーションのプログラムを実際に解釈して動かす土台となる「PHPの処理系(PHP本体)」です。

ブラウザーは画面を描画して利用者に情報を届ける独立したソフトウェアであり、サーバー側で動くPHPとは動作する場所が異なります。PHPはWebサーバー側で動作し、PHP-FPMやApacheのmod_php、php-cgiといった仕組みを通じて、外部から届く通信のリクエストを処理します。

ソフトウェア動作する場所今回の欠陥
ブラウザー利用者の手元端末なし
WebアプリWebサーバー上なし
PHP処理系Webサーバー上あり(未更新時)

表に整理したとおり、ブラウザーやWebアプリケーション自体に今回の欠陥が存在するわけではありません。影響を受けるのは、土台としてWebリクエストを処理しているPHP本体です。Webリクエストを処理するすべてのPHP環境が更新の対象となります。

サーバー側のPHP、Webアプリ、ブラウザーの3層を重ね、サーバー層だけを警告マークで強調した図

PHPエンジン内部にあった2つのメモリ管理の欠陥

公表された2件の脆弱性は、いずれもPHPがコンピューターの記憶領域(メモリ)を扱う処理の中に潜んでいたものです。それぞれ異なる仕組みによって発生します。

1つ目のCVE-2026-109618の公式アドバイザリに記載された欠陥は、メモリ不足(OOM)が発生した際の処理にあります。メモリ不足が生じてlongjmp()関数で処理を中断する過程で、リクエスト用のメモリ領域が初期化されないまま残ってしまいます。その結果、リクエストの終了処理が未初期化のメモリを不正に読み書きしてしまう状態が生まれます。

2つ目のCVE-2026-109619の公式アドバイザリに記載された欠陥は、状態の管理にあります。エラー処理やセッション情報などの大域的な状態が、すでに解放されたメモリ領域を指したまま残ってしまう現象です。同じ処理を受け持つプロセス(ワーカー)が次のリクエストを処理する際、解放済みのメモリ領域を誤って参照して再利用する「use-after-free」と呼ばれる不具合が生じます。

どちらもプログラムの実行中にメモリ領域を安全に管理しきれなかったことに起因する欠陥です。

未初期化メモリが終了処理に触れる左パネルと、解放済みメモリが再利用される右パネルを分けて示した図

RCE(遠隔コード実行)とは何か。今回の2件で何が問題なのか

セキュリティ分野で用いられる「RCE」は、Remote Code Execution(遠隔コード実行)の略称です。ネットワークを経由して外部から対象のコンピューターへ命令を送り、任意のプログラムを実行させてしまう危険な状態を指します。

一般的なRCEの脆弱性には、管理画面にログインできる正当な権限を持つ攻撃者だけが悪用できるものや、利用者の特定のクリック操作を前提とするものも含まれます。つまり「RCE」という用語そのものが、無条件に外部から侵入できる状態を指すわけではありません。

しかし、今回の2件には重大な特徴があります。攻撃者がサービスのアカウントを持たず、特別な権限を一切持たない未認証の状態であっても、ネットワーク経由で成立する性質を持っている点です。公式アドバイザリにも、権限が不要である点(Privileges Required: None)や利用者の関与が不要である点(User Interaction: None)が明記されています。

認証不要(ログイン不要)で遠隔からコードを実行され得るという性質を持っていたことが、今回の欠陥が警戒を集めた大きな理由です。

鍵がある場合とない場合でネットワークからサーバーへの到達を比較した図

更新するとなぜ直るのか

なぜ修正版を適用するだけで、遠隔からの攻撃を防ぐことができるのでしょうか。

PHP開発チームが公開した修正版(PHP 8.2.35、8.3.36、8.4.27、8.5.12)では、プログラム内部のメモリ管理手順が見直され、メモリの初期化や解放処理が正しく行われるよう修正されたからです。

この変更によって、今回特定された未初期化メモリの不正な読み書きや、解放済みメモリの再利用を防げます。

なお、サーバー向けのOS環境などでは、PHPの見かけのバージョン表記が更新されていないように見えても、システムの提供元が修正内容だけを取り込んで適用する「バックポート」を行っている場合があります。そのため、修正が適用されているかどうかは、PHPの表面的なバージョン番号だけで判断せず、OSやディストリビューション提供元のセキュリティ告知やパッケージ更新番号で確認することが大切です。これはPHP 8.2以降の環境でも同様です。

ひび割れた箱が、ひび割れの無い新しい箱に入れ替わる様子を示すイラスト

この脆弱性は自分や家族のパソコン・スマホに直接関係あるのか

Webサイトを閲覧している利用者の手元にある端末に、この欠陥が直接関係するのかという点も気になるところです。

今回の脆弱性が存在するのは、外部からのWebリクエストを受け付けて処理しているサーバー側のPHP環境です。パソコンやスマートフォンのブラウザー自体に今回の欠陥が含まれているわけではありません。

また、家庭内でプログラミング学習などを目的に、パソコン上で外部からのWebリクエストを受け付けるPHP環境を動かしている場合も、対象になり得ます。

手元の端末のブラウザーに今回の欠陥が含まれていないとしても、利用しているWebサービスが不正アクセスを受けた場合には、預けているデータに影響が及ぶ可能性は否定できません。セキュリティへの不安を感じたときの心構えについては、個人情報流出が不安なときに|家庭の対策と相談先でも基本的な考え方を解説しています。脆弱性が公表されたことと実際の被害が起きたことは別であり、まずは利用先サービスからの公式な案内に目を配ることが大切です。

警告マークの付いたサーバーと家庭用PCの点線枠、警告の無いスマートフォンを左右に分けた図

よくある質問

Q. コマンドラインだけで実行するPHPスクリプトも、今回の脆弱性の影響を受けますか。

A. 影響を受けるのは主にWebリクエストを処理するPHP環境です。PHP公式の発表では、PHP-FPMやApacheのmod_php、php-cgiなど、Webサーバー経由で外部からの入力を処理する仕組みが対象とされています。外部からの通信を直接受け付けない単独スクリプトの実行とは影響の範囲が異なります。

Q. サービスが一時的に停止している場合、すでに個人情報が漏えいしたと考えるべきですか。

A. サービスの停止が直ちに情報の漏えいを意味するわけではありません。

Q. PHPの設定変更だけで今回の脆弱性を回避することはできますか。

A. 提供されている修正版(8.2.35、8.3.36、8.4.27、8.5.12)への更新が、公式に示されている修正方法です。設定変更による回避策については、今回確認した公式資料の範囲では示されていません。

まとめ

2026年10月に公表された「PHP2shell」(CVE-2026-109618およびCVE-2026-109619)は、Webリクエストを処理するPHP本体に存在した2つのメモリ管理の欠陥です。メモリ不足時に未初期化メモリを不正に読み書きしてしまう問題と、解放済みメモリを誤って再利用してしまうuse-after-freeの問題が、それぞれ独立して発見されました。

修正版となるPHP 8.2.35、8.3.36、8.4.27、8.5.12への更新、あるいは提供元のパッケージ更新を適用することで、今回特定されたメモリ処理の欠陥を解消できます。

ブラウザー自体に欠陥があるわけではありませんが、私たちが利用するWebサービスの安全を守るためには、土台となるプログラムの仕組みを正しく知ることが欠かせません。



あわせて読みたい

参考資料

コラム