WordPressでサイトを運営していると、「プラグインに脆弱性が見つかった」というニュースを目にすることがあります。初めて聞くと不安に感じるかもしれませんが、実際には 発見された脆弱性はすぐに修正され、アップデートを適用することで安全に使い続けられる 仕組みが整っています。
今回も「JS Archive List」プラグインにおいてSQLインジェクションの脆弱性が報告されましたが、すでに修正版が公開されています。この記事では、問題の概要と利用者が取るべき対応、そして「WordPressは危ない」という誤解をしないための考え方について解説します。
脆弱性概要(CVE-2025-7670)
- 対象プラグイン
WordPress 用の「JS Archive List」プラグイン(jQuery Archive List Widget)。バージョン 6.1.5 以下 に影響。 - 脆弱性の内容
build_sql_where()
関数内でユーザーから渡されたパラメータが適切にエスケープされず、SQL 文の一部が直接組み込まれてしまうため、認証不要の(未ログイン状態の)攻撃者でも悪意のある SQL を注入可能。これにより、データベースから機密情報を抽出される恐れがあります(いわゆる time‑based SQL インジェクション) - 脆弱性指標
CVSS v3.1 ベーススコアは 7.5(High)。
攻撃条件:ネットワーク経由で実行可能(AV:N)、攻撃に特別な権限は不要(PR:N)、ユーザー操作も不要(UI:N)、横展開なし(S:U)、機密性への影響が大きい(C:H)、改ざんや破壊への影響はなし(I:N, A:N)
技術的詳細とリスク
- 脆弱性の技術的背景
build_sql_where()
が受け取る入力(例:日付フィルターや表示条件など)が直接 SQL 文に組み入れられているため、攻撃者が1=1; DROP TABLE users;--
のような悪意ある条件を注入すれば、time-based に SQL の実行の有無を通じてデータを抽出する(例えば、条件が真であれば応答が遅くなるなど)ような攻撃が可能です。 - 認証不要の攻撃
プラグインの該当処理にアクセスできる URL が公開状態であれば、ログインなしでも攻撃が成立し、重大な情報漏洩リスクがあります。
利用者が取るべき対応
もし該当プラグインを利用している場合は、最新版にアップデートすることが最も重要な対策です。
アップデートを行えば、この脆弱性を悪用される心配はなく、安心して利用を続けられます。
加えて、不要なプラグインを残さないことや、日頃からプラグインの更新通知に注意を払うこともおすすめします。
対策と具体的な対応方法
- プラグインの更新
すでに バージョン 6.1.5 以下は危険です。最新版(6.1.6 以降)がリリースされている場合は、すぐにアップデートするのが最優先です。 - 未更新の場合
- プラグインを一時的に 無効化またはアンインストールすることを推奨します。
- 必要な機能であれば、代替プラグインの利用を検討してください。
- Web サーバー側での防御
- Web アプリケーションファイアウォール(WAF)などを利用し、不審な SQL パラメータのブロックを検討する。
- ログを精査し、不審なアクセスがないかモニタリングしましょう。
- 将来的な予防
- プラグイン開発者へ、パラメータのプレースホルダ化と適切なエスケープの導入を要請。
- プラグイン作者自身がセキュアな開発手法(プリペアドステートメントなど)を採用するように促す。
プラグイン概要:JS Archive List(旧 jQuery Archive List Widget)
- 提供者・作者
作者は Miguel Useche(Skatox)です (WordPress.org 日本語, GitHub)。 - 基本機能
サイドバーや投稿内に「折りたたみ可能なアーカイブリスト(年・月ごと)」を表示するウィジェットおよびフィルターを提供するプラグインです。
これは JS(vanilla JavaScript)で動作し、あらゆるブラウザとの互換性を重視しています (WordPress.org)。
主な特徴・機能一覧
- Gutenberg ブロックに対応
Full Site Editing(FSE)テーマや Gutenberg 対応テーマに対応したブロックで表示可能 (WordPress.org)。 - 折りたたみ表示による省スペース化
年をクリックすると月が展開される形式で、アーカイブ領域がコンパクトになります (WordPress.org, Puro)。 - 表示のカスタマイズオプション
- 展開/折りたたみのシンボル(trigger symbol)や、日付フォーマットを選択可能
- アーカイブのフィルタリング(カテゴリを含める・除外する)対応
- 年・月の自動展開機能(現在の年や指定年) (WordPress.org 日本語, WordPress.org)。
- 複数インスタンス、ショートコード対応
ウィジェットを複数設置可能で、ショートコード[JsArchiveList]
によって投稿やページ内でも表示可能です (WordPress.org)。 - 多言語対応 & HTML 構造の整合性
正しい HTML を生成し、多言語サイトにも対応しています。また、JS キャッシュやファイル最小化プラグインとの互換性もあります (WordPress.org, WordPress.org 日本語)。
設定項目(ウィジェットやブロック内で指定可能)
- ウィジェットのタイトル
- 展開・折りたたみのトリガーシンボル
- アニメーションエフェクト(例:スライド、フェード)
- 月の日付フォーマット
- どのタイミングで展開するか(例:「現在の年のみ展開」)
- 過去の年をリンクでまとめて非表示
- 日単位の投稿一覧表示
- 投稿数の表示
- カテゴリごとに表示対象を絞る
- クリックする場所(シンボルのみ or 行全体)で展開
- 同時に展開できるブロックを制限
- 月ごとに投稿タイトルや投稿日を表示
- 投稿の並び順
- 表示対象のカテゴリ選択(含む・除く) (WordPress.org, WordPress.org 日本語)。
ブロック/ショートコードの利用例
例えばショートコードでは、以下のようにカスタマイズできます。
[JsArchiveList month_format=number showpost=1 showcount=1 ex_sym=+ con_sym=- effect=slide type=page]
上記では、月を数字形式、投稿タイトルと投稿数を表示し、展開・折りたたみの記号やアニメーション(slide 指定)も設定しています (WordPress.org)。
プラグインの使い所
JS Archive List は、WordPress のアーカイブ一覧をスッキリと整理表示できるプラグインで、以下のようなユーザーに特におすすめです
- 年月ごとの投稿が増えて、デフォルトのアーカイブリストではスペースを取りすぎる方
- サイドバーや固定ページに、使いやすい見た目のアーカイブリストを導入したい方
- フロントエンドの表示を柔軟に即カスタマイズしたい方(多言語・ショートコード対応)
WordPressは「危ない」わけではない
「WordPressは脆弱性が多くて危険」という声を耳にすることもありますが、実際には 脆弱性が見つかると迅速に修正され、アップデートが配布される仕組みが整っている のがWordPressの強みです。
世界中の研究者やセキュリティ企業が常に監視し、報告と改善が行われることで、安心して使い続けられるエコシステムが維持されています。
つまり、危険なのは「WordPressそのもの」ではなく、古いまま放置されているサイトです。定期的にアップデートを適用することで、安全に利用し続けることができます。
まとめ
- JS Archive List プラグイン(6.1.5以下)にSQLインジェクション脆弱性が発見された
- 開発者が修正版(6.1.6以降)を提供済み
- アップデートを適用すれば安全に利用可能
- WordPressは脆弱性を迅速に修正する体制を持っているため、アップデートを欠かさなければ安心して使える
脆弱性のニュースを「怖い」と感じる方もいるかもしれません。ですが、WordPressは常に改善されていく仕組みを持つオープンソースプロジェクトです。
安心して利用するためには、まずはアップデート。それだけで大きなリスクを避けることができます。
コメントを残す