MacはPHPの脆弱性の影響を受ける?PHPが入っているか確認する方法
PHPの脆弱性(PHP2Shell)がMacに関係するのは、MacにPHPが入っている場合だけです。PHPのマニュアルによると、PHPはmacOS Monterey(12.0.0)以降には含まれていません。ご自身か、インストールしたツールが追加していなければ、たいていのMacには入っていません。ターミナルで1分もかからずに確認できます。
要点
PHPプロジェクトが2026年10月21日に出したアドバイザリは、ウェブのリクエストを処理するPHPに関する2件の深刻な脆弱性(CVE-2026-109618、CVE-2026-109619)を扱っています。macOS Monterey以降にはPHPは含まれていません。ターミナルで php -v と入力し、バージョンが表示されたら、入れたときと同じ方法で修正版に更新してください。
MacにはPHPが最初から入っていますか
最近のmacOSには入っていません。PHPのマニュアルは、PHPはmacOSのバージョン10と11には標準添付されていたが、macOS Monterey(12.0.0)以降には含まれていない、と書いています。最近のバージョンに入れるには、サードパーティのパッケージを使うか、ソースコードからコンパイルする必要があるとしています。
macOS Big Sur(11)以前のMacを使っている場合は、PHPが入っている可能性があります。どちらにしても、ご自身のMacで確かめるのが確実です。
MacにPHPが入っているか確認するには
ターミナルを使います。PHPのマニュアルには、php -v でSAPI名(CLIかCGIか)とPHPのバージョンを取得する例が載っています。バージョン番号が表示されればPHPは入っているので、下の修正版と比べてください。
- Finderで「アプリケーション」フォルダ内の「ユーティリティ」フォルダを開き、「ターミナル」をダブルクリックします。Appleのターミナルのユーザガイドにある開き方です。
php -vと入力して、returnキーを押します。- 1行目を見ます。「PHP 8.3.36」のように、「PHP」とバージョン番号で始まります。
- PHPのアドバイザリにある修正版、8.5.12、8.4.27、8.3.36、8.2.35と比べます。同じ系列でこれより古ければ更新が必要です。PHP 8.1以前は、PHPプロジェクトからの更新はもうありません。
どんな人のMacにPHPが入っていますか
主に、ウェブサイトを作ったりテストしたりする人です。PHPのマニュアルはmacOSへの入れ方として、サードパーティのパッケージを使う方法とソースからコンパイルする方法を挙げています。簡単な方法としてHomebrew(brew install php)を紹介し、MacPortsとFinkのパッケージも挙げています。
次のどれかに当てはまる場合も、PHPが入っている可能性があります。
- PHPのサイトをMacで作ったりテストしたりするために、PHPを入れた
- PHPを同梱したローカルサーバーのアプリを入れた。JPCERT/CCは、PHPを使用する製品もこの脆弱性の影響を受ける可能性があるとしています
- PHPの組み込みウェブサーバー(
php -S)を使ったことがある。マニュアルは、これはアプリケーション開発の支援用であり、公開ネットワーク上で使ってはいけないとしています
どれにも心当たりがなくても、php -v で確かめられます。
MacのPHPは実際に危ないのですか
使い方によります。PHPのアドバイザリは、影響を受けるのはウェブのリクエストを処理するすべてのPHPだとし、PHP-FPM、ApacheのPHPモジュール(mod_php)、php-cgi、FrankenPHP、LiteSpeedを挙げています。リスクが最も高いのはmod_phpで、認証なしのリクエストでアプリケーションのコードが動く前に攻撃が成立する実証済みのエクスプロイトがある、と書いています。
コマンドラインだけでPHPを使う場合についてアドバイザリは触れていないので、ここでも安全とは言えません。JPCERT/CCは、十分なテストをしたうえで速やかに修正版を適用するよう呼びかけています。Macでも、更新するのがいちばん簡単な答えです。
悪用については、2026年10月23日時点で、米国のCISAが10月21日の注意喚起(10月23日改訂)で、公開した時点ではこれらの脆弱性が実環境で悪用に成功した例を観測していないと書いています。
MacのPHPを更新するには
入れたときと同じ方法で更新します。PHPのアドバイザリは、PHP 8.5.12、8.4.27、8.3.36、8.2.35への更新を求め、ソースはphp.netのダウンロードページにあるとしています。パッケージマネージャで入れたなら、そのパッケージマネージャで更新します。ローカルサーバーのアプリに入っていたなら、アプリを更新するか、提供元のサイトで修正版のPHPを含むリリースがあるか確認してください。
設定の変更は修正になりません。アドバイザリは、挙げている緩和策は特定の攻撃経路への露出を減らすだけで、インストールを安全にするものではない、としています。
PHP 8.1以前を使っている場合、PHPプロジェクトはこれらのバージョンをもう更新しておらず、サポートされているバージョンへのアップグレードを勧めています。PHPのセキュリティチームは7.4、8.0、8.1向けに最小限のソースのバックポートを出していますが、これはソースからビルドする人向けです。
更新したら、もう一度 php -v を実行して、バージョン番号が変わったことを確かめてください。
Macでウェブサイトを見るとPHPが動きますか
動きません。PHPのマニュアルによると、PHPのコードはサーバーで実行され、その結果がブラウザに送られます。ブラウザが受け取るのは結果だけで、元のコードを知ることはできません。PHPで作られたサイトを見ても、MacでPHPが動くわけではなく、PHP2Shellはそのサイトのサーバー側の問題です。
ただし、乗っ取られたサイトが偽のログインページや不正なダウンロードで閲覧者に害を与えることはあります。それについては改ざんされたサイトを見ただけで感染するかで説明しています。
Failshotについて
Failshotは、Macのための「2つ目の層」のデバイスセキュリティ(second layer device security)です。パスワードが1つ目の層で、Failshotはその次の層です。あなたが離れている間に、誰かがそのパスワードでMacのロックを解除したときのためのものです。
Failshotがオンの間は、Macのロックを解除した人の写真を撮り、Pro では続けて5秒間の動画も記録します。Failshotのウインドウは、ロック解除が撮影されたことを解除した人に知らせます。オフにしたり、メニューから終了したりするには、Touch IDかFailshotのPINと答えが必要で、Macのパスワードでは操作できません。
FailshotはmacOS 14以降のMacに無料でダウンロードできます。無料で使えます。Pro では動画、メール通知、暗号化された Vault が加わります。Failshot Proは、failshot.appで7日間無料で試せます。申し込み時にカードを登録し、解約しない限り8日目に請求されます。なお、アプリは英語版のみです。
よくある質問
macOSを更新すればPHPも更新されますか
PHPのマニュアルによると、macOS Monterey以降にPHPは含まれていないので、入っているPHPは別に入れたものです。入れた方法で更新する必要があります。macOSの更新はそれとして続けつつ、パッケージマネージャやローカルサーバーのアプリのPHPまで更新されるとは考えないでください。
macOS Big Sur以前のMacにはPHPが入っていますか
入っている可能性があります。PHPのマニュアルは、PHPはmacOSのバージョン10と11に標準添付されていたとしています。ターミナルで php -v を実行し、バージョンが表示されたら上の修正版と比べてください。
10月21日のあとにも別のPHPの問題が出ましたか
はい。PHPプロジェクトは10月23日に、別の、はるかに起こりにくい問題(CVE-2026-115560)について情報を出しました。設定とアプリのコードが特殊な組み合わせのときだけ起こるもので、次の通常リリースまで session.upload_progress.enabled=0 を設定するよう勧めています。詳しくはPHP2Shellの解説をご覧ください。
出典
- Security advisory: Critical remote code execution vulnerabilities, update now (2026年10月21日) および informational advisory (2026年10月23日), PHP
- macOS へのインストール, PHP マニュアル
- サードパーティパッケージによる macOS へのインストール, PHP マニュアル
- PHP をコマンドラインから使用する, PHP マニュアル
- コマンドラインオプション, PHP マニュアル
- ビルトインウェブサーバー, PHP マニュアル
- PHP は何ができるものですか?, PHP マニュアル
- Macで「ターミナル」を開く/終了する, Apple サポート
- PHPにおける複数の脆弱性(CVE-2026-109618、CVE-2026-109619)に関する注意喚起, JPCERT/CC
- Critical vulnerabilities in PHP require immediate patching, CISA