本文へスキップ
株式会社オープンナレッジ
株式会社オープンナレッジ Open Knowledge Inc.
重点図解特集|PHP・WordPress脆弱性とWeb改ざん対策(全7図解収録) CVE-2024-4577 / CVE-2024-2961 / Astro + Rust WASM 静的分離 監修:登録情報処理安全確保支援士(第007617号) 加藤 明生

なぜ「会社案内だけのホームページ」が偽通販サイトに改造されるのか? PHP・WordPress脆弱性(CVE-2024-4577等)の解剖と「静的分離」による根本対策

全国の中小企業・医院・自治体・団体で相次いでいる「公式ホームページの詐欺サイト化・踏み台化」について、専門知識がなくても30秒で仕組みがわかる直感図解(Step 1)から、15分でできる自社サイト点検手順(Step 2)、IPA・経産省基準(Step 3)、そしてホワイトハッカー・脆弱性研究者の視点による CVE-2024-4577 / CVE-2024-2961 バイトレベル解剖(Step 4)まで段階的に解説します。

Step 1〜Step 4 段階的解説 現在表示中:1. 基本と全体像(図解と3つの要点)
PHPソースコード検証とバグ・脆弱性テストの現場
【現場実態】動的CMSの構造欠陥と会社案内ドメイン乗っ取りの真相
1. 基本と全体像(図解と3つの要点) 🔍 下の3つの図解はタップ・クリックで拡大できます

「名刺代わりのホームページ」が狙われる理由と、根本から守る3つの要点

要点 01|狙われるのは「会社の信頼(ドメイン)」

ホームページに個人情報がなくても、攻撃者は「実在する会社のドメイン(URL)」を乗っ取って偽ショッピングサイトを寄生させ、一般消費者から代金をだまし取ります。

要点 02|原因は「裏側で動き続けるプログラム」

WordPressなどの動的CMSは、ページを開くたびに裏側でPHPプログラムとデータベースが動きます。数年前の古いPHPやプラグインが1つでも残っていると、そこから自動ボットに侵入されます。

要点 03|「プログラムを置かない(静的化)」で根絶

公開サーバーからPHPとデータベースをなくし、完成したページ(静的HTML)だけを置く設計(Astro等)にすると、乗っ取られるプログラム自体がないため改ざんが起きなくなります。

図解 ①:なぜ普通の会社ホームページがある日突然「偽通販サイト」に作り変えられるのか?

「うちは会社案内だけだから大丈夫」が狙われる3ステップの仕組み 段階 1:自動ボットが隙間を発見 「5年前に作ったままのサイト」 ・古いPHP(7.4 / 8.0等)が稼働 ・お問い合わせプラグインが未更新 ・昔の `/test` や `/old` が残存 ⇒ 世界中の攻撃ボットが24時間探索 段階 2:裏口から偽ページを量産 「社員には気づかせない細工」 ・会社のPCから直接開くと  「いつもの正常な画面」を表示 ・Google検索には自社のURLで  偽ブランド品ページを数万件登録 ⇒ クローキング(表示出し分け)手口 段階 3:ある日突然、苦情が殺到 「被害者であり加害者になる」 ・スマホ検索から開いた消費者が  偽通販サイトへ誘導され被害に ・自社ドメインが危険サイト判定され  会社のメールまで届かなくなる ⇒ 信用毀損と緊急調査費用の発生 ⭕ 根本解決:静的分離設計 公開サーバーから「PHPプログラム」と「データベース」を完全撤去! ・完成済みのHTML画面(Astro)と安全な計算部品(Rust WASM)だけを読み取り専用金庫(Read-Only ZFS)から配信します。 ・悪用されるプログラム自体が公開サーバー上に存在しないため、コマンド注入もDB改ざんも原理的に起きません。
図解①:ホームページ改ざんの多くは「空き部屋(放置された古いPHPやプラグイン)に詐欺グループが勝手に住み着く」現象です。

図解 ②:【Before / After 比較】「❌ 従来の動的CMS(PHP+DB同居)」と「⭕ 静的分離(Astro+Rust)」のちがい

❌ 従来の構成(公開サーバーでPHPとDBが稼働) 1. アクセスごとにサーバー内でプログラム実行 ・訪問者が開くたびPHPが動きDBへ問い合わせ ・CVE-2024-4577等の遠隔実行攻撃の標的になる 2. 10〜30個のプラグイン更新に追われ続ける ・1つでも更新が止まるとそこからWebシェル侵入 ・更新すると画面が崩れるため放置されがち 3. 書き込み可能な領域にバックドアを隠される ・`wp-content/uploads/` 等に偽プログラムを配置 ・表示も遅く(2〜4秒)、スマホ読者が離脱 ⭕ 改善後の構成(Astro+Rust WASM 静的分離) 1. 公開サーバーには「完成したHTML」のみ配置 ・PHP実行エンジンもSQLデータベースも非搭載 ・SQLインジェクションやPHP乗っ取りが0件に 2. 読み取り専用ロック(Read-Only ZFS) ・公開ディレクトリのファイル書き換えをOS層で拒否 ・プラグインの緊急パッチ作業から解放される 3. 診断や検索はブラウザ内のRust WASMで高速処理 ・お問い合わせ送信のみ別隔離の型安全APIで受付 ・0.3秒クラスの瞬時表示でスマホでも快適
図解②:「調理場(データベース・編集環境)」と「ショーウィンドウ(公開Webサーバー)」を物理的に分けることで、安全性と表示速度を同時に高められます。

図解 ③:【画面で見る危険兆候】Googleで「site:自社ドメイン」と検索したときだけ現れる偽ページ(クローキング)

🔍 Google検索: site:example.co.jp ⭕ 正常なトップページ:〇〇工業株式会社|精密金属加工 https://www.example.co.jp/ — 大阪府の精密部品メーカーです。 (社内のパソコンから直接開くと、この画面だけが見えます) ❌ 不正生成ページ①:【85%OFF】高級時計・バッグ激安通販 https://www.example.co.jp/shop-luxury-sale-99812.html ・攻撃者が勝手に埋め込んだプログラムが数万ページを自動生成 ・検索からクリックした一般消費者が偽通販サイトへ飛ばされる! ❌ 不正生成ページ②:限定スニーカー最安値・銀行振込特価 https://www.example.co.jp/wp-content/plugins/old/item441.php ・`User-Agent` や `Referer`(検索経由か)を見て表示を切り替え ・月1回の「site:自社ドメイン」検索なら30秒で発見可能! 深刻度スコア(CVE-2024-4577) CVSS 9.8 認証不要で遠隔プログラム実行 日本語(CP932)等のWindows環境で動くPHP-CGIにおいて、特殊文字1つで乗っ取られる深刻な脆弱性。 CMS侵入原因の内訳 90 % 超 が「プラグイン・テーマ・放置PHP」 CMS本体を更新していても、追加したプラグインや古いPHPランタイムの隙間から侵入されます。
図解③:普段トップページを見ているだけでは気づけない「クローキング改ざん」も、検索欄に site:自社のドメイン名 を入れるだけで簡単に点検できます。
よくあるご質問(FAQ) 検索エンジン・AI要約向け構造化データ(Schema.org FAQPage)対応

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秒台へ劇的に向上します。

ご質問・公的制度の活用に関するお問い合わせ窓口

掲載資料に関するご質問・公的制度活用のご案内

本ページの図解や解説内容に関するご質問、経済産業省「SCS評価制度」やIPA「SECURITY ACTION・サイバーセキュリティお助け隊サービス」等の公的制度の確認方法について、落ち着いた参考窓口としてご案内しております。売り込みや営業連絡は一切行いませんので、社内勉強会やご家庭での確認資料としてご自由にご活用ください。

図解・ビジュアルの拡大表示

図表内のテキストもそのまま選択・検索可能です(ベクターSVG描画) 枠外クリックまたは ESC キーで閉じます