なぜ「会社案内だけのホームページ」が偽通販サイトに改造されるのか?
PHP・WordPress脆弱性(CVE-2024-4577等)の解剖と「静的分離」による根本対策
全国の中小企業・医院・自治体・団体で相次いでいる「公式ホームページの詐欺サイト化・踏み台化」について、専門知識がなくても30秒で仕組みがわかる直感図解(Step 1)から、15分でできる自社サイト点検手順(Step 2)、IPA・経産省基準(Step 3)、そしてホワイトハッカー・脆弱性研究者の視点による CVE-2024-4577 / CVE-2024-2961 バイトレベル解剖(Step 4)まで段階的に解説します。
「名刺代わりのホームページ」が狙われる理由と、根本から守る3つの要点
ホームページに個人情報がなくても、攻撃者は「実在する会社のドメイン(URL)」を乗っ取って偽ショッピングサイトを寄生させ、一般消費者から代金をだまし取ります。
WordPressなどの動的CMSは、ページを開くたびに裏側でPHPプログラムとデータベースが動きます。数年前の古いPHPやプラグインが1つでも残っていると、そこから自動ボットに侵入されます。
公開サーバーからPHPとデータベースをなくし、完成したページ(静的HTML)だけを置く設計(Astro等)にすると、乗っ取られるプログラム自体がないため改ざんが起きなくなります。
図解 ①:なぜ普通の会社ホームページがある日突然「偽通販サイト」に作り変えられるのか?
図解 ②:【Before / After 比較】「❌ 従来の動的CMS(PHP+DB同居)」と「⭕ 静的分離(Astro+Rust)」のちがい
図解 ③:【画面で見る危険兆候】Googleで「site:自社ドメイン」と検索したときだけ現れる偽ページ(クローキング)
site:自社のドメイン名 を入れるだけで簡単に点検できます。
PHP・WordPress脆弱性と静的サイト化に関するよくあるご質問
Q1 「うちの会社のホームページは会社案内だけで、顧客の個人情報は入れていないから安心」ではないのですか? ▼
実はそこが一番の盲点です。攻撃者が狙っているのはサイト内の個人情報だけでなく、「長年運用されていて検索エンジン(Google・Bing等)のドメイン評価が高い企業URL」と「サーバーのメール送信機能」です。乗っ取った正規の企業サイト内に数万ページの偽ブランド通販サイトを寄生させたり、詐欺メールの発信踏み台にしたりするため、ある日突然、消費者被害や警察からの連絡で発覚します。
Q2 社内PCから自社ホームページを開くと正常に表示されるのに、改ざん被害に遭っていることがあるのですか? ▼
はい。攻撃者は「SEOクローキング(条件分岐による出し分け)」を仕掛けます。社内ネットワークや直アクセスの人間には本来の会社案内を表示する一方、Googlebot等の検索クローラーやスマートフォンの検索結果から訪れた一般ユーザーにだけ偽通販サイトを表示します。検索欄で「site:自社ドメイン名」と検索することで、身に覚えのない数千件の不正ページが生成されていないか確認できます。
Q3 2024年に話題となったPHP深刻脆弱性「CVE-2024-4577」とはどのような仕組みですか? ▼
Windows環境(日本語CP932/Shift_JIS等)において、Win32 APIの文字コード変換(Best-Fit Mapping)の仕様により、ソフトハイフン(%ad)がASCIIのハイフン(-)へ自動変換されてしまう脆弱性です。これにより、PHP-CGIの引数チェックをすり抜けて「-d allow_url_include=1」等の設定が外部から注入され、認証なしでサーバー上で任意コマンドが実行(RCE)されてしまいます。
Q4 Linuxサーバー上で動くPHPでも深刻な脆弱性(CVE-2024-2961等)は発生するのですか? ▼
はい。Linuxの標準Cライブラリ(glibc)の文字コード変換関数「iconv()」にヒープバッファオーバーフロー脆弱性(CVE-2024-2961)が存在し、PHPの「php://filter/convert.iconv.*」ストリームラッパーを悪用してZendメモリマネージャーのヒープ領域を遠隔から書き換え、リモートコード実行を達成するCNEXT攻撃手法が実証されています。
Q5 WordPressプラグインの脆弱性(POP連鎖 / GiveWP / LiteSpeed Cache等)はどうして多発するのですか? ▼
WordPressは数千行のサードパーティ製プラグインが同じPHPプロセスとデータベース権限で動作します。入力値の不十分な検証から、PHPのオブジェクト逆シリアル化(unserialize)時に意図しないマジックメソッドを連鎖起動させる「POP(Property-Oriented Programming)連鎖」が悪用され、未認証の管理者アカウント作成やバックドア設置が繰り返されています。
Q6 画像アップロードフォルダ(wp-content/uploads/)に潜む「ステルスWebShell」とは何ですか? ▼
一見すると普通のJPEG写真に見えるファイルのEXIFメタデータ領域(コメント部等)にPHPコードを埋め込み、ローカルファイルインクルード(LFI)の脆弱性と組み合わせてコードを実行させる手口です。また「wp-content/mu-plugins/」に配置されたファイルは管理画面のプラグイン一覧に表示されないため、長期間の潜伏を許す原因になります。
Q7 Astro+Rust WASMによる「静的サイト化(SSG)」が根本的な解決策になるのはなぜですか? ▼
公開サーバーからPHPランタイムとデータベースを物理的に撤去し、手元の安全な環境で生成した「完成済みHTML/CSS/SVGファイル」だけを配るためです。サーバー上に実行可能なプログラム(PHP)やSQLデータベースが存在しないため、CWE-78(コマンド注入)やCWE-89(SQL注入)、CWE-94(コード注入)の攻撃対象面(Attack Surface)が数学的にゼロになります。
Q8 毎月のプラグイン更新やセキュリティパッチ作業から解放されるにはどうすればよいですか? ▼
動的な問い合わせフォームや予約機能は信頼性の高い外部SaaS(フォームサービス等)や分離APIへ切り離し、本体Webサイトを静的サイトジェネレーター(Astro)で静的化するのが最も確実です。サーバー保守コストがほぼゼロになり、表示速度も0.1秒台へ劇的に向上します。