WordPress Litespeed Cache の脆弱性 CVE-2024-44000 (CVSS 9.8) が FIX:ただちにアップデートを!

CVE-2024-44000 (CVSS 9.8): Litespeed Cache flaw exposes millions of WordPress sites to takeover attacks

2024/09/05 SecurityOnline — 500 万以上のアクティブ・インストールを誇る、WordPress の人気プラグイン LiteSpeed Cache に重大なセキュリティ脆弱性が発見された。この脆弱性の悪用に成功した未認証の訪問者は、管理者権限を持つユーザーなどのログイン・アカウントへのアクセスを達成し、WordPress ユーザーに深刻な脅威をもたらす。Patchstack のセキュリティ研究者 Rafie Muhammad が発見した、この脆弱性 CVE-2024-44000 は、CVSS スコア 9.8 (Critical) と評価されている。


LiteSpeed Cache プラグインは、堅牢なキャッシュ機能とサイト最適化の機能により広く使用されているが、未認証の攻撃者によるアカウントの乗っ取りの脆弱性を抱えている。

この脆弱性の悪用に成功した攻撃者は、ユーザー・セッションをハイジャックし、管理者レベルのロールへとアクセス権の昇格をさせる。このレベルのアクセス権を取得した攻撃者は、悪意のプラグインのアップロードとインストールを達成し、侵害したサイトを完全に制御できるようになる。

この脆弱性は、プラグインのデバッグ・ログ機能内の問題に起因しており、機密性の高い “Set-Cookie” ヘッダーなどの HTTP レスポンス・ヘッダーを、誤って漏洩してしまうものだ。この問題が発生するのは、ユーザーが WordPress サイトにログインしたときであり、さらに、デバッグ・ログ機能が有効化されているケースと、以前に有効化されていたケースで、この漏洩を利用するユーザー・セッションの乗っ取りが成立する。

脆弱性 CVE-2024-44000 の根本的な原因は、このプラグインの終了関数にある。この関数は、headers_list() データをパラメーターとして、self::debug() 関数を呼び出すものだ。

/**
	* End call of one request process
	* @since 4.7
	* @access public
	*/
public static function ended()
{
	self::debug('Response headers', headers_list());

	$elapsed_time = number_format((microtime(true) - LSCWP_TS_0) * 1000, 2);
	self::debug("End response\n--------------------------------------------------Duration: " . $elapsed_time . " ms------------------------------\n");
}

src/debug2.cls.php, functionended()

この関数は、“Set-Cookie” ヘッダーなど取り込んだ、HTTP レスポンス・ヘッダー全体をコンパイルし、デバッグ・ログ・ファイルに書き込む。つまり、いずれかの時点でデバッグ・ログ機能が有効化されていた場合には、ログ・ファイルに機密セッション Cookie が含まれる可能性があり、ファイルが消去されていな限り、攻撃者に公開されてしまう。

この脆弱性の悪用可能性は、2つの重要な条件に依存しする。

  1. デバッグ・ログ機能がアクティブに状況にある場合と、過去にログ・ファイルがアクティブ化され、それが消去されることなく残されている場合が想定される。
  2. そたがって攻撃者の前提としては、漏洩した Cookie が保持されている “/wp-content/debug.log” ファイルへのアクセスが必要となる。


すでに LiteSpeed チームは、プラグインのバージョン 6.5.0.1 でパッチをリリースし、この重大な脆弱性に対応している。このパッチにより、コアな問題への対処は完了するが、影響を受けるサイトのセキュリティを強化するための、追加の推奨事項も提示されている:

  • 現在のルールでは、不正アクセスの完全なブロックが不可能なため、新しいログ・ファイルへのダイレクト・アクセスを拒否するための、適切な .htaccess ルールを実装する。
  • 特に、過去においてデバッグ機能が有効化されていた場合には、古い debug.log ファイルからコンテンツを消去/削除して、以前に漏洩した Cookie データに対して、攻撃者がアクセスできないようにする必要がある。