セキュリティ

XAMPPの脆弱性とは?危険性とCVE-2024-4577への対策をわかりやすく解説【2026年10月】

XAMPPの脆弱性とは?危険性とCVE-2024-4577への対策をわかりやすく解説【2026年10月】

「XAMPPを使っているが、そのまま使い続けて安全なのか」——XAMPPの脆弱性を調べる人の多くが気にしているのはこの一点です。結論から言うと、XAMPPは開発の手軽さを優先してセキュリティを犠牲にした設計で、初期状態のまま外部に公開すると一発で乗っ取られる危険があります。一方で、ローカル開発に閉じて使う限り過度に恐れる必要はありません。ただし2024年に公表されたPHPの脆弱性「CVE-2024-4577」は、Windows版XAMPPを初期設定のまま使っているだけで攻撃対象になり得る点で例外です。この記事では、XAMPPが「脆弱」と言われる理由、本当に危険になる条件、CVE-2024-4577の影響、そして具体的な対策までを順に整理します。

まとめ:XAMPPの脆弱性で押さえるべき3点

  • XAMPPは開発用ツールで、初期状態は無防備。MariaDBのrootにパスワードが無い、phpMyAdminやディレクトリ一覧が見える、といった穴が最初から開いています。開発元のApache Friendsも本番環境での利用を想定していません。
  • 危険度は「どこに公開しているか」で決まる。ローカル(自分のPC内)に閉じているなら実害は限定的ですが、インターネットやLANに公開した瞬間にリスクが跳ね上がります。
  • CVE-2024-4577は例外。Windows版XAMPPは初期設定のままだと、この深刻度9.8のPHP脆弱性の対象になります。とくに日本語環境で危険度が高い点に注意が要ります。しかも2026年10月2日時点で配布されている最新のXAMPPも同梱PHPが古く、入れ直しても直りません。設定ファイルの1行を無効にするか、PHPを自分で差し替える必要があります。

やるべきことは、(1) 同梱PHPのバージョンを確認し修正版へ更新、(2) rootパスワード設定やphpMyAdminのアクセス制限など初期設定の穴を塞ぐ、(3) 外部公開はせず本番環境ではXAMPPを使わない、の3つです。以降でそれぞれ具体的に解説します。

XAMPPが「脆弱」と言われる理由と外部公開で問題になる初期設定

XAMPP自体に特殊な欠陥があるわけではありません。問題は、Apache・MariaDB・PHP・Perlを数クリックで動かすために、初期設定があえて「緩く」作られている点にあります。

XAMPPの初期状態で残る空パスワードや管理画面などの設定上の穴

インストール直後のXAMPPには、次のような無防備な設定がそのまま残っています。

  • データベースのrootにパスワードが無い:MariaDB(MySQL)の管理者ユーザーrootが空パスワードのまま。DBに接続できれば全データを読み書きできます。
  • phpMyAdminがそのまま使える:ブラウザからデータベースを操作できる管理画面が有効。外部から到達できれば、DBを丸ごと操作されます。
  • ディレクトリ一覧・サンプルページの露出:index.htmlが無いフォルダの中身が一覧表示され、内部構造や置き忘れたファイルが見えてしまいます。
  • 付属サービスの既定認証:ProFTPD(FTP)などが既定のユーザー名・パスワードで動くため、有効化したまま公開すると容易に侵入されます。

これらは「攻撃を受けやすい状態」であり、Webアプリ側にSQLインジェクションのような欠陥があればDBの中身まで抜かれます(アプリ側の対策はSQLインジェクションとは?仕組みと対策を参照)。XAMPPの緩い初期設定は、こうしたアプリの弱点をそのまま外に晒す土台になります。

XAMPPを本番非対応とするApache Friendsの公式方針

開発元のApache Friendsは、XAMPPを「開発者が手元でテストするための環境」と位置づけており、本番サーバーとしての利用を想定していないと明言しています。上に挙げた緩い設定は不具合ではなく、開発の手軽さを優先した意図的な仕様です。つまりXAMPPの脆弱性の多くは「本来の使い方を外れて外部公開すること」で顕在化する、という性質のものです。

XAMPPは常に危険なのか?危険度が変わる条件

「XAMPP=危険」と一括りにされがちですが、実際の危険度は使い方で大きく変わります。ここは危険度を左右する分岐なので、条件ごとに切り分けます。

ローカルに閉じているなら、初期設定の穴は過度に恐れなくてよい。自分のPC内(127.0.0.1)だけで動かし、外部から到達できない状態であれば、rootの空パスワードやphpMyAdminの露出が即座に悪用されることはありません。開発中はこの状態が普通で、毎回すべてを堅牢化する必要はありません。

次のいずれかに当てはまると、危険度は一気に上がります。

  • グローバルIPやポート開放でインターネットに公開している
  • Apacheの待ち受けを0.0.0.0にして社内LANからアクセスできるようにしている
  • 共有ネットワーク(社内・カフェ・学校)に接続したまま起動している

これらの状況では、空パスワードのDBやphpMyAdminが第三者から到達可能になり、初期設定の穴がそのまま侵入口になります。「動いたからそのまま公開」が最も危険なパターンです。ただし後述するCVE-2024-4577だけは別で、外部公開の有無に関わらずWindows版XAMPPそのものが対象になり得ます。

CVE-2024-4577:XAMPPを名指しで脅かしたPHP脆弱性

2024年6月6日、台湾のセキュリティ企業DEVCOREが公表したPHPの脆弱性がCVE-2024-4577です。深刻度を示すCVSSスコアは最高クラスの9.8(Critical)で、Windows版XAMPPの利用者にとっては、これまでの「設定次第」の話とは次元の違うリスクとなりました。

Windowsのphp-cgi.exeを狙う引数インジェクションの仕組み

この脆弱性は、WindowsでPHPをCGIモード(php-cgi.exe)で動かしている場合に発生します。Windowsが文字コードを変換する際の「ベストフィット(Best-Fit)」という挙動が悪用され、攻撃者が送り込んだ特殊な文字(ソフトハイフン 0xAD など)が、本来のハイフンに変換されてPHPの起動オプションとして解釈されてしまいます。その結果、PHPスクリプトのソースコードの盗み見や、サーバー上での任意のPHPコードの実行が可能になる仕組みです。攻撃はブラウザからのリクエスト1つで成立するため、遠隔から容易に悪用されます。

Windows版XAMPPが名指しされた既定の構成と日本語環境の危険性

ベストフィット変換は、Windowsのコードページ(言語設定)に依存します。中国語(936 / 950)や日本語(932)などのロケールで顕著に発生するため、日本語環境のWindowsは影響を受けやすい条件がそろっています。さらにWindows版XAMPPは、既定の構成でこの攻撃が通る状態になっていたことから、脆弱性の公表時に「XAMPPはデフォルトで影響を受ける」と名指しで注意喚起されました。DEVCOREによると、理由はPHPをCGIモードで動かしているかどうかではありません。XAMPPの設定ファイル httpd-xampp.conf にある ScriptAlias /php-cgi/ "C:/xampp/php/" という1行が、PHPの実行ファイルをWebから呼び出せる場所に公開しているためです。DEVCOREは、この構成だけで成立するとして「Windows上のXAMPPはすべての版が既定で脆弱」と書いています。日本国内でXAMPPを使う開発者にとっては、他人事ではない脆弱性です。

CVE-2024-4577の公表直後からの悪用とランサムウェア被害の実態

CVE-2024-4577は概念実証コードが早期に出回り、公表からごく短期間で実際の攻撃が観測されました。米CISAは2024年6月12日に本CVEを悪用確認済みの一覧(KEV)へ追加し、ランサムウェアでの利用を「Known(確認済み)」としています。侵入後にランサムウェア(TellYouThePassなど)を送り込む攻撃キャンペーンも報告されており、放置した場合に直結する被害は、情報漏えいやシステムの暗号化です。身代金要求型のマルウェアの全体像はランサムウェアとは?定義と基本的な概念で解説しています。「開発用だから」と更新を後回しにしていると、この経路で被害を受けかねません。

XAMPPの脆弱性への具体的な対策とPHP更新・公開設定の確認手順

ここまでの内容を、実際に手を動かす対策に落とし込みます。優先度の高い順に並べています。

最優先:最新のXAMPPでも同梱PHPは古いままという前提で確かめる

CVE-2024-4577はPHP 8.3.8 / 8.2.20 / 8.1.29で修正されました。その後、この修正を特定の言語設定で回避できるCVE-2024-8926が2024年10月に公表され、8.3.12 / 8.2.24 / 8.1.30で直っています。今から確かめるなら、こちらの版を基準にしてください。

注意したいのは、Apache Friendsの配布ページで2026年10月2日に確認できるWindows版の最新XAMPPが、8.0.30・8.1.25・8.2.12の3つだけという点です。同梱されるPHPもこの番号のままで、どれも修正版より古い版です。「XAMPPを最新版に入れ直す」では直りません。まず現在の状態を確かめます。

REM 同梱PHPのバージョン(コマンドプロンプト)
C:\xampp\php\php.exe -v

REM PHPの実行ファイルを公開している設定が残っているか
findstr /n /c:"ScriptAlias /php-cgi/" C:\xampp\apache\conf\extra\httpd-xampp.conf

2行目で ScriptAlias /php-cgi/ を含む行が表示されれば、DEVCOREが指摘した既定の構成のままです。PHPのバージョンが基準より古く、この行も残っているなら、次の手順で塞ぎます。

ScriptAliasの1行を無効にしPHP本体を差し替える手順

DEVCOREが更新できない環境向けに示した緩和策は、C:\xampp\apache\conf\extra\httpd-xampp.conf の ScriptAlias /php-cgi/ "C:/xampp/php/" の行頭に # を付けてコメントにし、Apacheを再起動することです。XAMPPの通常の使い方(PHPをApacheのモジュールとして動かす)では、この行が無くてもPHPのページは表示されます。

根本対策は、PHP本体を修正版へ差し替えることです。PHPの公式サイトでWindows版を入手し、C:\xampp\php を丸ごと退避してから入れ替え、元の php.ini の設定を移します。系列ごとの基準は次のとおりです。

PHP系列 最低限の版 サポート状況
PHP 8.5 修正済みで公開 2029-12-31まで
PHP 8.4 修正済みで公開 2028-12-31まで
PHP 8.3 8.3.12 以降 2027-12-31まで
PHP 8.2 8.2.24 以降 2026-12-31まで
PHP 8.1以前 公式修正なし サポート終了

サポート期限はPHP公式のサポート表のセキュリティサポートの終了日です。PHP 8.1は2025年12月31日に終わり、XAMPPの既定のPHP 8.2も2026年12月31日で修正が止まります。2026年9月24日時点の各系列の最新は8.2.34・8.3.35・8.4.26・8.5.11で、差し替えるならその系列の最新を選びます。差し替えた後は、拡張モジュールの読み込みエラーが出ないかを php -m で確かめてください。

XAMPPの初期設定の穴を塞ぐ認証・アクセス制限と不要サービスの停止

外部公開の可能性が少しでもあるなら、デフォルトの無防備を潰しておきます。

  • rootパスワードを設定する:MariaDBの管理者rootに強固なパスワードを設定します。XAMPPには localhost/security の設定ページが用意されており、ここからパスワード設定状況を確認・変更できます。
  • phpMyAdminのアクセスを制限する:設定ファイル(httpd-xampp.conf)で、phpMyAdminへの接続元を127.0.0.1(自分のPC)に限定します。
  • 不要なサービスを止める:使わないFTP(ProFTPD)やメール(Mercury)、Tomcatは起動せず、攻撃面そのものを減らします。
  • ディレクトリ一覧を無効化する:Apacheの設定でディレクトリの自動一覧表示(Indexes)をオフにします。

XAMPPを外部公開せずローカル開発に限定する運用と本番環境の分離

最も確実な対策は、XAMPPをローカル開発に閉じて使い、インターネットには公開しないことです。公開が必要なWebサービスは、本番向けに構成された環境で運用します。ローカル開発環境としてより軽量な選択肢を探しているなら、XAMPPの代替となるローカル開発環境ツールLaragonも候補になります。「開発で動いたものをそのまま本番に持っていく」運用は避け、本番と開発を分けることが根本的な安全策です。

XAMPPで作ったものを公開する段階になったら、本番向けの環境へ移す前に、アプリ側の弱点も含めて確かめておくと安心です。一創の脆弱性診断・セキュリティ診断では、公開前のWebアプリケーションとサーバー設定を診断しています。

自分のXAMPPが脆弱かをPHPの版・公開状態・認証設定で確認する手順

最後に、自環境の危険度を素早く点検するチェックリストです。

  • PHPバージョン:上記の php.exe -v で、8.3.12 / 8.2.24 以上(CVE-2024-8926まで修正済み)になっているか。
  • ScriptAlias:httpd-xampp.conf の ScriptAlias /php-cgi/ の行をコメントにしたか。
  • 公開状態:Apacheが0.0.0.0で待ち受けていないか、ルーターでポート開放していないか。ローカル限定になっているか。
  • DBパスワード:localhost/security ページで、rootにパスワードが設定されているか。
  • 不要サービス:使っていないFTP・メールサーバーが起動したままになっていないか。

1つでも該当すれば、対応する上記の対策を実施してください。

よくある質問

XAMPPは本番環境で使えますか?

開発元が本番利用を想定していないため、推奨されません。初期設定が無防備で、公開すると乗っ取りやデータ漏えいのリスクが高いためです。本番は本番向けに構成された環境を用意してください。

XAMPPをインストールしただけで危険ですか?

ローカル(自分のPC内)に閉じて使い、外部から到達できない状態であれば、初期設定の穴が即座に悪用されることはありません。ただしWindows版はCVE-2024-4577の対象になり得るため、ScriptAlias /php-cgi/ の行を無効にし、PHPを修正版へ差し替えておくことは必要です。

CVE-2024-4577はXAMPPのどのバージョンが対象ですか?

2026年10月2日時点で配布されているWindows版XAMPP(8.0.30・8.1.25・8.2.12)は、同梱PHPがすべて修正版より古いため、どれも対象です。DEVCOREは「Windows上のXAMPPはすべての版が既定で脆弱」としています。XAMPPのバージョンではなく、php.exe -v で実際のPHPの版と、ScriptAlias /php-cgi/ の行の有無を確認してください。

XAMPPのPHPバージョンを確認するには?

コマンドプロンプトで C:\xampp\php\php.exe -v を実行すると、同梱されているPHPのバージョンが表示されます。8.3.12 / 8.2.24 に達していなければ、PHP本体の差し替えが必要です。XAMPPを入れ直しても同梱のPHPは古いままなので、更新にはなりません。

MAMPやLaragonの方が安全ですか?

いずれも開発用ツールである点は同じで、外部公開すれば同様のリスクがあります。ツールを替えること自体が対策になるわけではなく、ローカル限定で使い、PHPを最新に保ち、初期設定の穴を塞ぐという基本は共通です。

関連記事

お気に入りに入れた記事の一覧

資料請求

RELATED POSTS 関連記事

目次