PHP2shellとは?2つの重大な脆弱性がサーバーを危険にさらす仕組み
- 2026.10.22
- 2.AI・ロボット分野
- PHP セキュリティ, PHP 脆弱性, PHP2shell, メモリ破損, リモートコード実行
●結論
PHP2shellで問題となったのは、PHPの内部処理に存在した2つの重大な脆弱性です。メモリ不足時の処理や、解放済みメモリの扱いに不具合があると、プログラムが想定していない動作につながり、条件によってはサーバー上で不正なコードを実行される危険があります。PHPの開発チームは修正版を公開しており、対象となる環境では、利用中のバージョンを確認して適切に更新することが重要です。
●この記事でわかること
– PHP2shellとは何か、なぜ重大な脆弱性として注目されたのか
– CVE-2026-109618とCVE-2026-109619の違い
– メモリ不足やuse-after-freeが起こる仕組み
– プログラム内部の不具合がサーバー上でのコード実行につながる理由
– 影響を受ける可能性がある環境と、必要なセキュリティ対策
PHP2shellとは?PHPで見つかった2つの重大な脆弱性

PHP2shellとは、プログラミング言語PHPで発見された、2つの重大なセキュリティ脆弱性を指す呼び名です。2026年10月21日、PHPの開発チームは、この問題を修正するセキュリティアップデートを公開しました。
今回の問題で特に注意が必要なのは、条件によっては、ログインしていない攻撃者が遠隔からサーバー上で任意のコードを実行できる可能性があることです。攻撃者がサーバーに侵入してから操作するのではなく、外部から送信した細工されたHTTPリクエストをきっかけに、PHPの内部処理で問題が発生するおそれがあります。
PHPの公式サイトでは、PHPを使ってWebリクエストを処理する環境に対して、速やかなアップデートを強く推奨しています。特に、Apacheのmod_phpを利用する環境では、アプリケーションのプログラムが動き始める前に攻撃が成立する可能性が確認されています。
今回の問題は、Webサイトの見た目や機能に不具合が出るだけのものではありません。サーバー上で動作するプログラムや、サーバーが扱うデータの安全性に関係する重大な問題です。
PHPの脆弱性について、まずは基本から知りたい方はこちら。
PHPとは?Webサイトを動かすプログラミング言語
PHPは、主にWebサイトやWebアプリケーションの開発に使われるプログラミング言語です。
例えば、Webサイトでログインしたユーザーに応じて表示内容を変えたり、フォームから送信された情報を処理したり、データベースと連携してページを生成したりする場面で利用されます。
WordPressをはじめとするCMS(コンテンツ管理システム)にもPHPが使われています。CMSとは、専門的なプログラミング知識がなくても、Webサイトの記事やページを管理しやすくする仕組みです。
PHPは、Webサイトの画面に表示される文章や画像だけでなく、リクエストを受け取って処理するサーバー側の動作にも関わっています。そのため、PHP自体に重大な脆弱性が見つかると、PHPを利用するWebサービスの安全性に影響する可能性があります。
今回の脆弱性は何が危険なのか
PHP2shellでは、次の2つの脆弱性が問題となりました。
| 項目 | 内容 |
|---|---|
| 脆弱性1 | CVE-2026-109618 |
| 原因 | メモリ不足が発生した際、内部データの処理が不完全な状態になる問題 |
| 脆弱性2 | CVE-2026-109619 |
| 原因 | エラー後に、すでに解放されたメモリを参照する問題 |
| 主なリスク | 条件によって、遠隔からのコード実行や情報漏えいなどにつながる可能性がある |
| 修正版の公開日 | 2026年10月21日 |
2つの脆弱性は、どちらもPHPがメモリを扱う処理に関係しています。ただし、不具合が発生するタイミングや原因は同じではありません。
ここから、それぞれの仕組みを順番に見ていきます。
1つ目の脆弱性:メモリ不足で内部データが不完全になる

1つ目の脆弱性は、CVE-2026-109618として識別されています。PHPがメモリ不足に陥った際の処理に問題があり、内部データが正しく初期化されていない状態で、後続の処理に使われる可能性があります。
この問題を理解するために、まずはメモリの役割を確認しましょう。
プログラムにとってメモリは作業スペース
コンピューターのメモリは、プログラムが処理中のデータなどを一時的に置いておくための作業スペースです。
例えば、Webサイトのフォームから送信された情報を処理するとき、プログラムはその内容を読み取り、必要なデータをメモリ上に保持しながら処理を進めます。
メモリには限りがあります。プログラムが利用できるメモリの上限に達すると、新しいデータを確保できず、処理を続けられなくなる場合があります。これがメモリ不足です。
通常、プログラムはメモリを確保できなかった場合に、エラーを処理し、安全に処理を終了させる必要があります。
問題は、エラーが起きた後の処理にある
今回の脆弱性では、メモリ不足が発生したとき、PHPが内部データの準備を完了できないまま処理を中断することがあります。その後の終了処理が、不完全な状態で残ったデータを正常なものとして扱う可能性があるのです。
例えるなら、必要な書類をすべてそろえる前に作業が中断されたのに、後片付けを担当する人が「書類はすべてそろっている」と思い込んで処理を進めるような状態です。
本来なら、準備が終わっていないデータを使ってはいけません。しかし、プログラムがその状態を正しく管理できないと、想定外の動作につながります。
攻撃者は、細工したHTTPリクエストなどを送信し、PHPのメモリ不足が発生する状況を狙うことがあります。特定の条件がそろうと、内部データの不整合を悪用され、サーバー上でコードを実行される可能性があります。
ただし、メモリ不足が起きれば必ず攻撃が成功するわけではありません。実際に悪用が成立するかどうかは、PHPのバージョンや実行環境、処理の条件などに左右されます。
なぜメモリ不足がセキュリティ問題になるのか
メモリ不足そのものは、プログラムを開発・運用するうえで起こり得るエラーです。問題なのは、エラー発生時にプログラムが安全な状態を保てるかどうかです。
エラーが起きた後に内部データの状態が正しく管理されなければ、プログラムが予期しない場所を参照したり、想定していない処理を実行したりする可能性があります。
つまり、今回の問題は単に「サーバーのメモリが足りなくなる」という話ではありません。メモリ不足をきっかけとして、PHP内部のデータ管理が不適切な状態になり、それを悪用される危険があるという点が重要です。
2つ目の脆弱性:解放済みのメモリを参照してしまう
2つ目の脆弱性は、CVE-2026-109619として識別されています。こちらは、致命的なエラーが発生した後の内部状態の管理に問題があり、すでに解放されたメモリを後続の処理で参照してしまう可能性があるものです。
このような問題は、一般に「use-after-free(ユース・アフター・フリー)」と呼ばれます。
メモリは使い終わったら解放する
プログラムは、処理に必要なデータをメモリに置き、使い終わったメモリを解放することで、限られた資源を効率よく利用します。
例えば、ホテルの客室を考えてみましょう。宿泊客がチェックアウトしたら、その部屋は次の利用者のために空けられます。以前の宿泊客が使っていた部屋の情報を、そのまま次の宿泊客の情報として扱ってはいけません。
メモリも同様です。解放された領域は、別のデータのために再利用される可能性があります。プログラムが解放済みのメモリを引き続き参照すると、以前とは異なるデータを読み取ったり、不正な動作を引き起こしたりするおそれがあります。
エラー後に古い参照が残るとどうなるのか
今回の脆弱性では、リクエストの処理中に致命的なエラーが発生した際、PHP内部の状態が正しくリセットされず、すでに解放されたメモリへの参照が残る可能性があります。
その後、同じPHPプロセスが別のリクエストを処理するときに、古い参照を使って無効なメモリ領域にアクセスしてしまうことがあります。
プロセスとは、実行中のプログラムのことです。Webサーバーでは、効率よくリクエストを処理するため、プロセスが複数のリクエストを順番に処理する構成があります。
そのため、あるリクエストで発生した問題が、後のリクエストの処理に影響する可能性があります。
解放済みのメモリへのアクセスは、プログラムのクラッシュや情報漏えいにつながる場合があります。条件によっては、攻撃者がその状態を悪用し、コード実行を狙うことも可能になります。
2つの脆弱性の違い
2つの脆弱性は、どちらもメモリ管理の不具合に関係しますが、問題が起きる仕組みは異なります。
| 比較項目 | CVE-2026-109618 | CVE-2026-109619 |
|---|---|---|
| 主な原因 | メモリ不足時の不完全な初期化 | 解放済みメモリへの参照が残る |
| 問題が起きる場面 | メモリ確保に失敗した後の処理 | 致命的なエラーが発生した後の処理 |
| 内部で起きること | 不完全なデータを正常なものとして扱う可能性がある | 無効になったメモリを参照する可能性がある |
| 考えられる影響 | クラッシュやコード実行など | 情報漏えいやクラッシュ、コード実行など |
どちらも、エラーが発生した際に内部状態を安全に保てないことが根本的な問題です。通常の処理がうまくいく場合だけでなく、途中で失敗した場合にも、プログラムが安全に終了できる設計が必要になります。
なぜPHPの脆弱性がサーバー上でのコード実行につながるのか
PHP2shellが重大とされる理由の一つは、特定の条件下で、攻撃者がサーバー上で任意のコードを実行できる可能性があることです。これは「リモートコード実行(RCE:Remote Code Execution)」と呼ばれます。
リモートコード実行とは
リモートコード実行とは、攻撃者が離れた場所から対象のコンピューターに働きかけ、意図しないプログラムや命令を実行させることです。
例えば、Webサーバーでコード実行を許してしまうと、サーバーの設定や実行権限によっては、ファイルの読み取りや変更、外部との通信、別のプログラムの起動などにつながる可能性があります。
ただし、実際にどこまで操作できるかは、サーバー上でPHPがどのような権限で動いているか、どのような制限が設けられているかなどによって異なります。脆弱性が存在するからといって、必ずサーバー全体を自由に操作されるわけではありません。
ログイン画面やアプリケーションの不備だけが原因ではない
Webサイトのセキュリティ対策では、ログイン画面の保護や入力値のチェックなど、アプリケーション側の対策が重視されます。
しかし、PHP2shellのようにPHP本体の処理に問題がある場合、アプリケーションがリクエストを受け取って処理を始める前に、脆弱性が悪用される可能性があります。
そのため、ログインを必須にしているWebサイトであっても、アプリケーション側の認証だけでは十分な防御にならない場合があります。
これは、Webサイトのプログラムを修正するだけでは解決できない可能性があるということです。実際に動作しているPHP本体を、修正済みのバージョンへ更新する必要があります。
すべてのPHP環境で同じ危険度なのか
PHP2shellのリスクは、PHPの実行環境によって異なります。PHPの公式情報では、Webリクエストを処理するPHP環境が対象として示されており、Apacheのmod_phpでは、アプリケーションコードの実行前に攻撃が成立する可能性が確認されています。
一方、PHP-FPMやphp-cgiなど、ほかの構成も対象になり得ます。PHPを使っている場合は、「自分のサイトはWordPressだから」「ログインが必要なサイトだから」といった理由だけで安全と判断しないことが重要です。
なお、PHPのバージョンや構成によって影響の有無や悪用条件は異なるため、公式のセキュリティ情報と利用環境を照らし合わせて確認してください。
PHP2shellの影響を受ける環境と修正版
PHPの開発チームは、2026年10月21日に2つの脆弱性を修正するバージョンを公開しました。PHPの公式サイトは、対象となる利用者に対して速やかな更新を強く推奨しています。
修正版として公開されたバージョンは、次のとおりです。
| PHPの系列 | 修正版 |
|---|---|
| PHP 8.5系 | 8.5.12 |
| PHP 8.4系 | 8.4.27 |
| PHP 8.3系 | 8.3.36 |
| PHP 8.2系 | 8.2.35 |
上記は2026年10月21日に公開された修正版です。更新時には、PHP公式サイトで最新のセキュリティ情報を確認してください。
PHP 8.1以前など、サポートが終了したバージョンを使っている場合は注意が必要です。サポート終了後のバージョンでは、通常のセキュリティ修正が提供されないことがあります。修正版が提供されるサポート対象のバージョンへの移行も検討しましょう。
WordPressを使っている場合も確認が必要
WordPressなど、PHPを利用するCMSを使っている場合も、実際にサーバーで動作しているPHPのバージョンを確認する必要があります。
WordPress本体やプラグインを更新しても、サーバー上のPHP自体が修正済みのバージョンに変わるとは限りません。CMSの更新とPHP本体の更新は、別々に確認する必要があります。
レンタルサーバーを利用している場合は、管理画面でPHPのバージョンを確認できることがあります。ただし、利用中のサービスや契約内容によって、操作方法や更新できるバージョンは異なります。
PHP2shellに対して必要なセキュリティ対策

今回の脆弱性への対策で最も重要なのは、修正済みのPHPへ更新することです。PHPの公式情報では、完全な対策としてアップデートが必要であり、設定変更などの代替策だけでは十分ではないとされています。
1. PHPのバージョンを確認する
まず、Webサイトやアプリケーションが実際に使用しているPHPのバージョンを確認します。
確認する場所は、サーバーの管理画面、コマンドライン、運用管理ツールなどです。環境によっては、管理画面に表示されるPHPのバージョンと、実際にWebリクエストを処理しているPHPのバージョンが異なる場合もあるため、運用環境を確認することが重要です。
2. 修正版へ更新する
対象となる環境では、利用しているPHPの系列に応じた修正版へ更新します。更新方法は、サーバーの構成や契約しているサービスによって異なります。
レンタルサーバーの場合は、提供事業者の案内に従ってPHPのバージョンを変更します。自社でサーバーを管理している場合は、事前に影響を確認し、必要な手順に沿って更新してください。
更新後は、Webサイトの表示や主要な機能が正常に動作するかも確認します。
3. サーバーの設定やログを確認する
アップデートとあわせて、不審なアクセスや予期しないプロセスの起動がなかったかを確認することも重要です。
例えば、普段とは異なる大量のHTTPリクエスト、メモリ不足に関連するエラー、予期しないシェルプロセスの起動などは、調査対象となる兆候です。ただし、こうした記録があれば必ず攻撃を受けたというわけではありません。通常のアクセスや運用上のエラーとの違いを調べる必要があります。
更新前に不審な挙動が確認された場合は、ログの保全や影響範囲の調査を行い、必要に応じて専門家やサーバー管理事業者に相談しましょう。
4. WAFなどの防御策だけに頼らない
WAF(Web Application Firewall)は、Webアプリケーションへの通信を監視し、不審なリクエストなどを検知・遮断するための仕組みです。PHP2shellについても、通信を防御するルールが提供された例があります。
ただし、WAFなどの防御策は、修正版への更新の代わりにはなりません。設定や検知ルールによって防げる通信には限界があり、すべての攻撃を確実に遮断できるとは限らないためです。
不要な機能やアップロードを制限することもリスク低減につながりますが、根本的な対策はPHP本体を修正済みのバージョンへ更新することです。
5. 更新できない場合は管理事業者へ相談する
自分でサーバーを管理していない場合、PHPの更新を利用者側で実施できないことがあります。その場合は、レンタルサーバーやクラウドサービスの提供事業者に、利用中のPHPが修正済みかどうかを確認しましょう。
更新作業がすぐにできない場合でも、対応を先送りにせず、提供事業者の案内に従って必要な措置を進めることが大切です。
PHP2shellから学ぶソフトウェアセキュリティの重要性
PHP2shellの問題は、プログラムのセキュリティが、入力値のチェックやログイン画面の保護だけで決まるわけではないことを示しています。
ソフトウェアは、通常どおり処理できる場合だけでなく、メモリ不足やエラーなど、想定外の状況でも安全に動作しなければなりません。今回の脆弱性は、エラー発生時の内部データの扱いが、重大なセキュリティ問題につながり得ることを示す事例です。
プログラムの「異常時の処理」も重要
プログラミングでは、期待どおりに動く処理を書くことに加えて、エラーが発生した場合にどのように対応するかを考える必要があります。
例えば、入力されたデータが不正だった場合、メモリを確保できなかった場合、外部サービスとの通信が失敗した場合など、プログラムが正常に進まない状況はさまざまです。
こうしたときに、処理を安全に中断し、内部データを正しい状態に保ち、不要になったメモリを適切に解放できるかどうかが、ソフトウェアの信頼性に関わります。
AI・IT分野では安全性を考える力も求められる
AIやITの技術は、便利なサービスを開発するためだけに使われるものではありません。情報を安全に扱い、システムを安定して動かし、トラブルが起きたときに原因を調査して解決するためにも必要です。
プログラミング、ネットワーク、OS、データ管理、セキュリティなどの知識は、互いにつながっています。PHP2shellのような事例を通して、プログラムの内部で何が起きているのか、なぜその問題が危険なのかを理解することは、IT技術を学ぶうえでも重要です。
PHP2shellについてよくある質問
PHP2shellとは何ですか?
PHPで見つかった2つの重大な脆弱性を指す呼び名です。CVE-2026-109618とCVE-2026-109619として識別されており、特定の条件下では、遠隔からのコード実行につながる可能性があります。
PHP2shellは、Webサイトを閲覧するだけで被害に遭いますか?
脆弱なPHP環境がWebリクエストを処理している場合、攻撃者が細工したリクエストを送ることで問題が発生する可能性があります。一般の利用者がWebサイトを閲覧しただけで必ず被害に遭うという意味ではありませんが、Webサイトの管理者は利用中のPHP環境を確認する必要があります。
WordPressを更新すればPHP2shellへの対策になりますか?
WordPress本体やプラグインを更新するだけでは、PHP本体の脆弱性が修正されるとは限りません。サーバーで動作しているPHPのバージョンを確認し、修正版へ更新する必要があります。
PHP2shellへの対策で最も重要なことは何ですか?
PHP公式が公開した修正版へ更新することです。WAFやアクセス制限などの対策はリスク低減に役立つ場合がありますが、PHP本体の更新に代わるものではありません。
古いPHPを使い続けている場合はどうすればよいですか?
利用中のPHPのバージョンとサポート状況を確認し、サポート対象の修正版へ移行することを検討してください。サポートが終了したバージョンでは、今後の脆弱性に対する修正が提供されない場合があります。更新方法がわからない場合は、サーバー管理事業者に相談しましょう。
まとめ
PHP2shellは、PHPの内部処理に存在した2つの重大な脆弱性です。1つはメモリ不足時に内部データが不完全な状態になる問題、もう1つは解放済みのメモリを参照してしまう問題です。どちらも、特定の条件下ではサーバー上でのコード実行などにつながる可能性があります。
PHPの開発チームは2026年10月21日に修正版を公開しており、PHPを利用するWebサイトやサービスの管理者は、利用中のバージョンを確認し、適切に更新することが重要です。アプリケーションの修正やWAFの導入だけで安心せず、実際に動作しているPHP本体を確認しましょう。
ソフトウェアの脆弱性は、プログラムが正常に動作しているときだけでなく、エラーが起きたときの処理にも潜んでいます。仕組みを理解し、適切な更新や運用を続けることが、Webサービスを安全に利用するための基本です。
参考情報
– PHP公式サイト:セキュリティ更新と修正版の情報
– The PHP Foundation「Today’s PHP Security Release, and How We’re Strengthening PHP Security」:今回の脆弱性と修正に関する解説
– PHP公式GitHubセキュリティアドバイザリ「RCE via OOM corruption」:メモリ不足の処理に関連する脆弱性の技術情報
– Cloudflare「Cloudflare deploys protections against php2shell vulnerability」:PHP2shellへの攻撃と防御策に関する情報
– Google Cloud「Responding to core PHP vulnerabilities CVE-2026-109618 and CVE-2026-109619」:脆弱性の影響と対応方法
PHP2shellのような脆弱性への対策では、Webサイトのプログラムだけでなく、その土台となる実行環境の管理も重要です。AI・IT分野を学ぶ際は、プログラミングの知識に加え、ネットワークやセキュリティ、システムを安全に運用する考え方も身につけていきましょう。
日本工科大学校について
今回のPHP2shellのような脆弱性は、Webサイトやアプリケーションを安全に動かすために、プログラミングだけでなく、システムの仕組みや情報セキュリティについて理解することも重要だと教えてくれます。
AI・IT分野では、新しい技術を使いこなす力に加え、システムの問題を発見し、安全に運用するための知識も求められます。
日本工科大学校のAI工学部では、プログラミングやシステム開発をはじめ、AI・IT・ロボット分野の技術を基礎から学ぶことができます。AIやプログラミングに興味がある方、IT技術をより深く学びたい方は、ぜひ学科の紹介ページをご覧ください。
AI・ロボット分野について詳しく知りたい方はこちら
▶ AI工学部学部ページ
パンフレットなどの資料請求はこちら
▶ 資料請求フォーム
学校の雰囲気を実際に体験したい方はこちら
▶ オープンキャンパス
入試や学校生活について気軽に相談したい方はこちら
▶ LINE登録
本記事は、日本工科大学校が運営する情報発信コンテンツとして制作しています。
AI・IT・ロボット分野を中心に、学生・高校生・保護者の皆さまへ向けて、技術や業界動向、分野にまつわる身近な疑問について分かりやすく解説しています。
掲載内容は公開時点の情報に基づいており、技術の進展や制度変更などに応じて更新する場合があります。
-
10月21日23時に何が起きた?PHPの脆弱性と影響を初心者向けに解説 2026.10.22
-
次の記事
記事がありません






