2026年10月、世界中のウェブサービスを支えるプログラミング言語「PHP」の中核部分に重大な欠陥(通称PHP2Shell、CVE-2026-109618とCVE-2026-109619)が発見され、日本だけでも少なくとも246の組織(国の機関、自治体、銀行、航空、電力、大学、ホスティング事業者など)がサービスを停止せざるを得なくなりました。欧州やカナダの政府サイトも予防的に閉鎖される事態となりました。
これは単なる「バグ」ではなく、長年使われてきたシステムの「設計の前提」と、現代の脅威環境のずれが露呈した出来事だと、認知科学者・苫米地英人氏(カーネギーメロン大学CyLabフェローなど)が指摘しています。氏が2026年10月26日に公開した政策・技術論文『既存資産を活かす国家サイバー耐性の再設計 PHP2Shell、ARPANET・UNIX・Machの歴史、メモリ安全性から導く二段階のDevSecOps政策』(https://tomabechi.jp/CyberResilienceDevSecOpsJA.pdf)では、全面的なシステム刷新を待たずに、今ある資産を活かして耐性を高める具体的な道筋が示されています。
PHPとは?なぜこんなに影響が大きかったのか
PHPは、WordPressをはじめとする多くのウェブサイトやウェブアプリケーションを動かすためのプログラミング言語です。インターネット上のサービスのかなりの部分が、この言語の「処理系(エンジン)」に依存しています。今回の欠陥は、このエンジン自体のメモリ管理に関わるもので、認証なしで遠隔からコードを実行される可能性(リモートコード実行)がありました。
論文では、被害の中心は「データが盗まれた」という確認された侵害ではなく、予防的なサービス停止だったと整理しています。多くの組織が「自分たちがどのバージョンのPHPを、どのような設定で動かしているか」を即座に把握できず、安全を確認できないまま止めるしかなかったのです。攻撃の試みは数百万件規模で観測され、修正公開前から悪用の動きもあったとされます。
根本的原因として挙げられるのが、1970年代のUNIXやC言語の設計思想です。当時は「信頼できる限られた研究者コミュニティ」が使う前提で作られていました。メモリ管理をプログラマに任せる仕組みは、現代のように匿名の攻撃者や国家主体が常時接続している環境では、危険が急拡大しやすい構造的弱点を抱えています。
ホテルの鍵のたとえでわかるメモリ安全性の問題
論文ではわかりやすいたとえが使われています。長い間同じプロセス(ワーカー)が動き続ける状況を「ホテルの部屋の再利用」に例えると、前の客が使っていた「台帳(メモリの参照)」が残ったまま次の客が入室してしまうような状態です。攻撃者はこれを悪用して、本来アクセスできない領域を操作できてしまいます。C言語のメモリ安全性の欠如と、プロセスが長く生き続ける設計が組み合わさった結果です。
また、以下の5つの構造的問題が指摘されています。
- 共通基盤(PHPエンジン)が単一障害点になっている
- 自組織の資産(どのバージョンか、設定はどうか)の把握が不十分
- サポートが終了した古いバージョンの多用
- 攻撃から修正までの時間が極端に短くなっている(数時間単位)
- 境界防御(ファイアウォールやWAF)だけでは限界がある
全面刷新ではなく「再設計」:二段階のDevSecOps政策
苫米地氏の中心的主張は、「OSやプログラミング言語を根本から入れ替えなくても、開発・調達・配備・運用の仕組みをDevSecOpsとして再設計すれば、攻撃にさらされる面、侵害の確率、影響範囲、修正までの時間、復旧能力をそれぞれ縮小でき、その効果は掛け算で効く」というものです。
DevSecOpsとは、開発(Development)、セキュリティ(Security)、運用(Operations)を一体として進める考え方です。セキュリティを「後から付け足す」のではなく、設計の段階から運用まで、すべてのサイクルに組み込むアプローチです。米国防総省や大手企業でも採用が進んでおり、苫米地氏は2020年から日本でDevSecOps Days Tokyoを主催して啓発を続けてきました。提案は明確に二段階に分かれています。
第一段階(すぐに取り組むべき運用の再設計)
古いビルをそのまま使いながら防火区画やスプリンクラーを整備するイメージです。具体的には:
- 資産台帳の作成と可視化(どのサーバでどのバージョンが動いているかを把握)
- 自動的なパッチ適用とワーカーの再起動
- 影響範囲を小さくする隔離(最小権限、ネットワーク分離、コンテナ活用など)
- 効果を測る指標の設定(資産把握率、パッチ配備時間、越権遮断率など)
これにより、露出時間や被害の伝播を抑え、復旧を速くできます。
第二段階(段階的な言語移行)
外部からの入力を処理する高リスクな部分から、メモリ安全性と障害隔離に優れた言語・ランタイムへ移行します。候補として挙げられるのは、Erlang(軽量プロセスによる障害隔離)、Rust(所有権によるメモリ安全性)、Common Lisp(ガベージコレクションと確実な後片付け)などです。AIを補助に使いながら進めますが、仕様の明確化や検証は人間が責任を持つ必要があります。全面刷新を待つのではなく、「今あるものを安全に使い続けながら、リスクの高い部分を徐々に置き換えていく」現実的な道筋です。
初心者・組織・国が今できること
- 個人や中小企業の方:自分たちが使っているサービスやウェブサイトがPHPに依存していないか意識する。運営側に「資産の把握と迅速な更新」を求める声を上げるだけでも意味があります。
- 組織の担当者:まず「自組織のPHPバージョンと設定を即時に把握できるか」を確認する。把握できない状態は、今回のような事態で最も大きなリスク要因でした。
- 政策・調達に関わる方:論文では、資産把握率や修正時間などの指標を義務化する、調達条件にメモリ安全へのロードマップを含める、といった具体的な政策提言がなされています。0〜30日で点検・修正、1〜3ヶ月でCI/CDと訓練、3〜12ヶ月で移行開始、といった工程も示されています。
時間軸が日単位から時間単位に圧縮されている現代では、「すぐに対応できる仕組み」を持っているかどうかが決定的です。
苫米地氏の論文は、政府関係者向けに技術的厳密さと平易な解説を両立させたもので、コード例や設定テンプレート、FAQも付録に含まれています。日本のサイバーセキュリティ意識の低さを長年指摘してきた氏の提言として、ぜひ一読をおすすめします。
論文URL
https://tomabechi.jp/CyberResilienceDevSecOpsJA.pdf既存のシステムを捨てるのではなく、活かしながら強くする。それが「サイバーレジリエンス(攻撃を受けてもより強く回復する力)」を現実的に高める道です。今回の事件を一過性のトラブルで終わらせず、仕組みを見直す契機にできるかどうかが、日本のデジタル基盤の未来を左右します。


人気記事