PHPの重大脆弱性「PHP2シェル」は何が危険なのか──AgenticSec中谷翔CEOが語る仕組み、影響、AIによる発見
テレ東BIZ ダイジェスト2026年10月22日、テレ東BIZは緊急ライブ配信を行った。テーマは、世界のウェブサイトのおよそ7割で使われるプログラミング言語PHPに見つかった、深刻度が最高レベルの脆弱性である。番組の説明では、国内でもメガバンク、各企業、行政のシステムが相次いで停止や一時停止に追い込まれていた。
ゲストはAgenticSec代表取締役CEOの中谷翔氏で、聞き手はテレ東BIZの鵜飼祥氏が務めた。中谷氏は普段は同番組でAI分野の解説を担当している。ただ、AIが話題になる前からセキュリティ技術に取り組み、セキュリティコンテストで上位に入ることもあるという。そうしたコンテストでは今回のようなPHPへの攻撃を技術的に再現する課題も出るため、今回の事案は技術面から関心を持って見ていたと語った。中谷氏の評価は明確で、言語そのものの脆弱性であり、任意コード実行まで可能で、しかも修正前に攻撃方法が漏れたことから、セキュリティ担当者にとって「悪夢のような事態」だという。
第一報から「かなりやばい」と判断した理由
前日の朝に第一報が流れた時点で、中谷氏は深刻度が極めて高いと受け止めた。根拠として挙げたのはWordPressである。WordPressはブログやホームページを作るCMS(コンテンツ管理システム)のひとつで、PHPで作られた代表的なアプリケーションだ。PHPに脆弱性があれば、WordPressで配信しているウェブサイトにも脆弱性があることになり、影響を受けるサイトは非常に多くなる。
朝の段階では状況がはっきりしなかった。昼ごろになると、修正プログラムがまだ出ていないのに攻撃方法が出回っていることが分かってきた。中谷氏はこの時点で事態の重さを確信したという。
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で「日本の首相がこう言っている」と好意的に取り上げているのも見たという。
世界でも注目されていた
中谷氏は自分のXのタイムラインが日本語中心であることから、日本だけで騒がれているように見えている可能性も考えた。そこで出演前に、今回の一連の攻撃の通称「PHP2シェル」でGoogleトレンドを全世界対象に調べた。関心が高い国は、オランダ、オーストラリア、中国、スイス、ベルギーの順だった。日本だけでなく世界中で危機が察知されていると中谷氏は読み取った。
聞き手は、AWSのシステム障害ならこれほど広く一斉に影響が出ることもあるが、サイバー攻撃でここまでの規模は記憶にないと指摘した。中谷氏は、障害による停止と攻撃のリスクは性質が違うと答えた。止まるだけなら止まるだけで済むが、攻撃を受ければデータ漏洩やウェブサイトの改ざんまで起こりうる。停止より一段高い影響がありうるので、今回のような反応は自然だという。
2つの脆弱性とRCE(任意コード実行)
報告によると、今回は2つの脆弱性が関わっている。番組では、聞き手が生成AIで作った図を使って説明した。2つにはそれぞれ「CVE-2026-…」という番号が付いていて、末尾の1桁が8と9で違うだけだという。中谷氏によれば、CVE番号は国際的に通用する脆弱性のIDで、番号を言えば「あの件か」と調べられるものだ。
中谷氏は、2つとも非常に脅威の高い攻撃、つまりRCE(リモートコードエグゼキューション、任意コード実行)につなげられると説明した。PHPで動くサーバーに対して、攻撃者がインターネット越しに悪意のある通信を送る(1回で済むとは限らない)。それだけでサーバーの制御を乗っ取り、そのサーバーでできることを基本的に何でもできてしまう。これがRCEであり、極めて危険だという。
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日に情報が漏れ、それを見た攻撃者が先回りして攻撃を始めた。
中谷氏はこの流れはおおむね正しいとしつつ、一点を補足した。漏れたのはパッチではなく、パッチ適用前のシステムへの攻撃方法だったという。
こうした事前リークは、中谷氏の感覚では年に何度かは見るという。理由としては、発見した技術者が自分で言いたいという功名心の場合もある。また、手続きのスケジュールを勘違いし、もうパッチが公開されたと思い込んで攻撃方法を先に出してしまうパターンもあるという。
聞き手は、これまでのタイムズカーの件などは個別企業の脆弱性だったが、今回はその土台である言語自体の脆弱性だという点が特徴的だと指摘した。中谷氏はこれに同意し、冒頭の「悪夢のような事態」という評価を繰り返した。
攻撃で何が起こりうるか
中谷氏は、セキュリティ製品で知られる企業が公開した解説図を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が攻撃を広く深くしていると最近感じているという。
他の言語でも起こりうるのか
AIの多くはPythonで動いている。では、他の言語でも同じように未知の脆弱性が見つかる可能性はあるのか。中谷氏は「あり得る」と答えた。
理由は2つある。1つは、広く使われているプログラミング言語はほぼすべてオープンソースで、ソースコードが公開されているため、AIで分析しやすいことだ。
もう1つは言語の内部構造である。PHPのプログラマー自身はメモリ管理を意識しなくてよい。しかし、巨大なデータを送る、エラーを起こさせるといった通常と違う操作をすると、処理がPHPの領域をはみ出し、PHPの処理系を書いているC言語の部分に移る。C言語はメモリ管理を自分で行う必要があるため、PHP自体の開発者に少しでも落ち度があれば今回のようなことが起きる。中谷氏は、PHPが特にメモリ管理のバグを抱えやすい言語というわけではなく、他の言語も同程度だと見ている。
聞き手が「注意していれば落ち度はなくせるのか」と尋ねると、中谷氏はそうではないと答えた。メモリ管理は人間には無理だという結論がおおむね出ていて、そのためメモリ管理が不要な言語が最近流行っているという事情もあるという。
Pythonも基本的にC言語で書かれているので、PHPと似たことは起こりうると中谷氏は考えている。中谷氏が好きな言語だというRustは、メモリ安全性がしっかりしたモダンな言語とされる。それでも、OSに近い処理のために言語の安全機能を外して書ける「unsafe」という領域がある。中谷氏は今後、unsafeで書かれた部分をLLMで徹底的に解析して脆弱性を突く動きも出てくると予想し、言語を問わずこうしたことは起きるだろうと述べた。
人間よりAIの方が早く、幅広い
メモリ管理以外にも、人間には見つけにくくAIなら見つかる領域はあるのか。中谷氏は、ソースコードからの脆弱性発見は、どの種類であっても人間よりAIの方が確実に早く、範囲も広いと答えた。
人間が脆弱性を探すときは、いきなりソースコードを最初から読むことはしない。まずソフトウェアを動かしたり仕様書を読んだりして怪しい箇所の見当をつけ、そこからコードを解析する。一方、AIにはOSSのリポジトリを丸ごと渡すだけで、勝手に解析してくれる。中谷氏は、どんな脆弱性でもLLMの方が人間より明らかに早く、正確に探せるようになっているのが実情だと語った。聞き手の「大変な時代ですね」という言葉に、中谷氏は「大変な時代です」と応じた。
パッチを当てれば安心なのか
最後の論点は、PHPを使っている企業は前夜に公開されたパッチを当てればよいのか、という問いだった。中谷氏はまず、パッチ適用は絶対にやるべきだと答えた。ただし、それで必ず安心できるかどうかは続報を注視する必要があるという。スタジオに移動する間にも、パッチ適用後に新たな攻撃が見つかったというX投稿が特に海外から出ていた。その攻撃が本当に有効なのかはまだ評価が定まっていない。そのため、この2つのパッチを当てたから大丈夫とまで言えるかは「やや微妙」だと中谷氏は述べた。字幕はこの回答の途中で終わっている。
世界のウェブサイトのおよそ7割で使われるプログラミング言語の重大な脆弱性が発覚。
任意コード実行までできるやばさで、かつ先に攻撃がリークしたってことで、これはセキュリティ担当者からしたら悪夢のような事態ですね。ここのサーバーの制御を乗っ取って、ここのサーバーでできることは基本的に何でもできてしまう。
高市総理になりすまして、例えばブログの文章をアップするとか、写真を変えるとか。個人情報を登録してる場合、これきっかけでその個人情報が抜かれるってこともあり得る。
そうですね。あり得ます。
10年以上潜んでいたバグを掘り起こしたのはAI。
ソースコードから脆弱性を発見するっていうのは、どの種類のものであっても人間よりAIの方がまず早い。確実に早いのと、幅が広い。
他のプログラミング言語で知られざる脆弱性が発見されるっていうことは、可能性としてはいかがなんでしょう?
これはあり得ると思っています。修正プログラムを当てれば本当に安心できるのか?
このパッチ2つ当てたから大丈夫まで言えるかは、やや微妙な……。
例えば去年に比べて倍にした方がいいとか、そういう目安ってありますか?
それは例えば防衛予算とかと同じで。
皆さんこんばんは。緊急ライブ配信でお送りしています。テレ東BIZの緊急ライブ配信です。本日10月22日、世界中のウェブサイトを支える根本的なシステムにおいて緊急事態が進行しています。皆様が普段使っているようなウェブサイトのおよそ7割を構成するプログラミング言語であるPHPにおいて、深刻度最高レベルの重大な脆弱性が発覚しました。すでに日本国内でもメガバンクや各企業、そして行政のシステムが次々と停止だったり、一時停止をする事態となっています。
本日はこの脆弱性が私たちの生活や企業にどのような影響を与えるのか、今すぐ取るべき対策は何なのかを、サイバーセキュリティの専門家をお招きして徹底解説したいと思います。株式会社AgenticSecの中谷さんです。よろしくお願いします。
よろしくお願いします。中谷さん、緊急のご出演ありがとうございました。いえいえ、ありがとうございます。普段はAI分野での解説をお願いしてるんですけれども、本業というか、元々サイバーセキュリティが詳しいということなんです。
そうですね。AIのことが騒がれる前から結構セキュリティの技術のことを色々とやってて、セキュリティコンテストとかでもたまに上位入りとかをさせていただくんですが、そういったセキュリティコンテストでも今回のPHPの攻撃みたいなのを技術的には再現するようなことも競わされるので、割と今回の事案についてはまず技術面から興味深く見ていて、今日お話しすることになりました。
一般の人にとって、サイバーセキュリティのニュースっていうのはなかなかその深刻度を測るのが難しいんですけれども、昨日第一報が朝ぐらいですかね、流れ始めた時に、中谷さんとしてはその深刻度をどのように受け止めました?
これは深刻度が極めて高いなと思いまして、やっぱり今回の脆弱性、PHPっていうプログラミング言語でして、皆さんもしかしたらWordPressとかの方がPHPよりもご存じの方が多いかもしれませんが、WordPressってブログとかホームページを作るCMSの1つのソフトウェアなんですが、これがPHPでできてる代表のアプリケーションの1つです。PHPに脆弱性があるってことは、WordPressで配信してるウェブサイトに脆弱性があるってことなので、影響を受けるサイトっていうのはかなり大きい。
しかも昨日の朝起床した時点ではまだそんなに状況が定かじゃなかったんですが、だんだん昼ぐらいになってくると、どうやらまだ修正プログラムは来てないのに攻撃は出回ってるぞみたいなことが明らかになって、これはかなりやばいものだなというふうに私も認識しました。
なるほど。まずスライドをご用意したんですけれども、そもそもPHPというのはプログラミング言語。最近だとPythonですとか、Rとか、そういったものが色々有名だと思うんですけれども、結構老舗のプログラミング言語なんですよね。
そうですよね。30年以上前っていうのは今日私も調べて、そんなに前かと思ったんですけれども、やっぱりそのウェブでアプリケーションを作るっていうムーブメントが起き始めた頃に、一番流行ってた言語は確かにPHPだったなと私の方でも思ってます。
今、例えば工学系の学生の方がプログラミング言語を習いたいなと思ったら、Pythonが多いと思うんですけれども。圧倒的に多いですよね。このPHPっていうのはどうなんですか? 使い勝手がいいとか、7割で使われてるっていうのはどこら辺にあるんですか?
やっぱり少なくともPythonって、私が学生だった頃なんかは、はるか昔ですけど、ない言語だったんですよ。Pythonとかが出る前とか、やっぱりPHPだったり、場合によってはJavaだとか、結構そういう古めの言語を使うことが多かった。
JavaじゃなくてPHPをやる人は何でやってたかというと、Javaなんかより覚えることが少なく書ける。割とやりたいことを正直に書けるみたいな言語がPHPで、プログラマーにとってのとっつきやすさみたいなところは、1つ普及の原因だったかと思います。
なるほど。でも本当、7割っていうのは結構そんなにあるんだ。
そうですね。7割っていうのは本当に多いなと思って、やっぱりWordPressがかなり効いてるんだろうなと思っているのと、あとWikiですかね。Wikiで作られるんですが、Wikiっていう、これまたCMSの一種みたいなもので考えていいと思うんですけど、WikiなんかもPHPで作られるものが結構普及、その辺も多分効いてるなと思ってます。
中谷さんは使うこともあるんですか?
昔はありました。大体のプログラミングは一通りやっております。
じゃあ今回、影響が出た範囲が非常に大きいということで、今、中谷さんのご説明もあったように、WordPressというホームページを作る仕組みというか、側の部分、土台みたいな部分がWordPressを使ってる企業ですとか個人、多いと思うんですけれども、それによって今こちらに出てるように、例えば銀行ですとか航空会社ですとか、ゼンショーホールディングスっていうのは飲食店ですよね。あとは政府、自治体などなど、かなりやっぱり広範囲に影響が出てるってことなんですよね。
そうですね。これ、停止したっていうのが攻撃を受けたっていうふうには受け取らない方が多分良くて、もちろん攻撃を受けた事案っていうのも少なくとも1件は私も知ってるんですけど、基本的には企業様自ら、PHPが危ないっていうから影響範囲を特定できるまでは一時的に自主的に停止するってことをやった企業様がまず多いのと、あとはいわゆるレンタルサーバーサービスとかで企業のページとかを配信してる場合は、レンタルサーバー側の企業が自社の判断でサービス停止して、レンタルサーバーを使ってた人たちのサイトがその影響で閉じられるっていうことがあったんで、攻撃を受けないようにまず止めるっていう判断で、このような停止につながった事例が多いのかと思います。
なるほど。高市総理のホームページまで一時止まって。
そうですね。あとやっぱりその.go.jpでしたっけ、そちらも止めたという発言もなさってまして、これは私、セキュリティのエンジニアとしては非常に英断だったかなと思っていて、やっぱりまずシステムを止めるっていうのは、すごくある種勇気のいる判断で、特にエンジニアとかは技術的にはもちろん止めることはできるけど、止めていいのかとかの判断っていうのは最終的には経営判断になる。
そんな中で、首相もこんなことを言ってるぞっていうのは、経営者にとっては強力な1つの考慮事実になるので、やっぱりこれを首相が発信してくれた意義は私は大きいと思ってるのと、あと日本国内のセキュリティに携わる人だけじゃなくて、海外のセキュリティに携わる人も、日本はプライムミニスターがこんなこと言ってんのかっていうふうに好意的に発信するようなこともXで見ていて、私はこれはいいツイートだったのかなと認識してます。
これ、先ほど国内の企業をお出ししたんですけれども、結構これ海外でも話題だったんですよね。さっきいただいたデータがGoogleのデータですかね。
Googleトレンドで、私がこちらに緊急出演する前に自宅で調べたんですけど、日本で確かに私もXを日本語で見てるんで、日本で話題に見えるけど本当に海外じゃ話題じゃないのかなって、一応全ての国ということで、PHP2Shellっていう今回の一連の攻撃の通称で調べたところ、話題にしている国が一番がオランダですね。次がオーストラリア。
オーストラリアか。ごめんなさい。あと中国、スイス、ベルギーです。
そういった国々で、全然日本だけってこともなく、やっぱり世界で広く皆さんこの危機を察知してるっていう様子が受け取れました。
結構広く一瞬でっていうのは、例えばAWSのシステムが止まったりするとこういうような現象あると思うんですけど、なかなかこういうサイバー攻撃でここまでっていうのはあんまり記憶ないんですよ。
そうですね。やっぱりAWSが止まるとかの影響と、サイバー攻撃のリスクの影響って全然違うわけですよね。止まるっていうのはある種止まるだけだけど、攻撃を受けたらもしかしたらデータが漏洩しちゃうかもしれない。もしかしたらウェブサイトの改ざんとかまでされるかもしれないっていうふうに、やっぱり止まるよりも一段高い影響があり得るので、こういう反応は自然なのかなと思います。
ここが問題の一番の核心なんですけれども、じゃあその脆弱性って何なのかっていうところですよね。今回レポートによると2つの脆弱性が見つかったということなんですけど、少し何か図示できないかなと思って、色々放送前に私の方でも生成AIで適当な生成をして、これがこれですね。PHP2Shell。これが2つ、上と下ってことですか?
そうですね。2つの脆弱性を合わせてPHP2Shellというふうに通称しているというふうに認識してます。
どういうものなんですか、これは。
1個ずつ見ていくと、弱点1の右にCVE-2026ほにゃほにゃほにゃほにゃって数字が書いてて、弱点2の方にも最後の1桁目だけが8か9かで違う、いわゆるCVE番号っていうのがついてます。これが国際的に通用する脆弱性のIDですよね。脆弱性はCVE何々だって言えば、あのことねって調べられる。そういうCVE番号が2つまずついてます。
このCVE、2つとも基本的にはものすごく脅威の高い攻撃につなげることができて、RCE、リモートコードエグゼキューションの略なんですけど、日本語ではよく任意コード実行とか言ったりします。
要はこれを使うと、PHPで立っているサーバーシステムに攻撃者がインターネット越しとかに悪い通信を、1回とは限らないんですけど、送るだけでここのサーバーの制御を乗っ取って、ここのサーバーでできることは基本的に何でもできてしまう。こういうふうなことができるのがこれらの脆弱性だし、RCEという脆弱性になっていて、極めて危険なものになってます。
これ、結構前からあったものが今更発見されたっていうのは何なんですか?
まずそうらしいですね。どうやら30年前から内在していた脆弱性が今回公表されたってことですけど、これ何でかっていうと、この2つとも基本的にはいわゆるメモリ管理ってところに起因するバグです。
メモリっていうのはコンピューターの中でデータを扱う、割と高速な領域ですけど、そのメモリを、プログラミングをしていると、特にC言語とか昔ながらの言語でプログラミングをしてると、メモリを取ってそこに値を書く。使い終わったらメモリを解放する、お掃除するみたいなことをよくやる。こういうメモリを取るとか解放するのをメモリ管理って大ざっぱには言うんですけど、今回メモリ管理系のバグでした。
メモリ管理系のバグって結構探すのが大変なんですよね、人間にとっては。何でかっていうと、メモリを取りますっていう部分とメモリを解放しますっていう部分が、プログラムのコード上かなり離れてる。全然別のファイルにあることすらあるし、そういうことが多いのですごくプログラムを大局的に見ないと、メモリ管理系のバグって探しづらいんですよ。
なるほど。それが昨今、やっぱりLLM、AIによって、ソースコードから脆弱性を探す能力っていうのが飛躍的に上がったことで、前提としてPHPはオープンソースなんでソースコードが手に入るんですが、そういうPHPのソースコードからメモリ管理系のバグが見つかったんじゃないかというふうに考えてます。
やはりAIを使ってこれを見つけたと考えるのが一般的に。
そうですね。今、考えると言いましたけど、実際今回の発見経緯、発見したカリフという企業も、そのようにして探したと公表してます。
これ、上と下の違いは何なんでしょう?
これは本当に難しすぎるので、これが分からなくてもあんまり気にしないでいいんですけれども、1個目のやつっていうのは、基本的にPHPのプログラムっていろんなものがあるんですけど、ウェブサーバー、WordPressみたいな、じゃあウェブサーバーだと思ってください。
攻撃者がリクエストを飛ばすんですけど、このリクエストのデータをめちゃめちゃ大きくして、1個のリクエストとしてはでかすぎるよっていうふうにこっちのPHPのサーバー側に判断させると、普通の小さいのだったらこういうプログラム処理っていうのが決まってるんですけど、でかすぎるデータが来たらエラー処理に飛ぼうっていうのがPHPの処理系内部にあって、その普通の処理をちょっとやった後、エラー処理に飛ぶっていうふうにやると、普通の処理の途中にあったメモリを、メモリを確保するか解放するかの方、どっちか忘れましたけど、そこの部分が中途半端になっちゃって、メモリが管理しきれてない、ちょっと浮いちゃったメモリ状態になる。こういうのがまず1個目なんですけど。
2個目はさらに難しいんですけど、さっき言ったようにウェブサーバーを想定してリクエストを送る。リクエストを2回送ったとします。この2回のリクエストって同じ人から来るとも限らない。1回目は私で、2回目は鵜飼さんかもしれない。なので1回1回のリクエストっていうのはすごく個別に独立に処理されてほしいんですけど、PHPの特定のウェブサーバーの実装だと、リクエストを処理する機構、ワーカーっていう機構があるんですけど、そのワーカーを共用して2つのリクエストを処理してるって箇所がありました。
片方のリクエストでさっきみたいにエラーを起こす。メモリ多すぎエラーじゃないんですけど、何かエラーを起こす。そうすると2回目のリクエストは、エラー状態のリクエストが使ってたデータを使い回せちゃう。本当は使い回せない方がいいんだけど、ワーカーの方に状態が残っちゃって使い回せちゃうっていうのがあって、どちらもメモリの変な状態を引き起こせるっていうところに帰着するんですけど、その起こし方が上と下でちょっと違うみたいな、そんな感じですね。
なるほど。今どれぐらいの方が分かったかどうかっていうのは、ちょっとあれですけど。
私も難しいと思います。
これ、もしご質問などありましたら、テレ東BIZのチャット欄にお寄せいただければと思います。なるほど。今回、いきなりこの脆弱性が見つかったわけではなく、実は8月ぐらいからその可能性があって、この辺の経緯が実はかなり特徴的なんですよね。
実は2件の脆弱性がPHPの開発チームに報告されたのが今年の8月頃だと。さっき中谷さんも言及されていた、最初に報告したセキュリティ企業のカリフの研究者は、それをAIを相棒にして調べたと公表していると。
実はこういうことはよくあることで、これだけ影響力が大きいシステムの脆弱性が発見された時っていうのは、一旦それをすぐに公表するわけではなくって、パッチをまずは作りましょう。パッチというのは修正プログラムみたいなものですよね。そのパッチを公開した後に、実はこういうのがあったんだっていうのが一般的だとされている中で、実は今回に限っては22日に修正するパッチを公開予定であったのが、前日の21日に漏れてしまったと。その漏れた情報を元に攻撃者がそれを見て先回りして攻撃を始めた、みたいな流れで合ってます?
大筋合ってて、漏れちゃったのはパッチが漏れたというよりは、パッチを当てる前のシステムの攻撃方法が漏れたっていうところが正確なところです。
こういうことよくあるんですか?
正直、たまによく、たまによくあるっていうのは変ですけど、1年に何度かは見ますね。
そうですか。
攻撃が先のパターンは割とあります。それは理由があるんですけど、1つには攻撃を見つけたっていうセキュリティ技術者の功名心だったりすることもあるし。
ちょっと自分で言いたいみたいな感じですか?
そうそう。そういうこともありますし、あとは単純に手続き、スケジュールの勘違いで、もう世の中でちゃんと脆弱性の内容、パッチが公開されたと勘違いして、先に攻撃を出しちゃったっていうパターンもあるし、そういうことはあることではあります。
なるほど。でもこれはかなり、よくあることだとはいえ、影響力が大きいクリティカルなバグだったっていうことと、世界中の7割のウェブサイトが使っている。しかも言語だったってことです。
そうですね。PHP。
ここが一番ややこしくて、これまで色々個別にあった、例えばタイムズカーの件ですとかっていうのは、基本的には個別の企業の脆弱性が見つかったってことですけど、そこを支えるというか、土台になっているプログラミング言語自体の脆弱性が見つかるっていうのが結構特徴的ですよね。
そうですね。言語の脆弱性であって、しかも任意コード実行までできるやばさで、かつ先に攻撃がリークしたってことで、これはセキュリティ担当者からしたら悪夢のような事態ですね。
なるほど。分かりました。じゃあこの結果、何が起こるのかというのがこれになるんでしょうか?
そうですね。これは攻撃によってどんなことが起こり得るかってことを書いている、Wizというセキュリティ製品を出している有名企業の解説図なんですけど、図が2枚ありまして、1枚目がこちら。2枚目も一旦お出しいただいて。
2枚目がこちらですね。
2枚目がこちらで、この2枚はさっき説明した2種類の脆弱性っていう話をしてるというよりは、その2種類を使ってどんなことができるんだっけっていう影響を2種類で書いた絵だと思っていただければいいかなと思います。
ちょっと小さくしますね。
こっちの2個目の方からいこうかな。2個目の方が案外と分かりやすいので。これ2個目、何が起きてるかっていうと、一番左、アタッカー、攻撃者ですね。攻撃者がその下のメモリダンプっていうものを受け取ってます。
メモリダンプ。ここですね。
そうです。メモリダンプって何かっていうと、要はメモリのデータなんですよ。攻撃者はインターネット越しにいるわけですけど、インターネット越しに攻撃対象のサーバー、そこのサーバーの中のメモリのデータを引っこ抜けちゃうって言ってるのが、この絵で言っていることですね。
なるほど。
引っこ抜くためにやってることっていうのが、攻撃者のメモリダンプの上側の、スペシャリークラフテッド、要はHTTPリクエスト、ウェブの通信を、うまいことっていうと表現が変ですけど、攻撃をうまく作ってリクエストをしてあげると、ウェブサーバーの中で先ほど簡単に申したような脆弱性が発現し、こういうことが起き得るんですけど、1つにはサーバーがクラッシュしてしまう。故障して、もしかしたら次のリクエストはもう正常に返ってこない。こういうことも起きるし、ここの絵にあるようにメモリの中身を抜き取ることもできるかもしれないっていうふうに言ってるのがこの絵で。また1枚目に戻っていただくと。
こっちで私がさっき言ったRCEっていうのが右側に、3個ともRCEって書いてあるんですけど、赤い枠で。
これですね。
そうです。これが任意コード実行で、さっきのよりさらにうまくリクエストを作ると、その任意コード実行までいけちゃうよっていうのがこの絵で書いてて、真ん中の方に書いてあるアイコン3つっていうのは、一番上のがWordPress。
そう、WordPress。
全部CMS、ブログとかを作る有名なソフトウェアなんですけど、WordPress、Drupalっていうやつ、あとJoomlaっていうやつ。結構セキュリティが好きな人だったら、よく練習問題とかに出がちなんで割と知ってるんですけど、こういうPHPでできたシステムに対して悪いリクエストを送ると、RCE、任意コード実行までできちゃうよっていうふうに書いてるのがこの絵ですね。
これ実際の企業の事例に当てはめると、例えばどんなことができるってことですか?
これはやっぱり任意コード実行っていうのはサーバー側に侵入できちゃったっていうことを意味するので、基本的にそのサーバーでできることは何でもできるようになってしまうと思った方がいいです。一応、詳しい方のために言っておくと、サーバーの中でPHPを動かしているその権限の範囲内で何でもできるようになります。
じゃあ何でもできるってなった時にどんな被害が考えられるかっていうと、例えば1つにはPHPのサーバーで動いている、というかPHPのサーバーの中にあるデータを奪われてしまう。さっきのメモリダンプみたいな話をしなくても、RCEを起因に情報漏洩をさせるってこともまずできます。
あとは情報を破壊する。例えば分かりやすくはウェブページの改ざんですよね。すごく、ここはハックしたぜみたいなウェブサイトに書き換えることもできるし、もっと巧妙に攻撃者のサイトに誘導するようなフィッシングサイトに書き換えてしまうようなこともできる。
あとは最後にあるのは、サイト自体を落としてしまう、ダウンさせてしまう。だから普通のユーザーもアクセスできなくなってしまう。こういう、よくセキュリティではCIA、C、コンフィデンシャリティ、機密性。I、インテグリティ、完全性。A、アベイラビリティ、可用性っていう3つが大事だよって言ってるものがあるんですけど、このいずれも破壊し得るのがRCEっていう攻撃になります。
なるほど。だからがゆえに、一番レベルが高い脅威だと。
そうです。
極端な話、例えば高市総理のホームページもPHPで書かれているとするならば、おそらくここに攻撃を仕掛けて成功した場合には、例えば高市総理になりすまして、ブログの文章をアップするとか、写真を変えるとか、そんなようなこともできちゃうってことですか。
大筋そういうことです。高市総理がそのウェブページを更新してるかは存じ上げないんですけれども、やっぱりそういう著名人の方のウェブサイトを書き換えるっていうのは、偽情報の工作などでよく取られる手ではあるので、そういう影響も考えられます。
我々のような一般の人からすると、例えばまた違う企業に登録してる場合、個人情報を登録してる場合、これきっかけでその個人情報が抜かれるってこともあり得る。
そうですね。あり得ます。やっぱり自分がサービスAというものを使っていて、サービスAがPHPで運用されていて、そのサービスAがこの攻撃をやられてしまったら、もしかしたら我々の個人情報が抜かれてしまうだとかっていう影響はあり得る。
あと怖いのは、さっきサーバーの中でできちゃうことは大体何でもできるって言ったんですけど、もしPHPで動いてるサーバーが社内システムと裏側のネットワーク、イントラネットでつながっちゃってた場合、そこのウェブサーバーを起点に裏側の社内システムにまで攻撃者が移動して、侵害範囲を社内システムまで広げるってことも考えられるので、かなりこのRCEっていうのはいろんな攻撃の起点になる、怖い攻撃クラスですね。
なるほど。やっぱりこの1か月間のセキュリティ関連の事例の多さっていうのは、目を見張るところはあるんですけれども、やはり背景にあるのがAIっていうことだと思うんですけれど、今どういうような変化が起こってるっていうふうに思われますか?
そうですね。やっぱりAIによっていろんな攻撃がやりやすくなったと思っていて、例えば今回のPHPの例で言うと、オープンソースで公開されているソフトウェアのソースコードをAIで研究させて脆弱性を探す。探した脆弱性を実際に突くような攻撃も、これまたAIで作り出すっていうふうに、攻撃を見つけて作るっていうところもまずAIでできてるっていうのと、あと、そういう誰かが見つけてくれた脆弱性に基づいて、どこかのサイトを場合によっては幅広く、場合によっては1か所をじっくりAIに攻撃させるっていうこともできるようになってきていて、やっぱりAIが攻撃を広く深くしているっていうところは最近感じております。
なるほど。今回PHPという、かなりクラシカルな伝統的なプログラミング言語が狙われたわけですけども、例えば最近で言うとAIってほとんどPythonで動いてたり、あとはアプリとかもそうですよね。他のプログラミング言語が今回の事例同様に、知られざる脆弱性が発見されるっていうことは、可能性としてはいかがなんでしょう?
これはあり得ると思っています。やっぱりさっき言ったようにPHPもオープンソースなので、プログラミング言語の設計どころかソースコードが世の中に公開されている。だからAIで分析されやすいっていうのが、他の世の中でよく使われているプログラミング言語もほぼ全てと言っていいんじゃないでしょうかね。オープンソースでできているので、やっぱり各言語の脆弱性っていうのはすごく研究しやすくなっているので、危ないと思っていて。
ちょっとマニアックな話を1、2分させていただくんですけど、今回のPHPみたいなメモリ管理系のバグは、やっぱり任意コード実行とかにもつながり得るような、影響が大きくなりやすいんですよ。じゃあPHPってメモリ管理系のバグを引きやすい言語なのかっていうと、他の言語も割ととんとんだと思っていて。
これ何を言ってるかっていうと、PHPをプログラマーとして書く時には自分はメモリ管理なんか別にしないでいいんですけど、さっき脆弱性の発動条件で、めっちゃでかいデータを送るとか、エラーを起こさせるみたいなこと言ったじゃないですか。変なことをすると、PHPの領域をはみ出て、PHPを作っているC言語っていう層、PHPの処理系の方に処理がいくんですよ。
なるほど。
C言語っていうのはPHPと違ってメモリ管理を自分でしないといけない言語なので、PHP自体を開発している方がメモリ管理に少しでも落ち度を発生させていたら、このようなことが起きるっていうのがまず1つあります。ちなみにこの落ち度って言ったのは、じゃあ注意してれば落ち度はないんですかっていうと、全然そんなことはなくて、メモリ管理はもう人間には無理だっていう結論が大体出たから、メモリ管理が不要なプログラミング言語が最近流行ってるという事情もあります。
なるほど。
他の言語もやっぱりどうしても裏側がC言語で書かれていたり、一部だけC言語で書かれてるって事情もあります。これはPythonなんかはまさにそうで、Pythonも基本的にはC言語で書かれてる。だから今回のPHPと似たようなことが起きると思った方が良いのと。
最後に私の好きな言語でRustっていうのがあるんですけど、これは極めてメモリ安全にしっかりした、割とモダンな言語と呼ばれてるんですが、Rustも意図的に、ここの部分はOSとかに近い処理をするから、ちょっと一旦言語の安全機能を解除していろんなことを書かせてよっていう、unsafeとか言って書ける領域があるんですよ。多分、これからRustとかを研究する人は、そういうunsafeで書かれたコードとかの部分をめちゃくちゃLLMで解析して、そこの脆弱性とかを探して突くみたいなこともこれから発生すると思うので、言語によらずこういうことが起きるだろうなと思ってます。
なるほど。今回、メモリ管理系のバグは人間には発見しにくい、AIだったら発見しやすいという特性があったからがゆえに、メモリ管理系のバグを発見したということなんですけど、メモリ管理系以外の部分でも、人間には発見しにくいんだけどAIだったら脆弱性が見つかるかもな、みたいな領域っていうのは複数あるものなんですか?
そうですね。基本的にもはやソースコードから脆弱性を発見するっていうのは、どの種類のものであっても人間よりAIの方がまず早い。確実に早いのと幅が広いっていうのがあって、人間であってもこのぐらいなら見つけられるよねっていうバグはもちろんあるんですけど、その時人間は、いきなりソースコードを一から読むんじゃなくて、まず動かしてみて、あるいは仕様書とかを読んでみて、この辺怪しいなって当たりをつけてソースコードを見て、色々と解析する必要があるんですが、もうAIなんかにはリポジトリ、OSSのソースコードをぽんと放り込むだけで勝手に解析してくれたりするんで、どんな脆弱性も人間よりLLMの方が明らかに探すのが早くなってるし、正確になってるっていうのが実情ですね。
なるほど。結構大変な時代ですね。
大変な時代です。
これじゃあ実際に、今回PHPを使っていらっしゃった企業っていうのはたくさんあるということなんですけど、基本的には昨日の夜に公開されたパッチを当てればいいだけと思っていいんでしょうか?
これはまずそこは絶対やるべきなんですけど、それで必ず安心かっていうのは、まだ続報は注視してみる必要があって、ここに、スタジオに移動するまでの間も、そのパッチを当てた後も新しい攻撃が見つかったぜっていうX投稿は特に海外から見られていて。ただ、それが本当に正しい攻撃なのかっていうのは、まだ定まってないぐらいなんですけど、このパッチ2つ当てたから大丈夫まで言えるかは、やや微妙な……。
記事公開 · 更新
