自分の Laravel アプリは PHP2Shell の影響を受けますか?
アプリが動く PHP が系列ごとの修正版より古い場合、または PHP 8.1 以前で配布元の修正が入っていない場合は影響を受けます。PHP2Shell は PHP 本体の脆弱性(CVE-2026-109618 と CVE-2026-109619)です。Laravel 公式も対応状況の記事で、Web 上のすべての PHP アプリに影響する非常に深刻な脆弱性だとしています。
Laravel の更新や composer update で直りますか?
直りません。Laravel 本体も vendor 内のパッケージも PHP で書かれたコードで、サーバーの PHP そのものは変わりません。Laravel は 10月21日、サービスごとの対応をまとめました(同日 23:26 UTC 更新時点)。
- Laravel Cloud:稼働中のすべてのアプリに修正をその場で適用済みで、再デプロイは不要。PHP は 8.5.12・8.4.27・8.3.36・8.2.35 のいずれかになっています。
- Forge:PHP 8.2〜8.5 なら、サーバーごとに「Update PHP」をクリック。失敗したら SSH で更新します。Ubuntu 20.04 以前のサーバーは更新できないため、新しいサーバーへ移し、それまでは旧サーバーの停止を勧めています。
- Vapor:修正済みランタイムが公開済み。PHP 8.2 以降のネイティブランタイムは再デプロイ、カスタム/Docker イメージは新しいデプロイが必要です。
- PHP 8.0・8.1:修正はありません。8.2 以降へ上げてください。
Forge 向けの告知では、自動セキュリティ更新では PHP が更新されないこと、使っていない版も含めて入っているすべての PHP を更新することも案内しています。
Laravel が使っている PHP のバージョンはどう調べますか?
- コマンドライン:
php artisan aboutの Environment 欄に PHP のバージョンが出ます(コマンドライン用の PHP です)。 - Web 側(PHP-FPM):Forge なら PHP タブ。SSH では Forge の告知どおり
php8.4 -vとphp-fpm8.4 -vの両方を確認します(8.4 は自分の系列に置き換え)。 - Vapor:
vapor.ymlのruntimeが系列を決め、修正の有無は最後のデプロイで決まります。
確認したバージョンを PHP2Shell チェッカーに入力してください。ほかの方法は PHP バージョン確認方法へ。
どの PHP バージョンに上げればいいですか?
Laravel が対応する系列の修正版を選びます。Laravel のサポートポリシーは次のとおりです。
| Laravel | 対応 PHP | 状態 | 選べる修正版 |
|---|---|---|---|
| 13 | 8.3〜8.5 | サポート中 | 8.3.36・8.4.27・8.5.12 |
| 12 | 8.2〜8.5 | セキュリティ修正のみ(2027年2月24日まで) | 8.2.35〜8.5.12 |
| 11 | 8.2〜8.4 | サポート終了(2026年3月) | 8.2.35・8.3.36・8.4.27 |
| 10 | 8.1〜8.3 | サポート終了 | 8.2.35・8.3.36 |
| 系列 | 最初の修正版 |
|---|---|
| PHP 8.2 | 8.2.35 |
| PHP 8.3 | 8.3.36 |
| PHP 8.4 | 8.4.27 |
| PHP 8.5 | 8.5.12 |
| 8.1 以前 | 新しいリリースなし(7.4・8.0・8.1 は公式ソースパッチあり) |
いちばん手早いのは今の系列の修正版への更新です。PHP 8.1 で動く Laravel 10 は、8.2 か 8.3 へ移り、Laravel の更新も計画してください(PHP サポート終了版)。
Laravel の PHP は誰が更新しますか?
| 動かしている場所 | PHP を更新する人 | すること |
|---|---|---|
| Laravel Cloud | Laravel(適用済み) | バージョンを確認 |
| Forge | ご自身(サーバーごと) | 入っている PHP をすべて更新 |
| Vapor | ご自身 | 再デプロイ、または新しいイメージでデプロイ |
| レンタルサーバー | 事業者 | PHP2Shell 対処法:問い合わせ文あり |
| 自分の Ubuntu サーバー | ご自身 | Ubuntu での PHP 更新 |
| Docker・Sail・FrankenPHP | ご自身(イメージを作り直す) | Docker の PHP イメージ |
常駐プロセスの再起動を忘れずに。 パッケージ更新で PHP-FPM は再起動されますが、キューワーカー、Horizon、Octane、Reverb は再起動するまで古い PHP のままです(queue:restart、horizon:terminate、octane:reload)。
Laravel アプリがすでに侵害されていないか、どう確認しますか?
public:index.php以外の.phpファイル。storage:アプリが作った覚えのない PHP ファイル。- スケジューラ・cron:追加した覚えのないタスクや
.envの変更。 - アプリのユーザー:新しい管理者や権限の変更。
不審な点があれば 侵害チェックリストに沿って対応し、.env の秘密情報を入れ替えます。APP_KEY を変えるとログイン中のユーザーが締め出され、古い鍵で暗号化したデータが読めなくなるため、APP_PREVIOUS_KEYS に旧鍵を残してください。
WAF や PHP の設定変更で Laravel は守れますか?
どちらも修正ではありません。Cloudflare は WAF が既知のパターンを防ぐ一方、攻撃者が手口を変えてすり抜けようとしていたと公表しています。Laravel のミドルウェアは PHP がリクエストを解析した後に動き、PHP 公式はアプリのコードより前に到達できる攻撃経路を確認しています。暫定対策の限界は CVE-2026-109618 回避策、更新の進め方は PHP2Shell 対処法をご覧ください。
Forge の自動セキュリティ更新で PHP2Shell は直りますか?
直りません。Laravel の Forge 向け告知によると、Forge は PHP を専用のパッケージリポジトリから入れているため、自動セキュリティ更新では PHP は更新されません。サーバーごとに、入っているすべての PHP で「Update PHP」を実行してください。
Vapor で再デプロイしました。これで十分ですか?
PHP 8.2 以降のネイティブランタイムなら、再デプロイで修正済みの PHP になると Laravel は案内しています。カスタムランタイムや Docker イメージのランタイムは、イメージを作り直した新しいデプロイが必要です。
情報源
このページの主要な事実(修正版、CVE の内容、配布元のパッケージ、公的機関の呼びかけ)は公式の情報源にもとづいています。研究者の報告、報道、コミュニティの投稿はそれぞれ区別して表示しています。
- Security advisory: Critical remote code execution vulnerabilities, update now公式 The PHP Group
- RCE via OOM corruption公式 The PHP Group
- RCE via stale global state公式 The PHP Group
- Cloudflare deploys protections against php2shell vulnerabilityCDN 事業者 Cloudflare
- PHP critical vulnerability response updates公式 Laravel
- PHP security advisory (CVE-2026-109618, CVE-2026-109619)公式 Laravel (Forge docs)
- Release Notes (Laravel 13.x), Support Policy公式 Laravel