
CVE-2026-3844 — Breeze Cache(WordPress)における認証されていない任意のファイルアップロードからRCEへ。CVSS 9.8 CRITICAL。マススキャナー + マルチスレッドによる自動シェルインジェクター。
╔════════════════════════════════════════════════════════════╗
║ CVE-2026-3844 ║
║ Breeze Cache <= 2.4.4 Arbitrary File Upload ║
║ Unauthenticated RCE | Authorized Lab Use Only ║
╚════════════════════════════════════════════════════════════╝
CVE-2026-3844 は、Breeze Cache WordPressプラグインの影響を受けるバージョンに影響を及ぼす任意ファイルアップロードの脆弱性です。ローカルGravatarホスティングが有効な場合、BreezeはアバターURLを取得し、ダウンロードしたファイルをファイルタイプを十分に検証せずにWebアクセス可能なキャッシュディレクトリに保存できます。
| フィールド | 詳細 |
|---|---|
| CVE | CVE-2026-3844 |
| 製品 | Breeze Cache、WordPressキャッシュプラグイン |
| ベンダー | Cloudways |
| 脆弱性タイプ | 無制限ファイルアップロード |
| CWE | CWE-434 |
| 深刻度 | Critical、CVSS 9.8 |
| 認証 | 不要 |
| 影響を受けるバージョン | Breeze Cache <= 2.4.4 |
| 修正バージョン | 2.4.5 以降 |
| 必要な設定 | Host Files Locally - Gravatars が有効 |
Attacker-controlled avatar URL
|
v
WordPress renders an avatar
|
v
Breeze Gravatar local-cache handler
|
v
download_url() fetches the remote file
|
v
File is saved under wp-content/cache/breeze-extra/gravatars/
|
v
Web-accessible uploaded file
脆弱性のある動作はBreezeのGravatarキャッシュフローにあります:
src URL は Breeze の Gravatar ハンドラーによって受け入れられます。download_url() を通じてダウンロードされます。関連する脆弱性領域:
inc/class-breeze-cache-cronjobs.php
fetch_gravatar_from_remote()
ターゲットの要件:
<= 2.4.4 を使用しているWordPressサイト。Host Files Locally - Gravatars が有効であること。ローカルラボのメモ:
git clone https://github.com/AnggaTechI/CVE-2026-3844.git
cd CVE-2026-3844
python3 --version
サードパーティのPythonパッケージは不要です。スクリプトはPython標準ライブラリのモジュールのみを使用します。
ツールを実行:
python3 exploit.py
単一ターゲットの例:
[*] Target URL or file: http://localhost/lab-wp
ターゲットリストの例:
[*] Target URL or file: targets.txt
[*] Threads (default 30): 30
[*] Auto-inject on vulnerable? [y/N]: n
出力例:
[+] Loaded 1 target(s)
[+] Scanning 1 targets with 30 threads
[+] [1/1] localhost/lab-wp -> v2.4.4 gravatar=ON
[+] VULNERABLE: 1/1
[+] Saved: result.txt
スクリプトは、ターゲットがWordPressであるかどうかを確認し、Breezeプラグインのメタデータを読み取り、検出されたバージョンを脆弱な範囲と比較します。
スクリプトは、Breezeのbreeze-extra/gravatarsキャッシュ参照を確認することで、ローカルGravatarホスティングが有効かどうかを推測しようとします。
自動インジェクションが有効な場合、スクリプトは生成したテストペイロードを展開し、そのマーカーを確認することで、悪用可能性を検証しようとします。
ローカルラボでは、スクリプトはWordPressルートを特定できる場合に直接ファイルシステムアクセスを使用する場合があります。リモートでの許可されたテストでは、一時的なペイロードサーバーを起動し、BreezeのGravatarキャッシュフローをトリガーしようとします。
WordPressの構成によって、キャッシュファイルは以下のいずれかの形式で表示されます:
/wp-content/cache/breeze-extra/gravatars/<filename>
/wp-content/cache/breeze-extra/gravatars/1/<filename>
最初のパスは通常のシングルサイトWordPressインストールで一般的です。2番目はブログ/サイトIDが含まれる場合に現れることがあります。
ローカルWordPressラボでテストする際は、このチェックリストを使用してください:
2.4.4 がインストールされている。Host Files Locally - Gravatars が有効である。wp-content/cache/breeze-extra/gravatars/ の下に存在する。wp-contentパスからファイルを配信できる。gravatar=OFF
プラグインは有効かもしれませんが、BreezeがまだローカルGravatarキャッシュファイルを生成していません。アバターを表示するページにアクセスするか、ラボ内でWordPressのアバター描画パスを呼び出してください。
not vulnerable
一般的な原因は、パッチ適用済みのBreezeバージョン、Breezeがインストールされていない、URLでWordPressが検出されない、ターゲットパスに/lab-wpのようなサブディレクトリがない、などです。
Injection failed
Gravatar設定が無効である、サイトがアバターを公開表示していない、キャッシュパスが書き込み可能でない、またはWordPressサーバーからリモートペイロードURLに到達できない可能性があります。
このリポジトリは、教育、ローカルラボでの再現、および許可されたセキュリティテストを目的としています。所有していないシステム、またはテストする明示的な許可がないシステムに対して実行しないでください。