← ishizakahiroshi.com
設計判断5分で読める要約版

PHP2ShellとPwnEscapeから考える更新の責任分界と止められる可用性設計

更新する責任と止める判断。アプリと仮想化ホストを異なる層として示したサーバーの絵

先に、結論を3行で書きます。

PHPとホストの更新、SLAと使える時間、冗長化と復旧準備という三つの視点
更新の担当、契約が数える時間、障害から戻る手段を、それぞれ確認します。

PHPを更新すれば、ホスト側の対応も終わったと言えるのでしょうか。緊急メンテナンスでサービスが止まったら、SLAの数字だけで評価できるのでしょうか。2026年10月23日に確認した公開資料から、更新と可用性をつなぐ確認を考えました。

Qiitaで全文を読む →YouTube で聴く →

音声で聴く(AI ラジオ解説・19 分)

この記事を NotebookLM でラジオ風に音声化したものです。移動中や作業しながらでもどうぞ。

更新の場所を、二つに分けます

PHP2ShellはPHPの実行環境、PwnEscapeは仮想マシンを支えるホスト側の問題です。典型的な自己管理VPSでは、ゲスト内のPHPは利用者、仮想化ホストは事業者が管理します。共用・マネージド・コンテナでは分担が変わるため、サービス名だけで担当を決めません。

PHP公式の更新勧告と、個々の実行方式で攻撃が実証された条件も分けて読みます。「FPMなら安全」と一括りにせず、使う実体と配布元の修正を確かめます。古い系列への例外的な修正やOSベンダーのバックポートは、通常サポートの再開を意味しません。PHP公式の告知、AWSのホスト脆弱性に関する告知を起点にできます。

自己管理VPSではアプリやゲスト側と仮想化ホスト側で更新主体が異なる責任分界図
修正の公表、導入、稼働への反映、業務の動作確認は、別々の証拠でつなぎます。

99.99%の後に、何を数えるかを読みます

31日の月の全時間を分母にする単純計算では、99.99%に対応する利用不能時間は4分27.84秒です。これは本稿の理論計算で、各社が自由に止めてよい時間ではありません。実際のSLAには対象プラン、障害の定義、測定方法、除外条件、申請期限があります。

たとえばさくらのVPSのSLAでは、対象構成や保守の扱いが定められています。ある契約の条件を、別の会社やサービスへそのまま移せません。料金の減額と、利用者が失った仕事の時間も別です。

告知も「新規受付」「管理画面」「既存サーバー」を分けて読みます。予定枠、作業完了の追記、個々の利用者の実測停止時間は同じではありません。公開本文を確認できなかったことを、未対応と読み替えないようにします。

利用者の利用不能と契約上のSLA算定対象が一致しないことを示す図
契約に沿う記録と、利用者の操作が完了したかという記録を、両方残します。

台数を増やした後も、戻す仕事が残ります

アプリを二台にしても、同じホストや一つのDBに依存していれば、共通して止まる場所が残ります。ログイン状態、アップロードファイル、処理中の注文も、箱を二つ描くだけでは引き継げません。再送で二重処理を起こさない工夫も必要です。

冗長化は処理を続ける備えで、バックアップは失われた状態から戻るための備えです。保存に成功した通知だけで終わらせず、隔離先で復元し、必要な機能と所要時間を確かめます。古い復旧元で脆弱なPHPを戻さない確認も含めます。

障害領域への切替と、バックアップからの復元・整合確認・再開判断を分けた図
切り替えられることと、安全に戻せることを別々に試します。

止める判断を技術者一人へ突然渡さず、判断する人、実行する人、利用者へ伝える人を決めておきます。次の保守案内の横に「何を確認したら完了と言うか」を一行残すところから、備えを増やせそうです。

もっと深く読みたい人へ

全文では、PHPの実行方式、各社の告知とSLAの条件、月日数別の計算、コンテナや状態管理、五つの合成ケース、更新手順と復元試験を詳しく整理しています。公開資料による調査と設計上の考察で、実利用先の障害体験や事業者の順位づけではありません。

Qiitaで全文を読む →YouTube で聴く →