開発環境・ツール

【phpMyAdmin脆弱性】WebAuthnの二要素認証が回避される問題(2026年10月)|影響を受ける条件と、今すぐできる対策

2026年10月下旬、「phpMyAdminに深刻な脆弱性。二要素認証を回避してデータベースにアクセスできる」という情報がSNSで広まりました。

「うちのサーバーも危ないのでは?」と不安になった方に向けて、この記事では 何が起きているのか、本当に影響があるのは誰か、何をすればいいのか を整理します。公開されている検証コードの解説に加えて、phpMyAdminのソースコードを実際に読んで確かめた内容をもとに書いています。

この記事は2026年10月29日時点の情報です。公式の修正版やセキュリティ勧告が出たら追記します。

スポンサーリンク

先に結論

  • 脆弱性そのものは本物です。 phpMyAdminのソースコードを確かめたところ、WebAuthn(セキュリティキー・パスキー)の二要素認証で、署名の検証が行われていませんでした
  • ただし、影響を受けるのは次の3つがそろった環境だけです
  • MySQLのユーザー名とパスワードが、すでに漏れている
  • そのユーザーが、WebAuthnの二要素認証を設定している
  • phpMyAdminにweb-auth/webauthn-libというライブラリが入っていない(公式の配布版の初期状態では入っていない)
  • パスワードを知らない攻撃者が、いきなり侵入できる脆弱性ではありません
  • いちばん効く対策は、phpMyAdminをインターネットに公開しないことです
  • XserverのphpMyAdminで確かめたところ、二要素認証そのものが使えない設定でした。 同じような共用サーバーの利用者は、まず慌てなくて大丈夫です(詳しくは「レンタルサーバーのphpMyAdminを使っている場合」で)

何が起きているのか

本来のWebAuthnの仕組み

WebAuthnは、セキュリティキーやパスキーを使った認証の方式です。ざっくり言うと、次の流れです。

  1. サーバーが、ランダムな「チャレンジ」を送る
  2. ユーザーの端末(セキュリティキー)が、手元にしかない秘密鍵でチャレンジに署名する
  3. サーバーが、登録してある公開鍵で署名を検証する

この3番目の署名の検証 こそが、「本当にその鍵を持っている」ことの証明です。

phpMyAdminで起きていること

phpMyAdminは、web-auth/webauthn-libというライブラリが入っていればそちらを使い、入っていなければCustomServerという自前のWebAuthnの実装を使う作りになっています。

このCustomServerで、ログインのときの応答を確かめている処理(parseAndValidateAssertionResponse)を読むと、確かめているのは次の項目でした。

  • クレデンシャルIDが、登録済みのものか
  • 応答の種類が、ログイン用(webauthn.get)か
  • チャレンジが一致するか
  • オリジン(ホスト名)が一致するか
  • rpIdHashが一致するか
  • ユーザーがその場にいることを示すフラグ(User Present)が立っているか

一方で、署名(signature)は「値があって、空ではないこと」しか確かめておらず、登録済みの公開鍵での検証は一切行われていません。 登録のときに保存した公開鍵も、この処理では使われていません。

そのため、上の項目さえ合わせれば、でたらめな署名でも二要素認証を通れてしまいます。チャレンジやクレデンシャルIDは、パスワードでログインしたあとにサーバー自身が送ってくるので、パスワードさえ知っていれば、そろえるのは難しくありません。

公開されている情報

  • 研究者のAbraxas Labsが、GitHubで検証用のコード(PoC)と解説を公開しています
  • 研究者自身の評価はCVSS 8.1(High)
  • 2026年10月29日時点で、CVE番号と、phpMyAdmin公式のセキュリティ勧告(PMASA)はまだ出ていません
  • 公開されている開発中のブランチ(5.2系の次の版と、6.0の開発版)のソースにも、この時点では署名の検証は入っていません

影響を受ける条件

次の すべて に当てはまる場合に影響があります。

条件 内容
バージョン 5.2.1〜5.2.3。研究者が検証したのは5.2.3だが、CustomServerは5.2.1から入っていて、同じ処理になっていることをソースで確かめた。5.2.0以前にはWebAuthnの機能自体がない
二要素認証の方式 WebAuthn(セキュリティキー・パスキー)を設定している
ライブラリ web-auth/webauthn-libが入っていない
攻撃する側の前提 対象のユーザーのMySQLのパスワードを知っている

web-auth/webauthn-libは、phpMyAdminのcomposer.jsonでは「入れると便利なもの(suggest)」と「開発用(require-dev)」の扱いで、必須ではありません。そのため、公式サイトの配布版や、composer install --no-devでセットアップした環境には入っていません。WebAuthnを使っている人の多くは、この条件に当てはまると考えておくのが安全です。

影響を受けない(状況が変わらない)ケース

  • 二要素認証を使っていない
    もともとパスワードだけでログインできる状態なので、今回の件でリスクは増えません(もちろん、別の意味での対策は必要です)
  • 二要素認証に、認証アプリ(6桁のコード)を使っている
    Google Authenticatorなどのコードの方式は別の実装なので、今回の対象外です
  • web-auth/webauthn-libが入っている
    ライブラリの実装が使われるので、この問題には当たりません
  • phpMyAdminが、ローカル環境やVPNの中だけで動いている
    外から届かなければ、攻撃の入口がありません
  • 5.2.0以前、または4.9系・5.1系を使っている
    WebAuthnの機能がないので対象外です。ただし、どれもサポートが終わっているか古い版なので、別の理由で更新が必要です

「データベース全体にアクセスされる」は本当か

SNSでは「データベース全体が危険」と紹介されていますが、正確には 乗っ取られたMySQLユーザーの権限の範囲で アクセスされる、ということです。

rootのような強い権限のユーザーなら影響は大きくなりますが、特定のデータベースだけに権限を絞ったユーザーなら、その範囲にとどまります。なお、研究者も、サーバー上でプログラムを実行されるわけではない(データベースの中身が見られる・変えられる)と説明しています。

自分の環境を確かめる方法

1. phpMyAdminのバージョンを確かめる

ログインしたあとのトップ画面の右側、「phpMyAdmin」の欄にバージョンが表示されます。

2. 二要素認証の方式を確かめる

「設定」→「二要素認証」を開き、WebAuthn(ハードウェアのセキュリティキー)が設定されているかを確かめます。

3. ライブラリが入っているか確かめる

phpMyAdminを置いているフォルダで、次のどちらかを実行します。

ls vendor/web-auth/
composer show web-auth/webauthn-lib

フォルダがない、またはパッケージが見つからない場合は、問題のあるCustomServerが使われています。

スポンサーリンク

対策

最優先:phpMyAdminを公開しない

今回の件に限らず、phpMyAdminはインターネットに直接さらさないのが基本です。

  • IPアドレスで制限する
  • 手前にBasic認証を置く
  • VPN経由でしかつながらないようにする
  • 開発用なら、ローカルのDocker環境だけで使う

これだけで、今回の攻撃の入口はほぼふさがります。

WebAuthnを使っている場合

次のどちらかを行います。

  • 署名を正しく検証するライブラリを入れる
composer require web-auth/webauthn-lib
  • ライブラリを入れられない環境なら、二要素認証を認証アプリ(6桁のコード)の方式に切り替える

パスワードも見直す

今回の攻撃は、パスワードが漏れていることが前提です。

  • MySQLユーザーのパスワードを強いものにする
  • 使い回しをやめる
  • 用途ごとにユーザーを分け、権限を必要最小限にする

公式の修正を待って更新する

phpMyAdminの公式から修正版とセキュリティ勧告が出たら、すぐに更新しましょう。

レンタルサーバーのphpMyAdminを使っている場合

レンタルサーバーが用意しているphpMyAdminは、サーバー会社が管理しています。利用者がライブラリを入れたり、バージョンを上げたりすることは、基本的にできません。ファイルも利用者のフォルダの外にあるので、vendor/web-auth/があるかどうかも、利用者からは確かめられません。

ただ、そもそも二要素認証が使える状態かどうかは、画面から確かめられます。phpMyAdminの公式ドキュメントによると、二要素認証を使うには、先に「phpMyAdmin環境保管領域」(phpMyAdminが設定を保存するための専用のテーブル)を用意しておく必要があるからです。

Xserverで実際に確かめた結果

私が契約しているXserverのサーバーで、サーバーパネルからphpMyAdminを開いて確かめました。

まず、トップ画面の右側の「バージョン情報」は5.2.1でした。WebAuthnの機能が入っている版です。

Xserverのサーバーパネルから開いたphpMyAdminのトップ画面。バージョン情報に5.2.1と表示されている

次に、「設定」→「二要素認証」を開くと、「二要素認証は使用できません。phpMyAdmin環境保管領域を有効にしてください。」と表示されました。方式の一覧にWebAuthnは出てきますが、環境保管領域がないので、設定を保存できません。

phpMyAdminの二要素認証の設定画面。二要素認証は使用できませんと表示されている

つまり、このサーバーのphpMyAdminでは、WebAuthnの二要素認証をそもそも設定できないので、今回の問題には当たりません。 もともとパスワードだけでログインする状態なので、守りの要は、引き続きMySQLのパスワードです。

ほかのレンタルサーバーでも、次の手順で同じように確かめられます。

  1. サーバーの管理画面からphpMyAdminを開いて、ログインする
  2. トップ画面の右側で、バージョンを確かめる(5.2.0以前なら対象外)
  3. 「設定」→「二要素認証」を開き、二要素認証が使える状態か、WebAuthnを設定しているかを確かめる

画面にWebAuthnが設定済みと出た場合は、利用者の側ではライブラリの有無を確かめられないので、認証アプリの方式に切り替えるか、サーバー会社に問い合わせてください。

あわせて気づいたこと:表示されている版が古い

今回の件とは別ですが、表示されている版の5.2.1は、2023年2月に出たものです。2025年1月の5.2.2では、XSSの脆弱性(PMASA-2025-1、PMASA-2025-2)が直っていますが、版の番号の上ではこの修正は含まれていません。

サーバー会社が独自に修正を当てている可能性もあるので、これだけで危ないとは言えません。ただ、レンタルサーバーのphpMyAdminも、いつまでも最新とは限らないことは知っておいて損はありません。利用者にできるのは、変わらず次の3つです。

  • データベースのパスワードを強いものにしておく
  • サーバー会社からのお知らせを確かめる
  • 使わないときはログインしない

情報の受け取り方についての注意

今回の情報は、研究者本人ではなく、別のセキュリティ会社が「無料のセキュリティレビュー」の案内とあわせて広めているケースも見かけました。

脆弱性の情報を見かけたときは、次の一次情報を確かめるのがおすすめです。

  • 研究者が公開しているリポジトリや解説
  • phpMyAdmin公式のセキュリティ勧告のページ
  • 該当するソースコードそのもの

あおり気味の見出しだけで判断せず、「どんな条件で」「何ができてしまうのか」を確かめると、落ち着いて対応できます。

まとめ

  • phpMyAdmin 5.2.1〜5.2.3のWebAuthnの二要素認証には、署名を検証しない問題が実際にある
  • ただし、悪用には「パスワードの漏えい」「WebAuthnの利用」「ライブラリが入っていない」がすべて必要
  • 二要素認証なし、認証アプリの方式、ライブラリ導入済みの環境は対象外
  • いちばん効く対策は、phpMyAdminを外に公開しないこと
  • 公式の修正版が出たら更新する

参考