WordPressプラグイン「LiteSpeed Cache」の脆弱性「CVE-2024-28000」について

WordPressプラグイン「LiteSpeed Cache」の脆弱性「CVE-2024-28000」についてまとめました。

LiteSpeed Cacheとは

LiteSpeed Cache(https://wordpress.org/plugins/litespeed-cache/)は、WordPress製サイトを高速化するための定番プラグインです。
LiteSpeedと呼ばれる高速Webサーバーソフトウェアを採用しているサーバーで利用でき、Webページの読み込み時間を大幅に短縮し、ページの表示速度を高速化します。
具体的には、以下の機能を備えています。

  • キャッシュの有効化
    • キャッシュを有効にすることで、ページの再読み込みを高速化します。
  • HTMLやCSS、JavaScriptの圧縮
    • ファイルサイズを最小限に抑えてページの読み込み速度を向上させます。
  • WebP形式への画像置き換え
    • 軽量なWebP画像に置き換えることで、画像の読み込みを高速化します。
  • Webページの最適化
    • ページの最適化を行い、高速なユーザーエクスペリエンスを提供します。
  • データベース最適化
    • データベースのクエリを最適化してパフォーマンスを向上させます。

CVE-2024-28000の概要

米国国立標準技術研究所の脆弱性情報(https://nvd.nist.gov/vuln/detail/CVE-2024-28000)によると、LiteSpeed Cacheプラグインで発見された脆弱性の概要は以下のとおりです。

Description

Incorrect Privilege Assignment vulnerability in LiteSpeed Technologies LiteSpeed Cache litespeed-cache allows Privilege Escalation.This issue affects LiteSpeed Cache: from 1.9 through 6.3.0.1.

※Incorrect Privilege Assignment(不正な権限付与)
※vulnerability(脆弱性)
※特権昇格(Privilege Escalation)
※in the history of A (A史上、Aの歴史の中で)

【翻訳】
LiteSpeed Technologies LiteSpeed Cache litespeed-cache の不正な権限付与の脆弱性により、権限昇格が可能になります。
この問題は、LiteSpeed Cache: 1.9 ~ 6.3.0.1 に影響します。

脆弱性発見の経緯

先程の脆弱性情報が掲載されているページのHyperLink先(https://patchstack.com/articles/critical-privilege-escalation-in-litespeed-cache-plugin-affecting-5-million-sites?_s_id=cve)に脆弱性発見の経緯が記載されています。

The vulnerability in the LiteSpeed Cache plugin was originally reported by Patchstack Alliance community member John Blackbourn to the Patchstack Zero Day bug bounty program for WordPress. We are collaborating with the researcher to release the content of this security advisory article.

This vulnerability has been rewarded the highest bounty in the history of WordPress bug bounty hunting.
Patchstack Zero Day program has awarded the researcher $14,400 USD in cash.
If you wish to also participate in the program then join the community here.

This blog post is about the LiteSpeed plugin vulnerability.
If you’re a LiteSpeed user, please update the plugin to at least version 6.4.

【翻訳】
LiteSpeed Cache プラグインの脆弱性は、もともと Patchstack Alliance コミュニティ メンバーの John Blackbourn 氏によって WordPress の Patchstack Zero Day バグ報奨金プログラムに報告されました。
私たちは研究者と協力して、このセキュリティアドバイザリ記事の内容を公開しています。

この脆弱性には、WordPress バグ報奨金制度史上最高額の報奨金が支払われました。
Patchstack Zero Day プログラムでは、研究者に 14,400 ドルの現金が授与されました。
このプログラムに参加したい場合は、こちらのコミュニティに参加してください。

このブログ投稿は、LiteSpeed プラグインの脆弱性に関するものです。
LiteSpeed ユーザーの場合は、プラグインをバージョン 6.4 以上に更新してください。

【補足】
※S was reported by A to B(SはAによってBへ報告された)
※bug bounty program (バグ報奨金プログラム)

脆弱性の詳細

https://patchstack.com/articles/critical-privilege-escalation-in-litespeed-cache-plugin-affecting-5-million-sites?_s_id=cveに脆弱性の詳細が記載されています。

The plugin suffers from an unauthenticated privilege escalation vulnerability which allows any unauthenticated visitor to gain Administrator level access after which malicious plugins could be uploaded and installed.

The vulnerability exploits a user simulation feature in the plugin which is protected by a weak security hash that uses known values. The vulnerability has been assigned CVE-2024-28000 and was fixed in version 6.4 of the plugin.

【翻訳】
このプラグインには、認証されていない権限昇格の脆弱性があり、認証されていない訪問者が管理者レベルのアクセス権を取得して、悪意のあるプラグインをアップロードしてインストールすることができます。

この脆弱性は、既知の値を使用する弱いセキュリティハッシュによって保護されているプラ​​グインのユーザーシミュレーション機能を悪用します。この脆弱性は CVE-2024-28000 に割り当てられており、プラグインのバージョン 6.4 で修正されました。

【補足】
suffer from A(Aに苦しむ、Aの脆弱性がある)
A節 after which B節(Aの後B)
exploit A(Aを悪用する)

■Insecure random number generation
LiteSpeed Cache includes a crawler feature that crawls your site on a schedule to pre-populate the caches for pages on your site.
A crawler can simulate a logged-in user of a given ID, therefore the plugin includes a user simulation feature that checks the litespeed_role and litespeed_hash cookie values for a user ID and security hash and sets the current user ID using wp_set_current_user function if a valid security hash is used.

The security hash intends to protect the user simulation feature from being used by anything other than a validated crawler request.

【翻訳】
■安全でない乱数生成
LiteSpeed Cache には、スケジュールに従ってサイトをクロールして、サイトのページのキャッシュを事前に入力するクローラー機能が含まれています。クローラーは、特定の ID のログインユーザーをシミュレートできるため、プラグインには、ユーザー ID とセキュリティハッシュの litespeed_role および litespeed_hash クッキー値をチェックし、有効なセキュリティハッシュが使用されている場合は wp_set_current_user 関数を使用して現在のユーザー ID を設定するユーザーシミュレーション機能が含まれています。

セキュリティハッシュは、検証されたクローラーリクエスト以外によってユーザーシミュレーション機能が使用されないように保護することを目的としています。

Unfortunately, this security hash generation suffers from several problems that make its possible values known:

The random number generator that generates the security hash is seeded with the microsecond portion of the current time. This means the only possible values for the seed are integers 0 through 999,999.
The random number generator is not cryptographically secure, which means the “random” values that it generates are fully determinate if the seed is known.
The security hash is generated once and saved in the litespeed.router.hash option in the database. It is not salted with a secret, nor is it connected to a particular request or a particular user. Once generated, the value never changes.
Due to all of the above, there are only 1 million possible values for the security hash. The values are known and identical across all environments and websites.

【翻訳】
残念ながら、このセキュリティハッシュ生成には、その可能な値が既知になるいくつかの問題があります。

セキュリティハッシュを生成する乱数ジェネレーターは、現在の時刻のマイクロ秒部分でシードされます。
つまり、シードに可能な値は 0〜999,999 までの整数のみです。
乱数ジェネレーターは暗号的に安全ではありません。つまり、シードが既知であれば、生成される「ランダム」な値は完全に決定されます。
セキュリティハッシュは1回生成され、データベースのlitespeed.router.hash オプションに保存されます。
秘密でソルト化されておらず、特定のリクエストや特定のユーザーに関連付けられていません。
一度生成されると、値が変更されることはありません。
上記のすべての理由により、セキュリティ ハッシュの可能な値は 100 万個しかありません。
値はすべての環境と Webサイトで既知であり、同一です。

関連ページ

WordPressのセキュリティ対策超入門
WordPressのセキュリティ対策について入門者向けに解説します。

コメント