1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP2Shell公表後、国内サイトの4.8%が停止・メンテナンス中(10/24時点・無作為抽出2,000件)

1
Posted at

2026年10月24日 11:44〜11:46(日本時間)に、国内の主要な .jp ドメインから無作為に選んだ 2,000 件のうち 97 件(4.8%、95%信頼区間 4.0〜5.9%)が停止・メンテナンス表示を返しました。

PHP 本体の重大な脆弱性「PHP2Shell」(CVE-2026-109618 / CVE-2026-109619)の修正版が2026年10月21日に公開され、国内でもサイトを止める動きが報じられました。あれから3日経ったけど、まだ止まってるところってあるのかな?と気になり無作為に選んだサイトで「いま止まっているサイトがどのくらいあるか」を測りました。

結果

状態 件数 割合
通常応答 1,543 77.2%
停止・メンテナンス表示 97 4.8%
アクセス拒否(403/401/429・ボット対策画面) 64 3.2%
その他のHTTPエラー(404・500 など) 37 1.9%
応答なし(DNS失敗・接続失敗・タイムアウト) 259 12.9%
  • 応答があった 1,741 件に限ると、停止・メンテナンス表示は 5.6%(4.6〜6.8%)です。
  • 停止・メンテナンス表示 97 件のうち、ページ内で PHP2Shell や PHP の脆弱性に触れていたのは 4 件でした。残りは理由を書いていないか、別の理由による停止です。
  • 通常応答のサイトのうち、外から見て PHP を使っている形跡があったのは 536 件(34.7%)でした。

動いているサイトの PHP バージョン

通常応答の 1,543 件のうち、応答ヘッダ(X-Powered-By)で PHP のバージョンが分かったのは 166 件(10.8%)です。その内訳は次のとおりです。

バージョン 件数 割合
修正版(8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 以上) 76 45.8%
修正前のサポート中の版(8.2〜8.5 で上記未満) 2 1.2%
公式の修正がない 8.1 以前 86 51.8%
判定できない(ディストリビューション独自の版表記など) 2 1.2%

考察

  • サイトが動いていることは必ずしも対応済みであるということではありません。修正したからもう動かしていいのと、そもそも脆弱性が発表されても修正せずに後悔し続けているのはどエラい違いです(名古屋弁が出てまった)。バージョンが分かった 166 件のうち、修正版を名乗るのは 76 件(45.8%)で、公式の修正が当たっていない版を名乗るのは 88 件(53.0%)でした。後者の大半は、公式の修正が提供されない 8.1 以前(86 件)です。
  • ただし Ubuntu や Red Hat 系などのディストリビューションは、表示上のバージョン番号を変えずに修正だけを取り込む(バックポートする)ことがあります。古い版を名乗るサイトがすべて脆弱とは限らず、上の数字は「公式の修正版を名乗っていないサイトの数」として読む必要があります。
  • バージョンが見えたのは通常応答の 10.8% だけです。残りは PHP を使っていないか、バージョン表示を止めているため、この内訳を全体に当てはめることはできません。

調べ方

  1. 母集団: Tranco リスト(ID 262N9、2026-10-23 作成)の上位100万ドメインのうち .jp で終わる 16,666 件。
  2. 標本: そこから 2,000 件を無作為抽出(乱数シード 20261024)。明日以降も同じ 2,000 件を測り、日ごとの変化を追います。
  3. 測定: 各ドメインのトップページを1回取得(https → https://www. → http の順に、応答が得られるまで)。タイムアウトは15秒、連絡先付きの User-Agent を使用。
  4. 判定(筆者が今回用いた暫定的な基準で、既存研究に基づくものではありません):
    • 停止・メンテナンス表示: ページタイトルに「メンテナンス中」「一時停止」などの語句がある、または本文の文字数が1,000字未満で、HTTP 503 を返すか本文にそれらの語句がある(日付付きのお知らせ一覧の項目は除く)。一部の機能だけを止めて通常ページを表示しているサイトは「通常応答」に含めています。
    • アクセス拒否: HTTP 401/403/429、またはボット対策の確認画面。
    • 応答なし: DNS で名前が引けない、接続できない、タイムアウト。
    • PHP の形跡: X-Powered-By ヘッダに PHP、PHPSESSID クッキー、URL が .php、WordPress のパス(/wp-content/ など)のいずれか。

注意点

  • PHP2Shell 公表前の同じ標本の値がないため、平常時にもメンテナンス中のサイトがある分を差し引けていません。明日以降の推移と合わせて見てください。
  • .jp ドメインに限っており、.com などで運営される国内サイトは含みません。Tranco はアクセス量の多いドメインの一覧なので、小規模サイトは少なくなります。
  • 「応答なし」には、海外からのアクセス遮断や、すでに使われていないドメインも含まれます。停止の件数には数えていません。
  • PHP の形跡はヘッダ等を隠している環境では検出できないため、PHP 利用サイトの数は実際より少なく出ます。また停止中のサイトは静的なメンテナンス画面に差し替わっていることが多く、元のサイトが PHP 製かどうかは判定できません。
  • 個別のサイト名は載せていません。特に、修正前のバージョンを名乗るサイトは攻撃対象の一覧になり得るため、集計値だけを示しています。

データについて

  • ドメイン一覧: Tranco(Le Pochat ら, "Tranco: A Research-Oriented Top Sites Ranking Hardened Against Manipulation", NDSS 2019)
  • 脆弱性の概要: Qualys、The Hacker News

この記事のデータ収集・集計・素案作成はプログラムとAIで行い、内容の確認と考察の執筆は筆者が行っています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?