PHP2Shellだけではない:サプライチェーンを襲った1週間の教訓

Author
2026年10月17日から21日までのわずか5日間に、現代のソフトウェア開発を支えるツールやサービスで、8件の独立したセキュリティインシデントが相次いで発生しました。対象は、ホスティング基盤、AI開発ツール2件、認証局(CA)、広く利用される主要ソフトウェア基盤3件、メディアサーバー、そして銀行にまで及びます。中でもPHP2Shellは大きな注目を集めましたが、それは長い連鎖の一つの輪にすぎませんでした。
一つひとつを見れば、互いに無関係な出来事に見えるかもしれません。しかし並べてみると、企業のセキュリティが、いかに自社の外にあるコード・鍵・サービスに依存しているかが浮かび上がってきます。本稿では、何が起きたのか、そこに共通する構造は何か、そして各社のチームが今すぐ確認できることは何かを整理します。

5日間で8件のインシデント
以下の日付は、公表または初報の日であり、必ずしも事象の発生日ではありません。
日付 | 対象 | 何が起きたか | 弱点の所在 |
10/17 | OpenCode | OpenCode Consoleの旧コンポーネントが侵害され、Consoleに保存されていたAIプロバイダーのAPIキーが流出。一部利用者がOpenAI・Anthropic・Googleアカウントでの不正課金を報告(キー保存者はConsole利用者の1.4%)。 | 外部ツールに保存された鍵 |
10/17 | Plex | Plex Media Serverの4件の脆弱性が連鎖的に悪用され、初期段階では暗号資産マイナーが設置された。CISAが実際の悪用を警告し、米連邦機関には10月23日までの修正期限が課された。 | インターネットに公開されたアプリケーションの脆弱性 |
10/17 | eMudhra | 認証局の署名鍵8件が、公開証明書から計算で導出可能な状態だった(うち1件の鍵は「4」という値)。Chrome・Firefox・Apple・Microsoft・Androidが10月19日〜20日に該当証明書をブロック。 | 認証局(サプライヤー)側の鍵生成の不備 |
10/21 | PHP(PHP2Shell) | 認証なしでWebサーバー上の任意コード実行を許す重大な脆弱性2件。PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12で修正。PHP 7.4〜8.1には公式リリースなし。10月24日に実際に機能する攻撃が確認された。 | 稼働中ランタイムの脆弱性 |
10/21 | Node.js(Node2Shell) | Node.jsに同梱される圧縮ライブラリの高深刻度の脆弱性。22.23.4 / 24.22.1 / 26.12.1で修正。Node.js 20はサポート終了のため修正なし。 | 同梱されたサードパーティ部品 |
10/21 | GitLab | CVSS 10.0(最高値)の脆弱性を修正。2014年のバージョン7.0以降のセルフマネージド環境すべてが対象。10月12日にも別のCVSS 10.0修正が公開されていた。 | 旧バージョンの露出 |
10/21 | LiteLLM | 人気AIライブラリのリリース1.107.0に、クラウド認証情報・SSH鍵・AIプロバイダーのキーを窃取するコードが混入。PyPI上に約1時間41分公開され、約49,000回ダウンロードされた。Wizによれば、窃取された認証情報は数時間以内に悪用された。 | 正規のリリース経路を通じた悪意あるコード |
10/21 | Railway | ホスティング基盤に顧客が保存していた環境変数に、第三者がアクセスした可能性(一部は復号済み)。全利用者に対し、保存済みの鍵・認証情報の再発行を要請。 | サプライヤーが保持する機密情報 |
10/21 | SBI(インド) | 初期調査で、個人情報を含む顧客レコード3,897件がダークウェブ上で確認された。 | 不明 |
弱点は、たいてい「他社」にあった
今回の一連の事象で注目すべきは、被害を受けた企業の多くが、自社を直接攻撃されたわけではないという点です。Railwayの利用者は何も誤ったことをしていません。OpenCodeの利用者は、信頼していたツールに預けた鍵のせいで金銭的な損失を被りました。eMudhraの証明書を使っていたWebサイト運営者には、その鍵が脆弱であることを知るすべがありませんでした。
8件のうち半数(Railway、LiteLLM、OpenCode、eMudhra)は、自社のコードベースの外側で保管されていた鍵やパスワードに関わるものでした。一方で、多くの企業のセキュリティレビューは、依然として「自社の内側」から始まります。守るべき境界線は、すでに自社の外へ広がっているのです。
「信頼できる更新」が被害を運んでくる
LiteLLMの事例は、「常に最新版にしておけば安全」という考え方が、もはや十分ではないことを示しています。悪意あるコードは、不審な経路からではなく、プロジェクトの正規のリリースチャネル(PyPI)を通じて、普段どおりの更新として届きました。
セキュリティ修正を迅速に適用することは、引き続き基本です。しかし同時に、どの更新が自動的に本番環境へ流れ込むのかを把握し、広く使われているパッケージに異常が見られたときに、更新を確認・一時停止できる手段を備えておく必要があります。
旧バージョンに「安全網」はない
修正が提供される範囲には、明確な線引きがあります。PHP 7.4〜8.1に対しては最低限のバックポートしか行われず、Node.js 20には修正そのものがなく、GitLabの脆弱性は2014年のバージョンにまで遡って影響しました。
そしてPHP 8.2は、2026年12月31日にサポート終了(EOL)を迎えます。選択肢は3つに絞られます。アップグレードする、ネットワーク上で隔離する、あるいはオフラインにする。旧バージョンのまま放置することは、選択肢には含まれません。
修正から攻撃までの時間は、驚くほど短い
PHPの修正版が公開されたのは10月21日。実際に機能する攻撃が確認されたのは、その3日後の10月24日でした。Plexに至っては、公表された時点ですでに悪用が始まっていました。
この短い猶予の中で問われるのは、「自社のどこで、どのバージョンが動いているか」を即答できるかどうかです。最新の構成情報(インベントリ)があれば、数日がかりの調査は数時間の対応に変わります。
今すぐ確認できること
以下はいずれも、新しいツールを導入しなくても着手できる項目です。いわば、サプライチェーンの「棚卸し」です。
- 本番環境で稼働しているランタイム・フレームワークとそのバージョンを、コンテナ、プラグイン、ベンダー製アプライアンスも含めて一覧化する。
- 自社のパスワード・鍵・トークンを保持している外部サービスを記録し、それぞれを誰が再発行できるかを明確にする。
- どの依存関係が自動更新されるかを把握し、リリースに異常が見られた場合にどう一時停止するかを決めておく。
- 利用中ソフトウェアのサポート終了(EOL)日を管理する。まずは2026年12月31日のPHP 8.2から。
- SBOM(ソフトウェア部品表)、すなわち各ビルドに含まれる全コンポーネントの一覧を維持する。これがあれば、影響を受けるバージョンの有無は「調査」ではなく「検索」で済みます。
自社が何に依存しているかを、はっきりと見る
今回のインシデントの大半は、特別な攻撃手法ではなく、ごく日常的な経路を通ってやって来ました。預けていた鍵、いつもどおりの更新、そして使い続けていた旧バージョンです。
自社の依存関係、鍵の所在、サポート状況を明確に把握しておくこと。それだけで、次に新たな脆弱性情報が公開されたとき、慌てることなく着実に対応できるようになります。備えあれば憂いなし、です。
TECHVIFYでは、依存関係、機密情報と鍵、CI/CDパイプライン、AIエージェントのアクセス権限を対象とした無料相談とエクスポージャーチェック(露出リスク診断)を提供しています。お気軽にご相談ください。
出典
[1] TechCrunch. Hackers hit AI coding tool OpenCode, running up charges on users’ AI accounts. https://techcrunch.com/2026/10/19/hackers-hit-ai-coding-tool-opencode-running-up-charges-on-users-ai-accounts/
[2] BleepingComputer. CISA: Hackers chain Plex flaws in Plex2Shell attacks to breach servers. https://bleepingcomputer.com/news/security/cisa-hackers-chain-plex-flaws-in-plex2shell-attacks-to-breach-servers
[3] The Next Web. eMudhra certificates weak keys: browsers block. https://thenextweb.com/news/emudhra-certificates-weak-keys-browsers-block
[4] Tenable. PHP2Shell (CVE-2026-109618, CVE-2026-109619): Frequently Asked Questions About Critical PHP Remote… https://www.tenable.com/blog/php2shell-cve-2026-109618-cve-2026-109619-frequently-asked-questions-about-critical-php-remote
[5] SecurityWeek. PHP2Shell Exploitation Moves From Probes to Working Shells. https://www.securityweek.com/php2shell-exploitation-moves-from-probes-to-working-shells/
[6] CISA. Critical Vulnerabilities in PHP Require Immediate Patching. https://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching
[7] Aikido. Node2Shell: Node.js Brotli RCE (CVE-2026-111497). https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497
[8] The Hacker News. Critical GitLab Flaw (CVSS 10.0) Could… https://thehackernews.com/2026/10/critical-gitlab-flaw-cvss-100-could.html
[9] Wiz. LiteLLM Compromised, Steals Credentials. https://www.wiz.io/blog/litellm-compromised-steals-credentials
[10] BleepingComputer. Railway warns devs to rotate secrets after potential breach. https://www.bleepingcomputer.com/news/security/railway-warns-devs-to-rotate-secrets-after-potential-breach/
[11] Moneylife. SBI data leak: 3,897 customer records found in preliminary analysis, IFF says customers not informed. https://www.moneylife.in/article/sbi-data-leak-3897-customer-records-found-in-preliminary-analysis-iff-says-customers-not-informed/81988.html
