LiteSpeed Cacheプラグインの脆弱性を解説する

石川英典

プライム・ストラテジー「KUSANAGI」開発チームの石川です。

WordPressのプラグインでは年々、いくつもの脆弱性が報告されています。
その中には影響が小さいものから大きいものまで多岐に渡っています。

その中でも、 LiteSpeed Cacheプラグイン でいくつもの脆弱性が見付かったことは多くニュースになりました。
LiteSpeedをサポートしていないホスティングサービスであっても、その緊急性からアナウンス12を実施したところもあったようです。

今回はLiteSpeed Cacheプラグインとその脆弱性について解説します。

LiteSpeed Cacheプラグインとは

LiteSpeed Cacheプラグインは、WordPressのサイトを加速させるための機能を持つプラグインです。
LiteSpeed というWebサーバで使う専用機能だけでなく、NginxやApache HTTPDでも利用できる機能もあります。

KUSANAGIはLiteSpeedをサポートしていませんが、LiteSpeedを使用できるWordPressホスティングは海外でも人気があり、LiteSpeed Cacheプラグインは500万以上のサイトで導入されていると言われています。

LiteSpeed Cacheプラグインで見付かった脆弱性

LiteSpeed Cacheプラグインは、2024年は年初から9月現在までの間に6件の脆弱性が報告されています。

その中でも緊急度 (CVSS) が高い (High) 3つ脆弱性に絞って説明します。

日付名称修正重要度CVE
2024-02-27LiteSpeed Cache < 5.7.0.1 – Unauthenticated Stored XSSFixed in 5.7.0.18.8 (high)CVE-2023-40000
2024-08-21LiteSpeed Cache < 6.4 – Unauthenticated Privilege EscalationFixed in 6.48.1 (high)CVE-2024-28000
2024-09-05LiteSpeed Cache < 6.5.0.1 – Unauthenticated Sensitive Information Exposure via Log FilesFixed in 6.5.0.17.5 (high)CVE-2024-44000

LiteSpeed Cache < 5.7.0.1 – Unauthenticated Stored XSS

この脆弱性は、クロスサイトスクリプティング (XSS) により、認証されていないユーザーがWordPressのサイトのページ任意のスクリプトを注入することができてしまうものです。

原因は、入力のサニタイズと出力のエスケープが不十分であったことにあります。
この脆弱性では nameservers_msg パラメータを経由して攻撃が行われました。

注入されたスクリプトはユーザー注入されたページにアクセスすることで実行されます。
これを悪用することにより、新たな管理者ユーザーを作成するスクリプトを注入し、管理者権限を持つユーザーにアクセスさせることで、新たな管理者ユーザーを作成される可能性があります。

攻撃者が自由にアクセスできる「新たな管理者ユーザー」が作成されてしまうと、事実上そのサイトを自由に編集できるようになってしまいます。

よって、この脆弱性の重要度が高いのも頷けます。

LiteSpeed Cache < 6.4 – Unauthenticated Privilege Escalation

この脆弱性は、デバッグログやブルートフォース攻撃により適切なハッシュ値を見付けることで認証されていないユーザーが管理者ユーザーのIDでログインした状態を得る (特権昇格できる) というものです。

原因は、LiteSpeed Cacheが持つユーザーシミュレーション機能の実装が脆弱だったためです。
LiteSpeed Cacheプラグインは特権で動作した上で、ハッシュ値を用いてどのユーザーで実際にログインしているかを判断して、そのユーザーの権限に落としていました。
このハッシュ値が弱く、予測がしやすいものであったことで、攻撃が行われました。

デバッグログが外部公開できる状態になっていることはあまりないと思われますので、ほとんどの攻撃ではハッシュ値を推測してアクセスする、ということを総当たりで実行するもの(ブルートフォース攻撃)となります。

攻撃先はWordPressのダッシュボードで使用されている /wp-admin/admin-ajax.php が用いられました。
もしも一致するハッシュが得られてしまうと、WordPressのREST APIなどを利用して新規ユーザーを作成できてしまいます。

新規に管理者ユーザーが作られた場合の危険性は前述の通りです。

総当たり攻撃を防ぐような設定が行われていればリスクを避けることができますが、WordPress単体で防ぐ設定になっている訳ではないため、重要度が高い脆弱性となっています。

LiteSpeed Cache < 6.5.0.1 – Unauthenticated Sensitive Information Exposure via Log Files

この脆弱性は、debug.logファイルを通して機密情報が暴露される危険性があるというものです。

認証されているユーザーであっても、このファイルにアクセスすることができた場合には機密情報にアクセスできてしまいます。
機密情報には例えばクッキーの情報があり、クッキーの情報を用いることで攻撃者は公開されている有効な別のセッション (例えば管理者ユーザーのセッション) にログインすることができてしまいました。

なお、デバッグ機能はデフォルトでは無効になっているので、有効にしない限りはdebug.logファイルに対してアクセスされることはなく、この脆弱性を回避できます。

特権ユーザーになることができる脆弱性であるためスコアは高くなっていますが、デフォルトでは無効となっているため実運用への影響はそこまで高くない、という脆弱性になっています。

脆弱性の重要度の判断

脆弱性が見付かった場合にはCVSSのように、脆弱性の内容に応じたスコア (重要度) が設定されます。
このスコアは様々な要因をもとに設定されています。

一般的にスコアが高いほど、重要なもの (=影響が大きい) と考えることができます。
例えば、今回紹介した脆弱性のように、認証されていないユーザー特権ユーザーの権限を得ることができるような脆弱性は高いスコアが設定されています。

一方で、実際に攻撃しようとするとそこまで可能性が高くない場合もあります。

今回紹介した「LiteSpeed Cache < 6.5.0.1 – Unauthenticated Sensitive Information Exposure via Log Files」はデフォルトでは無効になっている機能を有効にした場合に影響が出るものでした。

別のプラグインの例ですが Custom Field Suite には対処されていない脆弱性が4つ存在します。
その中には任意のPHPコードを注入できる脆弱性もありますが、LiteSpeed Cacheとは異なって認証済みのユーザーでなければ行えないというものです。
ユーザーのパスワードが脆弱であったり、辞書攻撃等で破られてしまった場合にはどうしようもありませんが、少なくともすぐに攻撃に晒される訳ではありませんし、パスワードを変更・強化することでリスクを下げることができます。

このように、CVSSのスコアだけで一概に判断するのではなく、脆弱性の内容とどのように悪用されるかをしっかりと理解することが重要です。

最後に

いずれにしてもWordPressのプラグインは常に最新の状態を維持することが重要です。

また、メンテナンス等が止まってしまったプラグインをそのまま放置しておくことは危険ですので、プラグインを選定する際はアクティブにメンテナンスされているかをしっかり判断することが必要です。

ユーザーアカウントを乗っ取ろうとする攻撃も多いため、パスワードを強固なものに変更したり、不審なアクセスをしっかり監視することも重要です。

他にもWordPressのセキュリティを強化する方法をコラムにて紹介しているので参考にしてください。

  1. 【重要】WordPressプラグイン「LiteSpeed Cache(5.7.0.1未満)」における緊急性の高い脆弱性について ↩︎
  2. 【重要】WordPressプラグイン「LiteSpeed Cache(6.3.0.1以下)」における緊急性の高い脆弱性について(8/24 AM10:40 追記) ↩︎
<< 小さなプラグインを作り、WordPressのXML-RPCを停止する方法WordPress 6.7のリリースに備え押さえておきたい変更点 >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解