PHPの重大脆弱性「PHP2シェル」は何が危険なのか──AgenticSec中谷翔CEOが語る仕組み、影響、AIによる発見

YouTubeで開く ↗
概要

2026年10月22日、テレ東BIZは緊急ライブ配信を行った。テーマは、世界のウェブサイトのおよそ7割で使われるプログラミング言語PHPに見つかった、深刻度が最高レベルの脆弱性である。番組の説明では、国内でもメガバンク、各企業、行政のシステムが相次いで停止や一時停止に追い込まれていた。

14分で読めます

ゲストはAgenticSec代表取締役CEOの中谷翔氏で、聞き手はテレ東BIZの鵜飼祥氏が務めた。中谷氏は普段は同番組でAI分野の解説を担当している。ただ、AIが話題になる前からセキュリティ技術に取り組み、セキュリティコンテストで上位に入ることもあるという。そうしたコンテストでは今回のようなPHPへの攻撃を技術的に再現する課題も出るため、今回の事案は技術面から関心を持って見ていたと語った。中谷氏の評価は明確で、言語そのものの脆弱性であり、任意コード実行まで可能で、しかも修正前に攻撃方法が漏れたことから、セキュリティ担当者にとって「悪夢のような事態」だという。

2:52

第一報から「かなりやばい」と判断した理由

前日の朝に第一報が流れた時点で、中谷氏は深刻度が極めて高いと受け止めた。根拠として挙げたのはWordPressである。WordPressはブログやホームページを作るCMS(コンテンツ管理システム)のひとつで、PHPで作られた代表的なアプリケーションだ。PHPに脆弱性があれば、WordPressで配信しているウェブサイトにも脆弱性があることになり、影響を受けるサイトは非常に多くなる。

朝の段階では状況がはっきりしなかった。昼ごろになると、修正プログラムがまだ出ていないのに攻撃方法が出回っていることが分かってきた。中谷氏はこの時点で事態の重さを確信したという。

4:04

PHPとはどんな言語で、なぜ7割も使われているのか

PHPについて、聞き手は「最近はPythonやRが有名で、PHPは結構古い言語」と紹介した。中谷氏は、30年以上前の言語だと改めて調べて驚いたと話す。そのうえで、ウェブでアプリケーションを作る動きが始まったころに一番流行っていた言語は確かにPHPだったと振り返った。

中谷氏によれば、現在では学生が最初に学ぶ言語はPythonが圧倒的に多い。しかしPythonが広まる前は、PHPや、場合によってはJavaのような古い言語を使うことが多かった。Javaより覚えることが少なく、やりたいことを素直に書けるのがPHPの特徴で、プログラマーにとってのとっつきやすさが普及した理由のひとつだったという。

7割というシェアについては、中谷氏も多いと感じている。その要因として、WordPressの存在が大きいこと、さらにWikipediaなどで使われるウィキ系のソフトウェア(これもCMSの一種と考えてよいという)もPHPで作られていて普及していることを挙げた。中谷氏自身も昔はPHPを使っており、主要なプログラミング言語は一通り書いてきたという。

「停止」は「被害」と同じではない

番組では影響を受けた組織として、銀行、航空会社、ゼンショーホールディングスのような飲食企業、政府・自治体などが紹介された。これについて中谷氏は、停止したことを攻撃を受けたことと受け取らないほうがよいと注意した。実際に攻撃を受けた事例も、少なくとも1件は把握しているという。それでも多かったのは次の2つのパターンだと説明した。

1つ目は、PHPが危ないと聞いた企業が、影響範囲を特定できるまで自主的に一時停止したケースである。2つ目は、レンタルサーバー事業者が自社の判断でサービスを止め、その上で企業ページなどを配信していた利用者のサイトも閉じられたケースだ。どちらも「攻撃を受けないようにまず止める」という判断による停止だという。

高市首相のホームページも一時停止し、首相はgo.jpドメインのサイトも止めたと発信した。中谷氏はこの対応を英断だったと評価する。システムを止める判断には勇気がいる。エンジニアは技術的には止められても、止めてよいかどうかは最終的に経営判断になる。そうした場面で「首相もこう言っている」という事実は、経営者にとって強い判断材料になるというのが中谷氏の見方だ。海外のセキュリティ関係者がXで「日本の首相がこう言っている」と好意的に取り上げているのも見たという。

8:05

世界でも注目されていた

中谷氏は自分のXのタイムラインが日本語中心であることから、日本だけで騒がれているように見えている可能性も考えた。そこで出演前に、今回の一連の攻撃の通称「PHP2シェル」でGoogleトレンドを全世界対象に調べた。関心が高い国は、オランダ、オーストラリア、中国、スイス、ベルギーの順だった。日本だけでなく世界中で危機が察知されていると中谷氏は読み取った。

聞き手は、AWSのシステム障害ならこれほど広く一斉に影響が出ることもあるが、サイバー攻撃でここまでの規模は記憶にないと指摘した。中谷氏は、障害による停止と攻撃のリスクは性質が違うと答えた。止まるだけなら止まるだけで済むが、攻撃を受ければデータ漏洩やウェブサイトの改ざんまで起こりうる。停止より一段高い影響がありうるので、今回のような反応は自然だという。

9:37

2つの脆弱性とRCE(任意コード実行)

報告によると、今回は2つの脆弱性が関わっている。番組では、聞き手が生成AIで作った図を使って説明した。2つにはそれぞれ「CVE-2026-…」という番号が付いていて、末尾の1桁が8と9で違うだけだという。中谷氏によれば、CVE番号は国際的に通用する脆弱性のIDで、番号を言えば「あの件か」と調べられるものだ。

中谷氏は、2つとも非常に脅威の高い攻撃、つまりRCE(リモートコードエグゼキューション、任意コード実行)につなげられると説明した。PHPで動くサーバーに対して、攻撃者がインターネット越しに悪意のある通信を送る(1回で済むとは限らない)。それだけでサーバーの制御を乗っ取り、そのサーバーでできることを基本的に何でもできてしまう。これがRCEであり、極めて危険だという。

11:23

30年潜んでいたのは、メモリ管理のバグだから

30年前から潜んでいた脆弱性がなぜ今になって見つかったのか。中谷氏の説明では、2つとも「メモリ管理」に起因するバグだからである。メモリはコンピューターがデータを扱う高速な領域だ。C言語のような昔ながらの言語では、メモリを確保して値を書き込み、使い終わったら解放する処理をプログラマーが自分で書く。この確保と解放を大まかにメモリ管理と呼ぶ。

メモリ管理のバグは人間には見つけにくい。確保する部分と解放する部分がコード上で大きく離れていて、別のファイルにあることも多いため、プログラム全体を見渡さないと探せないからだ。中谷氏は、近年LLM(大規模言語モデル)によってソースコードから脆弱性を探す能力が飛躍的に上がったことが今回の発見につながったと考えている。PHPはオープンソースなのでソースコードを誰でも入手できる。実際、発見したセキュリティ企業(字幕では「カリフ」)も、AIを使って探したと公表しているという。

2つの脆弱性の違い

中谷氏は「難しすぎるので分からなくても気にしないでいい」と前置きしたうえで、2つの違いを説明した。ここではPHPで動くプログラムをWordPressのようなウェブサーバーと考える。

1つ目は、攻撃者が極端に大きなデータを含むリクエストを送るものだ。PHPの処理系には、通常サイズのデータなら決まった処理を行い、大きすぎるデータならエラー処理に移るという仕組みがある。通常の処理を途中まで進めてからエラー処理に移ると、途中で確保または解放しかけていたメモリが中途半端な状態で残る。中谷氏は確保と解放のどちらだったかは忘れたと断ったうえで、管理しきれない「浮いた」メモリができてしまうと説明した。

2つ目はさらに難しい。ウェブサーバーに届く2つのリクエストは、同じ人から来るとは限らない。たとえば1回目は中谷氏、2回目は鵜飼氏かもしれない。だからリクエストは本来それぞれ独立して処理されるべきだ。ところが、PHPの特定のウェブサーバー実装には、リクエストを処理する「ワーカー」という機構を共用して2つのリクエストを処理している箇所があった。片方のリクエストでエラーを起こすと、ワーカーに状態が残り、次のリクエストがエラー状態のリクエストのデータを使い回せてしまう。

どちらもメモリの異常な状態を引き起こせる点は共通しているが、その起こし方が違うというのが中谷氏のまとめである。

修正前に攻撃方法が漏れた経緯

聞き手が整理した経緯は次のとおりだ。2件の脆弱性は今年8月ごろにPHPの開発チームへ報告された。報告したセキュリティ企業の研究者は、AIを相棒にして調べたと公表している。影響の大きい脆弱性は、すぐに公表せずにまず修正プログラム(パッチ)を作り、パッチを公開してから内容を明らかにするのが一般的とされる。今回も22日にパッチを公開する予定だったが、前日の21日に情報が漏れ、それを見た攻撃者が先回りして攻撃を始めた。

中谷氏はこの流れはおおむね正しいとしつつ、一点を補足した。漏れたのはパッチではなく、パッチ適用前のシステムへの攻撃方法だったという。

こうした事前リークは、中谷氏の感覚では年に何度かは見るという。理由としては、発見した技術者が自分で言いたいという功名心の場合もある。また、手続きのスケジュールを勘違いし、もうパッチが公開されたと思い込んで攻撃方法を先に出してしまうパターンもあるという。

聞き手は、これまでのタイムズカーの件などは個別企業の脆弱性だったが、今回はその土台である言語自体の脆弱性だという点が特徴的だと指摘した。中谷氏はこれに同意し、冒頭の「悪夢のような事態」という評価を繰り返した。

18:36

攻撃で何が起こりうるか

中谷氏は、セキュリティ製品で知られる企業が公開した解説図を2枚示した。2枚の図は脆弱性2種類にそれぞれ対応しているわけではなく、2つを使って何ができるかという影響を2通りに描いたものだという。

分かりやすい方から説明すると、2枚目の図は「メモリダンプ」を示している。攻撃者が細工したHTTPリクエストを送るとサーバー内で脆弱性が発動し、サーバーがクラッシュして次のリクエストに正常に応答しなくなることがある。さらに、インターネット越しにサーバー内のメモリのデータを抜き取れる可能性もある。

1枚目の図は、リクエストをさらに巧みに作ればRCEまで到達できることを示している。対象として描かれているのは、WordPress、Drupal、JoomlaというPHP製の有名CMSだ。中谷氏によれば、セキュリティ好きなら練習問題でよく見かけるソフトウェアだという。

RCEがもたらす被害とCIA

実際の企業に当てはめると、RCEはサーバーに侵入されたことを意味する。中谷氏は、そのサーバーでできることは基本的に何でもできると考えたほうがよいと話した。正確には、サーバー内でPHPを動かしている権限の範囲内で何でもできるという。想定される被害は次の3つだ。

1つ目は情報漏洩である。メモリダンプを使わなくても、RCEを起点にサーバー内のデータを奪える。2つ目は情報の破壊や改ざんだ。「ハックしたぜ」と分かるようにページを書き換えることもできるし、より巧妙に攻撃者のフィッシングサイトへ誘導する内容に書き換えることもできる。3つ目はサイトのダウンで、一般の利用者がアクセスできなくなる。中谷氏は、セキュリティで重視されるCIA(機密性、完全性、可用性)のいずれも破壊しうるのがRCEだと述べた。

聞き手が「高市首相のホームページがPHP製なら、首相になりすましてブログを投稿したり写真を変えたりできるのか」と尋ねると、中谷氏はおおむねそうだと答えた。首相のサイトの更新方法は知らないと断ったうえで、著名人のサイトの書き換えは偽情報工作でよく使われる手口だと付け加えた。一般の人についても、自分が使っているサービスがPHPで運用されていて攻撃を受ければ、登録した個人情報が抜かれることはありうるという。

中谷氏がさらに怖いと語ったのは、侵入の拡大である。PHPで動くウェブサーバーが社内のイントラネットとつながっていれば、攻撃者はそのサーバーを足がかりに社内システムへ移動し、被害範囲を広げられる。その意味でRCEは、さまざまな攻撃の起点になる怖い攻撃だと中谷氏は述べた。

AIは攻撃を「広く深く」している

聞き手は、この1か月のセキュリティ関連の事例の多さを挙げ、背景にはAIがあるのではないかと問いかけた。中谷氏は、AIによってさまざまな攻撃がやりやすくなったと答えた。今回のように、オープンソースのソースコードをAIに調べさせて脆弱性を探し、その脆弱性を突く攻撃もAIで作る。発見から攻撃の作成までをAIで行えるようになっている。さらに、誰かが見つけた脆弱性をもとに、AIに幅広く攻撃させることも、特定の1か所をしつこく攻撃させることもできるようになってきた。中谷氏は、AIが攻撃を広く深くしていると最近感じているという。

25:43

他の言語でも起こりうるのか

AIの多くはPythonで動いている。では、他の言語でも同じように未知の脆弱性が見つかる可能性はあるのか。中谷氏は「あり得る」と答えた。

理由は2つある。1つは、広く使われているプログラミング言語はほぼすべてオープンソースで、ソースコードが公開されているため、AIで分析しやすいことだ。

もう1つは言語の内部構造である。PHPのプログラマー自身はメモリ管理を意識しなくてよい。しかし、巨大なデータを送る、エラーを起こさせるといった通常と違う操作をすると、処理がPHPの領域をはみ出し、PHPの処理系を書いているC言語の部分に移る。C言語はメモリ管理を自分で行う必要があるため、PHP自体の開発者に少しでも落ち度があれば今回のようなことが起きる。中谷氏は、PHPが特にメモリ管理のバグを抱えやすい言語というわけではなく、他の言語も同程度だと見ている。

聞き手が「注意していれば落ち度はなくせるのか」と尋ねると、中谷氏はそうではないと答えた。メモリ管理は人間には無理だという結論がおおむね出ていて、そのためメモリ管理が不要な言語が最近流行っているという事情もあるという。

Pythonも基本的にC言語で書かれているので、PHPと似たことは起こりうると中谷氏は考えている。中谷氏が好きな言語だというRustは、メモリ安全性がしっかりしたモダンな言語とされる。それでも、OSに近い処理のために言語の安全機能を外して書ける「unsafe」という領域がある。中谷氏は今後、unsafeで書かれた部分をLLMで徹底的に解析して脆弱性を突く動きも出てくると予想し、言語を問わずこうしたことは起きるだろうと述べた。

29:02

人間よりAIの方が早く、幅広い

メモリ管理以外にも、人間には見つけにくくAIなら見つかる領域はあるのか。中谷氏は、ソースコードからの脆弱性発見は、どの種類であっても人間よりAIの方が確実に早く、範囲も広いと答えた。

人間が脆弱性を探すときは、いきなりソースコードを最初から読むことはしない。まずソフトウェアを動かしたり仕様書を読んだりして怪しい箇所の見当をつけ、そこからコードを解析する。一方、AIにはOSSのリポジトリを丸ごと渡すだけで、勝手に解析してくれる。中谷氏は、どんな脆弱性でもLLMの方が人間より明らかに早く、正確に探せるようになっているのが実情だと語った。聞き手の「大変な時代ですね」という言葉に、中谷氏は「大変な時代です」と応じた。

30:19

パッチを当てれば安心なのか

最後の論点は、PHPを使っている企業は前夜に公開されたパッチを当てればよいのか、という問いだった。中谷氏はまず、パッチ適用は絶対にやるべきだと答えた。ただし、それで必ず安心できるかどうかは続報を注視する必要があるという。スタジオに移動する間にも、パッチ適用後に新たな攻撃が見つかったというX投稿が特に海外から出ていた。その攻撃が本当に有効なのかはまだ評価が定まっていない。そのため、この2つのパッチを当てたから大丈夫とまで言えるかは「やや微妙」だと中谷氏は述べた。字幕はこの回答の途中で終わっている。