作者:数字生命卡兹克
昨夜は、おそらくサイバーセキュリティの悪夢だった。
そして、多くのエンジニアにとっての、眠れぬ夜でもあった。
ただ言えるのは、私たちの時代と社会は、AIの加速によって、みんな頭を抱えることになるだろう、ということだ。
ことの経緯はこうだ。
まず一昨日、つまり10月20日の夜11時過ぎ、Hacker Newsに突然ある投稿が現れた。
タイトルがとんでもなく恐ろしく、CVSS 10.0のPHPリモートコード実行の脆弱性が2件、まもなく公開されるという内容だった。
投稿者自身が「情報源:俺を信じろ(trust me, bro)」以外には何の証拠もないと書き、その上で脆弱性番号まで添えていた。
とはいえ、こういう投稿はネット上で一日に百件は流れてくるもので、誰も本気にしない。
しかしこの一件は、数時間後にwatchTowrというセキュリティ企業によって確認された。彼らの言葉はこうだ。「本来なら木曜日まで待つはずだったのに。」
これで厄介なことになった。この脆弱性は巨大で、すでに漏洩状態にあり、本気の人間なら利用を始められる。ところがPHP公式のセキュリティアップデートはまだパッケージング中で、当初は22日夜の更新予定だった。つまり一瞬にして2日間の空白が生まれ、この2日間のうちに脆弱性が悪用され突破されたら、その結果は想像を絶する。
さらに1時間余り後、PHP公式は慌てて予告を出した。当初10月22日だったセキュリティアップデートを、やむなく21日夜10時(北京時間)に前倒しし、可能な限り時間を詰めるという。
すると、公式の予告が出た直後に、さらにありえないことが起きた。
この2つの脆弱性の発見に関わったCalifというセキュリティ企業が、うっかり攻撃デモ動画をネットに公開してしまったのだ。この世界が巨大な「にわか仕立ての寄せ集め」であることを、これ以上なく証明してくれた。
動画では、これらの脆弱性をどう使って複数の標的に攻撃検証プログラムを実行させるかを実演していた。動画はすぐに削除されたが、どうしようもなく、手の早い誰かが保存してしまい、コミュニティで大々的に拡散され始めた。
これで万事休すだ。
もともと皆は深刻な脆弱性が2つあると知っているだけで、具体的にどう攻撃するかさえ知らなかった。それが今や、攻撃デモ動画まで出回り、あとは手取り足取り教えるだけという状態だ。
そして、さまざまなとんでもないAIの加速のもと、セキュリティ研究者たちは再現を加速させ始め、ネット上には脆弱性を悪用できると称するコードが次々と現れ始めた。
そしてこの時点で、脆弱性を修正するパッチが誰でも正式にダウンロードできるようになるまで、あと16時間だった。
生死を分ける16時間。昔なら、悪意ある人間がこれほど短い時間で大規模な攻撃を仕掛けるのは難しかったかもしれない。しかし今はAI時代だ。16時間は、AIで加速した人々にとっては、少し長すぎるくらいだ。
さらにありえないのは、21日午後3時41分、コンテナイメージを扱うある企業が、約束の時間より6時間以上も早く、パッチ適用済みのイメージを公開してしまったことだ。PHP財団は直接怒りをあらわにした。「多方面による数週間の調整作業を無視した。」
なぜなら今の時代、事情を知る人間が新旧2つのコードをAIに力任せに比較させれば、脆弱性がどこにあるかはすぐに分かる。AIでパッチを研究し、AIで脆弱性をリバース解析し、さらにAIで攻撃プログラムを開発する。
ところが、大量の正常なウェブサイトの管理者には、まだ直接インストールできる更新パッケージがない。つまり攻撃者は天眼を開いたかのように、先に飛び出してしまったのだ。
そして、崩壊が起きた。
21日、オランダのデジタル身分証明システム、議会のウェブサイト、さらには国家サイバーセキュリティセンター自身のウェブサイトまでが、次々とダウンした。
フィンランド政府のITサービス事業者も一部のサービスを停止し、アメリカの人事ソフトウェア企業BambooHRは直接サービスを停止して、顧客に給与関連業務への影響があり得ると注意を促した。日本のニコニコ動画とpixivは緊急メンテナンスに入った。
日本のPHPウェブサイトがあまりに多いため、高市早苗までがXに投稿し、夜10時のPHPアップデート配信まで予防的にサイトを落とすよう呼びかけたほどだ。
一つのプログラミング言語の脆弱性が、高市早苗を深夜に投稿させ、いくつもの国の政府に自らネットのケーブルを抜かせる。こんな光景は、正直、見たことがない。
こうして世界は、よろよろとしながら、この十数時間を乗り切った。
この十数時間の間に、水面下の闇の中で何が得られたのかは、誰にも分からない。
夜10時、PHPのセキュリティアップデートが公開された。この2つの深刻な脆弱性については、完全な緩和策は存在せず、アップデートが唯一の安全な選択肢だった。
同時に、OpenAIが名乗り出た。PHPのこの2つの歴史的なセキュリティ脆弱性は、GPTの支援によって発見されたものだという。
しかもこの脆弱性は、新しいモデルがやったわけではなく、数か月前にGPT-5.6 Solで発見されたものだ。だから想像できるだろう。もしこれらの大規模モデル企業の未公開の内部のより強力なモデルがスキャンしたら、世界中のさまざまなネットワーク基盤は、本当に全部問題だらけかもしれない……。
同時に、OpenAIは今回、あなたのウェブサイトが影響を受けるかどうかを調べるためのskillも緊急公開した。
ここで皆さんにぜひ注意してほしい。もしあなた自身のウェブサイトでPHPを使っていて、まだこの情報を知らないなら、見たその瞬間に、すぐに、すぐにバージョンを更新してほしい。そして友人にも広めてほしい。
多くの人が「ただの脆弱性じゃないか。何を大げさに」と言うのは分かっている。
では、今回なぜここまで大騒ぎになり、世界の反応がなぜここまで過剰なのかを理解するには、まずPHPが何なのかを知る必要があると思う。
私も専門家ではないので、私の知る言葉で、できる限り説明してみる。
まず、皆さんもご存じかもしれないが、ブラウザでウェブページを開くと、サーバー側でそのページに何を表示すべきかをその場で計算しなければならない。たとえば、あなたが誰か、カートに何が入っているか、この記事の下に何件のコメントがあるか、などだ。この仕事をするプログラムを、バックエンドと呼ぶ。
そしてPHPは、バックエンドを書くのに最もよく使われる言語の一つだ。
ただ、あまりに古いため、今では多くの企業の新製品や新技術スタックではあまり使われなくなっている。面白いことに、PHPはプログラマーの間でずっと嘲笑の対象で、「PHPは世界で最高の言語」というネタが十数年も続き、多くの人が前世紀の遺物だと思っている。
しかし世界では、PHPで作られたウェブサイトが依然として70%を占めている。比較的新しい中国国内でも、Javaが非常に多いとはいえ、2026年10月のデータを見ると、依然として半分以上のウェブサイトがPHPで作られている。
誰もが嘲笑うが、正直なところ、誰もがPHPなしではいられない。
あなたが登録したことのあるフォーラム、小さな店の支払いページ、多くの地方自治体の手続きサイト、社内の経費精算システム、そしてルーターやNASの管理画面。そのどれか一つは、ほぼ確実にPHPの上で動いている。
それはまるで都市の地下に張り巡らされた古い水道管だ。普段は誰も思い出さないが、いったん破裂すれば、通り全体に汚物が吹き出す。
そして今回は、PHPそのものが破裂したのだ。
今回の脆弱性には、PHP2Shellという名前がある。Shellとはサーバーのコマンドラインのことで、それを手に入れれば、そのサーバーの制御権をほぼ手に入れたと考えていい。だからこの名前の意味は極めて直接的で、PHPから、あなたのサーバーへ直通する、ということだ。
これには2つの番号が含まれる。CVE-2026-109618とCVE-2026-109619だ。
CVEは、脆弱性の身分証明書番号のようなものだと理解していい。世界共通だ。
深刻度はCVSSで採点され、満点は10点。最初に漏れたバージョンは満点だったが、最終的には9.2点が付けられた。
この2つの脆弱性を説明するには、まず最近誰もが痛い思いをしている概念から話す必要がある。
メモリ。
プログラムが動くとき、一時データを保存するためにシステムから絶えずメモリを「借り」、使い終わったら「返す」。PHPのインタプリタはC言語で書かれている。C言語は速いが、借りるのも返すのも、依然としてプログラマー自身が帳簿をつけるしかなく、システムは面倒を見てくれない。
だからこの帳簿を一度でも間違えると、問題が起きる。
1つ目の脆弱性、CVE-2026-109619。専門用語では「解放後使用」(use-after-free)という。
例を挙げよう。あなたがホテルを経営しているとする。最初の客が荷物を預けに来て、係員はその荷物を18番のロッカーに入れ、ノートに記録した。
その後、客が帰り、ロッカーは空にされ、2人目の客に使われた。
すると問題が起きた。係員はノートの元の記録を消し忘れていたのだ。
2人目が自分の荷物を入れたばかりなのに、係員は古い記録を持って18番のロッカーを開けに行き、中身が1人目の荷物だと思い込んでいる。
これで厄介なことになる。彼は2人目の荷物を見てしまうかもしれないし、中のものを壊してしまうかもしれない。
PHPの今回の問題は、似たようなところで起きている。本来なら返却済みのメモリが、また新しいデータの保存に使われたのに、PHPは元の場所を指す古い記録を残したままなのだ。
つまり、PHPは前のデータを処理しているつもりでも、実際に触れているのはとっくに別のデータになっている。だから、攻撃者がこのプロセスを巧妙に操作できれば、本来触れてはいけないデータを読み取ったり改ざんしたり、さらにはサーバーを制御するチャンスが生まれる。
これを解放後使用、英語ではUse-After-Freeと呼ぶ。
軽ければ、サーバーのメモリ内にある他のユーザーのパスワード、トークン、APIキーを読み取れる。深刻な場合は、メモリを巧妙に配置した上で、そのサーバーを使って自分のコードを直接実行できる。その結果は想像を絶する。
2つ目の穴:メモリ不足時の緊急退避。これがCVE-2026-109618だ。
この脆弱性はさらに面白い。やはりホテルを例にしよう。
ホテルに荷物預かり所があり、客が荷物を預けに来るたびに、係員はまず台帳の数を1増やし、それから荷物をロッカーに入れるとする。
最初の9個は順調だった。10個目で、係員が数を9から10に変えた直後、荷物を入れようとしたその瞬間。
突然停電になり、荷物はまだ入れられていないのに、システム全体が強制的に中断された。
するとさらにありえないことが起きる。ホテルが緊急清掃プログラムを起動し、清掃員が台帳を見ると、「今日は荷物が全部で10個預けられた」と書いてある。
そこで台帳の数に従って、一つずつ確認していく。
ところが問題は、10個目の荷物はそもそも入れられていない。その場所には、まだ何かごちゃごちゃした古いものが入っているかもしれない。
しかし清掃員はそんなことは知らず、気にもせず、台帳の通りにそれを正常な荷物として扱ってしまう。
これで、システム全体に問題が起きかねない。
PHPの今回の2つ目の脆弱性も、同じ理屈だ。
データを整理するとき、まず数を1増やし、それから本当のデータを保存する。もしちょうどこの2つのステップの間でメモリを使い果たすと、PHPは緊急に操作を中断する。
しかし後でクリーンアップを担当するプログラムは、依然としてその1増えた数に従ってデータを処理する。
その結果、正しく初期化されていないメモリを、正常なデータとして使ってしまう可能性がある。
攻撃者がこの状況を巧妙に作り出せれば、サーバーをさらに制御するチャンスが生まれる。
そして最も恐ろしいのは、ある種のサーバー設定では、このプロセスがウェブサイト自身の業務コードが動き始める前にも発生し得るということだ。
自分で書いたウェブサイトがどれほど慎重でも、手を出す機会すらないかもしれない。
一般人に関係あるのか?もちろんある。あなた自身のパソコンやスマホは影響を受けない。影響を受けるのは、あなたが使ったことのあるウェブサイトだ。もし誰もメンテナンスしていない小さなサイトがハッキングされたら、そこに残したアカウント、パスワード、携帯番号、そしてすべての情報が、漏れてしまうかもしれない。
これも、多くのエンジニアがこの2日間また言っている理由だ。C言語のようなメモリをすべて人間が管理するものは、いずれこういうことが起きる。Rustのようなメモリ安全な言語は、コンパイル段階でこうしたミスをさせない。だからOpenAIが今回Rust財団をわざわざ支援したのも、理由がないわけではない。
この2つの脆弱性に話を戻すと、実は歴史をさかのぼれば、これらは決して新しいものではないことが分かる。
2004年、ドイツのセキュリティ研究者Stefan Esserが、PHPでメモリ上限に関係する最初のリモート脆弱性を発見した。当時、この種の攻撃の悪用手法は公開されておらず、少数のセキュリティ企業の間で秘密裏に流布しているだけだった。
この問題は確かに修正されたが、その兄弟たちは、まだ残っている。
2024年、PHP財団はドイツのSovereign Tech Agencyから資金支援を受け、OSTIFの調整を通じて、フランスのセキュリティ企業Quarkslabに、PHPとしては長年なかった外部セキュリティ監査を依頼した。
そのうちの一つの問題を修正する際、財団が雇ったあるコア開発者が類似の脆弱性を発見した。彼は理論上悪用可能だと考えたが、正直なところ、具体的な攻撃経路を一つも見つけられなかった。
そして修正案はそのまま放置され、セキュリティチームはいくつかの案の間を行ったり来たりし、止まっては再開し、再開しては止まった。後にPHP財団は振り返りの中で自ら認めている。これはセキュリティチームの意思決定プロセスと人手不足による、いわゆる「構造的失敗」だと。
そして2026年になった。
今年5月、冒頭のCalifというセキュリティ企業が「AI脆弱性発見月間」というシリーズを立ち上げた。そのうちの一本では、Claudeを使ってPHPから21年前のメモリ脆弱性を掘り出した。
そして、AIは加速を続け、止められない。
7月30日、CalifはOpenAIのセキュリティ計画「Patch the Planet」の中で、PHPの監査を開始した。
わずか2日後の8月1日、彼らは「メモリ枯渇」を引き起こせる最初の入口を見つけた。
8月11日、Califは脆弱性をPHPに報告した。同じ日、OpenAI自身の研究者も独立して同じ問題を報告した。
8月15日、PHPは、Califが提出した攻撃デモが確かに動作することを確認した。
8月24日と9月18日、セキュリティ企業WizとOpenAIが、さらに多くの攻撃経路を相次いで報告した。
この2つの脆弱性は影響があまりに大きく、PHPの基盤に関わるため、世界中のパートナーを組織して協調修正を始めた。クラウド事業者、システムディストリビューター、セキュリティ企業はすべて事前準備が必要で、さもなければ脆弱性の公開がかえって攻撃者にチャンスを与えかねない。
これが血の滴るような対比だ。2024年、あるコア開発者が長い時間をかけてもこの脆弱性の悪用方法を見つけられなかった。2026年、監査開始から最初の入口の発見まで、わずか2日しかかからなかった。
そして、さらにありえないのは、
インターネット全体が、誰もお金を払わず、真剣に見る人もほとんどいないコードの上に立っている、ということだ。
今回も同じだ。PHP財団自身が認めているように、このメモリ問題は2024年から兆候があり、今日まで引き延ばされた重要な理由の一つは人手不足だ。振り返りの最後で、彼らはほとんど助けを求めるような形で、企業、ホスティング事業者、政府にスポンサーになってほしいと訴えている。
Hacker Newsでは、DebianでPHPのパッケージングを担当するメンテナーのスポンサーページを誰かが掘り出し、「月に700ドルもいかないのか?」と皮肉った。
そして世界中のサーバーは、本当に、こうした人々が深夜に起きてリリースするのを待っているのだ。
だが、これらの基盤ソフトウェアがこれほど脆いのに、なぜ長年、インターネットはおおむね無事だったのか?
理由は極めてシンプルで、少し前に爆発的に話題になったREAのリバースエンジニアリングと同じだ。
脆弱性を見つけるのが高すぎるからだ。
多くの商用ソフトウェアを誰もリバースエンジニアリングしたがらないのと同じで、多くの商用ソフトウェアの保護は、他人が読めないこと、そしてその研究に時間をかける気にならないことに依存している。
脆弱性探しも同じだ。PHPのカーネルやOpenSSLのような場所でメモリ脆弱性を見つけて悪用できる人間は、世界中でせいぜい数百人だろう。
彼らの時間は高価で、一つの脆弱性に数か月もかかる。だから多くの地雷は、二十年も静かに埋められたままでいられる。本当に誰も相手にしたがらず、コストが高すぎるからだ。
しかしAIは、過去の世界のあらゆる「高さ」を、跡形もなく消し去った。
Anthropicは今月、昨年11月から今年10月初めまでに、そのモデルがオープンソースプロジェクトから合計29439件の脆弱性候補の手がかりを見つけ出したと発表した。
OpenAIも今夜の長文で、PHPのこの2つの穴は、彼らがすでに発見し、修正中のいくつかの重大な脆弱性の一つにすぎず、今後数か月で「同様の発見は急激に増える」と述べている。
PHP2Shellは終わりではなく、始まりにすぎない。こういうことは、これから必ずどんどん増えていく。必ずだ。
しかしここで最も核心的なBUGが出てくる。数学と同じだ。数学の証明と発見はどんどん速くなるが、核心的なボトルネックは検証に移った。少し前にOpenAIが出した700本以上の論文は、世界中の数学者に正しいかどうか検証させようとすれば、最低でも数か月、場合によっては一年かかる。
サイバーセキュリティも同じだ。PHPのこの脆弱性の発見には、わずか2日しかかからなかった。
しかし修正には、まるまる2か月かかった。
脆弱性の発見はどんどん増えるが、これらの基盤の脆弱性を修正できる人は、そもそもそれほど多くない。
これは、私たちの古いことわざの通りだ。
「千日も賊をやる者はいても、千日も賊を防ぐ者はいない。」
ふと、ある物語を思い出した。
1871年、『不思議の国のアリス』を書いたキャロルは、続編『鏡の国のアリス』を出した。本の中に赤の女王がいて、アリスを引っ張って必死に走らせる。しばらく走った後、アリスは周りの景色が少しも変わっていないことに気づく。
赤の女王は彼女に言う。「ここでは、その場に留まるために、全力で走り続けなければならないのよ。」
これは、AIが今、社会にもたらしている苦境のようだ。
セキュリティだけではない。科学的発見が加速し、コードを書くことが加速し、ソフトウェアの複製が加速し、攻撃が加速し、防御も加速する。良いものも悪いものも、一緒に狂ったように加速している。
そして私たち一人ひとりが、この赤の女王のレースの中にいる。
立ち止まる代償は、誰も覚えていない古いウェブサイト、15年前に作ってから一度もログインしていない管理画面、まだPHP 5で動いている企業システムだ。それらは遅い世界では何年も安穏としていられるが、速い世界では、生きた標的だ。
信じてほしい。この世界には、メンテナンスされなくなったPHPの古いプロジェクトが無数にある。彼らは今、すべて標的だ。
人間はAIに走り勝てない。これはもう議論の余地がない。
しかしこの物語全体の中で、あらゆる重要な意思決定の場に立っているのは、依然として人間だ。
善意の者もいれば、悪意の者もいる。
今、この万能の道具は、すべての人の手に渡された。
正義は悪に勝つのか?
AIは人類に、一夜にして過去には想像もできなかった力を与えることができる。しかし、その力に見合う自制心を、一夜にして学ばせることはできない。
技術の進歩のスピードが、
人間性の成熟のスピードをはるかに超えるとき、
私たちはより良い世界へ向かって走っているのか、それとも自らの深淵へ加速しながら向かっているのか?
正直なところ、今の私には分からない。



