名古屋でAIシステムの開発をしている小嶋です。10月にPHPの重大な脆弱性「PHP2Shell」が公開されてから、こんな質問を受けました。
「Webサイトに脆弱性があっても、会社のシステムとWebサイトのサーバーは別だから、社内のデータまで危険にさらされることはない、と考えていいですよね?」
答えは「いいえ」です。この記事では、その理由と、デザイナーだけで作られたホームページが危うい理由を、先日行った中小企業21社のホームページの診断結果とあわせて整理します。
結論:サーバーが別でも、両者をつなぐ「線」を通って被害は広がる
サーバーが分かれていれば、Webサイトの穴から社内のシステムへ直接は届きにくいのは確かです。ただ、実際の被害は、Webサイトと社内をつなぐ「線」を通って広がります。中小企業でよくある線は、次の6つです。
- Webサーバーそのものに、お客様の個人情報がある
- Webサーバーに、外部サービスの「鍵」が置いてある
- Webサイトと社内で、パスワードを使い回している
- 会社のメールが、Webサイトと同じサーバーで動いている
- Webサーバーが、社内のネットワークとつながっている
- 改ざんされたサイトが、社員とお客様を狙う入口になる
PHP2Shell とは、PHPそのものにあった2件の重大な脆弱性の通称で、ログインしていない人が、どの.phpファイルにでもリクエストを送るだけで、サーバー上で命令を実行できてしまうものです。サーバー上で命令を実行できる穴は、サーバーの中にあるものを何でも読まれる、という意味です。だから、サーバーの中に「線」の端があると、そこから先へ広がります。
サーバーが別でも危ない6つの理由
1. Webサーバーそのものに、お客様の個人情報がある
問い合わせフォームの内容、見積もり依頼、会員登録、予約、ネットショップの注文は、Webサーバーの中か、すぐ隣のデータベースに残ります。社内のシステムが無事でも、お客様の名前・電話番号・メールアドレスはここから漏れます。情報漏えいとして公表が必要になるのは、多くの場合このデータです。
2. Webサーバーに、外部サービスの「鍵」が置いてある
WordPress の設定ファイルや、アプリの設定ファイル(.env など)には、次のようなものが書かれていることがよくあります。
- データベースのパスワード
- メールを送るためのアカウントとパスワード
- kintone や Salesforce、会計ソフト、決済サービスとつなぐための鍵(APIキー)
- クラウドの保存場所の鍵
サーバー上で命令を実行されれば、これらは読まれます。読まれた鍵を使えば、社内のクラウドのデータに、正規の利用者として入れてしまいます。
3. Webサイトと社内で、パスワードを使い回している
Webサイトの管理画面、FTP、レンタルサーバーの管理画面と、社員のメールや社内システムのパスワードが同じだと、Webサイト側で抜かれたものが、そのまま社内で使えます。
4. 会社のメールが、Webサイトと同じサーバーで動いている
中小企業では、info@ や社員のメールアドレスを、Webサイトと同じレンタルサーバーで動かしていることがよくあります。ここを取られると、本物の会社のアドレスから取引先へ、振込先の変更や請求書のなりすましメールを送られます。社内のシステムに入られなくても、取引先にまで被害が広がります。
5. Webサーバーが、社内のネットワークとつながっている
社内に置いたサーバー(オンプレミス)や、社内とVPNでつながったクラウドでWebサイトを動かしていると、Webサーバーを足場にして、社内のパソコンやファイルサーバーへ横に広げられます。
6. 改ざんされたサイトが、社員とお客様を狙う入口になる
会社の本物のサイトに、偽の入力画面や、ウイルスを配る仕掛けを入れられると、社員や取引先は信用して開いてしまいます。サイトの改ざんは、それ自体が次のサイバー攻撃の入口になります。
実例:サーバーが別でも、つながった線から被害が広がった
10月のお名前.com デスクトップクラウドへの不正アクセスも、構造は同じでした。乗っ取られたのは事業者側のサーバーでしたが、GMOの公表によると、接続していた利用者のパソコンの中の情報まで、脅しの材料にされています。攻撃者を名乗る声明は、その経路として、利用者のパソコンとつながるリモートデスクトップのドライブ共有の設定を挙げています。サーバーが別でも、つながっている線があれば、被害はそこを通ります。
デザイナーだけで作ったホームページが危うい理由
ここからは、もう一つの大事な点です。ホームページが、システムエンジニアのいない体制で、デザイナーだけで作られていることが、穴を残す大きな原因になっています。
ホームページづくりには、二つの専門があります。
- デザイナーの仕事:見た目、読みやすさ、ブランドの伝わり方
- 技術者の仕事:PHPやWordPress本体・プラグインの版の更新、守りの設定、サーバーの設定、鍵とパスワードの管理
見た目の仕事と、守りの仕事は、別の専門です。デザイナーの腕が悪いという話ではありません。問題は、守りの仕事を担う人がいないまま公開され、作ったあとの更新が誰の仕事にもなっていないことです。WordPress は、本体もプラグインもPHPも、作ったあとに更新し続けないと、時間とともに穴が増えていきます。
先日、愛知の中小企業21社のホームページを、外から見える範囲で診断しました。結果は次のとおりです。
- 14社が WordPress で作られていた
- 不正なスクリプトの読み込みを防ぐ設定(Content-Security-Policy):21社中0社
- 必ず https で開かせる設定(HSTS):21社中2社
- 他のサイトに画面を埋め込ませない設定(X-Frame-Options):21社中2社
- サポートの切れたPHPの版が外から見える:1社
- 古い版の WordPress 本体:1社
- 既知の脆弱性がある古い版の jQuery:4社
デザインはきれいに仕上がっているのに、守りの設定はほとんど手つかず、というサイトがほとんどでした。成果物を見る限り、デザインと技術の両方がそろった体制で作られたサイトは、ごく少ないように見えます。
なお、PHP2Shell の公式の修正版が出たのは 8.2〜8.5 の4つの版だけです。古い版のPHPのままのサイトは、レンタルサーバーの会社や配布元が対応しない限り、穴が残ります。
21社の診断の詳しい結果は、こちらにまとめています。
中小企業21社のホームページを、SEO・AEO・GEOと安全面で診断して分かったこと https://exbridge.jp/vibeblog/2026-10-24-homepage-shukyaku-security-21sha.html#ref=vibeblog-shanai-roei
会社で確かめておくこと
- Webサーバーに、どんな個人情報が残っているか:問い合わせフォームの送信内容を、サーバーに保存し続けていないか
- 設定ファイルに、どの外部サービスの鍵が入っているか:鍵には、必要な最小限の権限だけを与えているか
- パスワードの使い回しがないか:Webサイト関係のパスワードを、社内のシステムやメールで使っていないか
- 会社のメールが、Webサイトと同じサーバーで動いていないか
- Webサーバーが、社内のネットワークとつながっていないか
- PHP・WordPress・プラグインが最新か:作ったあとの更新を、誰の仕事にするか決まっているか
このうち、外から見える範囲(PHPの版が古くないか、守りの設定があるか)は、当社のシステムで、URLを入れるだけで確かめられます。ふつうの訪問者がページを開くのと同じ範囲だけを見ます。
Kurage Security Check(デモ) https://proto.exbridge.jp/kseccheck/#ref=vibeblog-shanai-roei
2〜5の「線」は、サーバーの中を見ないと分かりません。サーバーの中の設定や、鍵・パスワードの整理、作ったあとの更新まで含めた点検は、AI-IT顧問で引き受けています。
AI-IT顧問 https://exbridge.jp/ai-it-komon.html#ref=vibeblog-shanai-roei
よくある質問
Webサイトのサーバーと社内システムが別なら、社内のデータは安全ですか
安全とは言えません。直接は届きにくくても、Webサーバーに置かれた外部サービスの鍵、使い回しのパスワード、同じサーバーで動く会社のメール、社内ネットワークとのつながりを通って、被害は社内や取引先に広がります。
PHP2Shell で、Webサーバーの何が読まれるのですか
PHP2Shell はサーバー上で命令を実行できる穴なので、サーバーの中のファイルは基本的に何でも読まれます。お客様の情報や、設定ファイルに書かれたパスワードと外部サービスの鍵が、特に狙われます。
デザイナーに作ってもらったホームページは危ないのですか
デザインの質の問題ではありません。見た目の仕事と、守りの仕事は別の専門です。守りの設定やPHP・WordPress の更新を担う人がいないまま公開され、そのまま更新されないと、穴が残ります。作ったあとの更新を誰の仕事にするかを決めておくことが大切です。
まず何から確かめればよいですか
外から見える範囲は、URLを入れるだけの診断で確かめられます。そのうえで、サーバーに残っている個人情報、設定ファイルの鍵、パスワードの使い回し、メールが同じサーバーかどうかを、サーバーの中で確かめてください。
