PHP2Shell の発表を受けて、自分のシステムを AI と点検した
きっかけ・課題
2026年10月21日に、PHP2Shell と呼ばれる脆弱性(ソフトウェアの安全上の欠陥)が公表されました。PHP は Web サイトの裏側で広く使われているプログラミング言語で、今回の欠陥は外部からサーバーに勝手な命令を実行させられるという重大なものです。同じ日に、Node.js(JavaScript というプログラミング言語をサーバー側で動かすためのソフトウェア)も、10件の欠陥を直す修正版を出しました。
Small Piece が持っているシステムは、PHP ではなくほぼ Node.js で動いています。PHP2Shell は直接関係なさそうですが、Node.js 側は確認が要ります。自分一人でやるなら、ニュースを読み、持っているシステムの構成を思い出し、どの版が対象かを調べて、と時間がかかる作業です。そこで今回は AI エージェント(指示を受けて、調べものやファイルの編集、コマンドの実行まで自分で進める AI。今回は Claude Code を使いました)に任せてみました。
考えたこと
影響を調べるには、まず「自分が何を持っているか」の棚卸しが要ります。Small Piece では Web サイトのソースコードと運営の資料を一つの置き場にまとめています。そこに記録のあるシステムを AI に洗い出してもらい、公表された情報と突き合わせることにしました。
自分に知見がない部分は、素直に AI に聞くことにしました。欠陥がどういう条件で成立するのか、使っているソフトの保守がいつまで続くのか、といったことです。
一方で、「確認できたこと」と「確認できないこと」は分けてもらうように頼みました。手元から見えないサーバーのことは、AI にも分かりません。
やってみたこと
最初に影響を調べました。smallpiece.jp は Next.js(Node.js の上で動く、Web サイトを作るための枠組み)で作り、Vercel というホスティングサービスに置いています。お手伝いしている黒猫台湾まつりのサイトは、GitHub Pages という静的なサイトの置き場です。どちらにも PHP はありません。この 2 つのサイト本体には PHP2Shell の直接の影響はない、と判断しました。別に使っているサーバーや外部サービスは、確認する対象として残しました。Node.js のほうは、手元のパソコンがすでに修正版でした。Vercel については修正版を自動で配る方針までは確認しましたが、本番環境に適用されたかどうかは、この時点では未確認でした。
ここで思わぬことが分かりました。サイトの枠組みである Next.js が 14 系のままで、保守は2025年10月に終わっていたのです。サイトで使っているソフトウェア部品の全体を点検ツールにかけると、24 件の脆弱性の指摘が出ました。次の 15 系も、公式のサポート方針から計算すると、保守の期限を迎える時期でした。今後の保守も考えて、16 系へ移ることにしました。
移行は AI が進めました。書き方の変わった 2 ページと、コードを点検する設定を直し、ビルド(ソースコードから公開できる形のサイトを作る処理)をやり直します。そのうえで、サイトの 15 の経路について、本文の文章、リダイレクト、存在しないページの扱いが移行前と同じであることを比べてから、本番(実際に公開されているサイト)に反映しました。
手元から見えないサーバーや外部サービスの確認は、一覧にして順に進めています。
結果・気づき
影響の調査、サイトの枠組みの入れ替え、本番への反映までが1時間足らずで終わりました。
知見のない部分を補ってもらえたのが大きかったです。Next.js の保守がいつ終わるのか、16 系で書き方がどう変わったのか、反映がうまくいったことをどう確かめるのか。どれも、自分で調べれば時間のかかることでした。
ただ、AI が判断を代わりにしたわけではありません。どこまでやるか、本番に出すかは自分で決めています。AI が「確認できないこと」を正直に分けて出してくれたので、残りの作業がはっきりしました。
セキュリティの情報は、自分の持ち物の棚卸しがあって初めて役に立つ、ということも改めて感じました。記録を一か所にまとめてあったから、AI にも洗い出せたのだと思います。
今回の PHP の欠陥を見つけた Wiz 社は、AI を使って見つけたと説明しています。AI で見つかった欠陥に AI で対応する、そういう時代になってきたようです。
今後
残っている確認を終えます。開発のときにだけ使う部品にも指摘が残っているので、こちらは順に更新していく予定です。あわせて、依存関係(サイトが動くために使っている、他の人が作ったソフトウェア部品の集まり)の点検を定期的に行う方法を考えます。