プライム・ストラテジー「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-27 | LiteSpeed Cache < 5.7.0.1 – Unauthenticated Stored XSS | Fixed in 5.7.0.1 | 8.8 (high) | CVE-2023-40000 |
2024-08-21 | LiteSpeed Cache < 6.4 – Unauthenticated Privilege Escalation | Fixed in 6.4 | 8.1 (high) | CVE-2024-28000 |
2024-09-05 | LiteSpeed Cache < 6.5.0.1 – Unauthenticated Sensitive Information Exposure via Log Files | Fixed in 6.5.0.1 | 7.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のセキュリティを強化する方法をコラムにて紹介しているので参考にしてください。