CVE-2026-48907 / GHSA-c3f5-4g7f-qjqj
Joomla JCE Editor 認証なしRemote Code Execution
CVSS 10.0 Critical
CISA KEV
Fixed in 2.9.99.6
CWE 284
EPSS 3.178%
Vendor Widget Factory
TL;DR
Joomla Content Editor (JCE) のプロファイルインポートエンドポイントに認証なしRCE脆弱性が存在。
攻撃者はCSRFトークン取得後、profiles.import エンドポイント経由でPHPファイルをアップロードし、
tmp/ ディレクトリで実行することでサーバー完全掌握を達成。
CISA KEV登録済み、実稼働環境での悪用確認済み。
JCE 2.9.99.6以降への即時アップデートが必須。
概要
| CVE ID | CVE-2026-48907 |
| GHSA ID | GHSA-c3f5-4g7f-qjqj |
| 脆弱性タイプ | 認証なし Remote Code Execution (RCE) |
| CVSS v3.0 | 9.8 (Critical) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CVSS v4.0 | 10.0 (Critical) — AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| CWE | CWE-284 (Improper Access Control) |
| EPSS | 3.178% (GitHub Advisory値。Tenableは0.00111%を報告 — データソースにより差異あり) |
| 影響製品 | Joomla Content Editor (JCE) 1.0.0–2.9.99.4 (JCE公式: 2.7.x/2.8.x/2.9.xにパッチ提供。2.6.xはデフォルト設定で影響なし) |
| 修正バージョン | 2.9.99.5 (2026-06-03), 2.9.99.6 (2026-06-06, 推奨) |
| 公開日 | 2026年6月5日 |
| CISA KEV | 登録済み (2026年6月16日) — 悪用確認済み |
JCEはJoomlaエコシステムで最も人気のあるエディター拡張機能であり、
mysites.guruによれば最もインストール数の多いJoomla拡張機能の一つ。
技術詳細
脆弱エンドポイント
攻撃対象URL
/index.php?option=com_jce&task=profiles.import
根本原因 — 3つの脆弱性の連鎖
以下の3つがすべて存在することでRCEに至る。いずれか1つでも欠ければ連鎖は断たれる。
| #1 認可チェック欠如 | JceControllerProfiles::import() はCSRFトークンチェックのみに依存。Factory::getUser() や認可検証が一切なし。CSRFトークンは公開ページから容易に取得可能。 |
| #2 拡張子検証欠如 | File::makeSafe() はファイルシステム不正文字のみ除去。拡張子を検証しない。evil.xml.php がそのまま通過。 |
| #3 安全フラグ誤用 | File::upload($allow_unsafe = true) によりJoomla拡張子ブラックリストが無効化。実行可能ファイルが tmp/ に配置。 |
攻撃フロー
Step 1
CSRFトークン取得: 公開Joomlaページから隠しフィールド/JS変数経由でCSRFトークンを抽出
Step 2
PHPアップロード: profiles.import に武器化されたPHPファイルをマルチパートリクエストで送信
Step 3
ファイル配置: ファイルが tmp/ ディレクトリに配置される(インポート失敗しても残る)
Step 4
RCE実行: アップロードされたPHPファイルに直接HTTPアクセスしてコマンド実行
⚠️ 認証不要・ユーザー操作不要: 完全なRCEが3回のHTTPリクエストで達成される。ログイン情報不要。
PoC/Exploitの状況
PoCレスポンス例
profiles.import レスポンス(インポート失敗でもファイルは残る)
{"success":true,"message":"","messages":{"info":["0 Profile(s) imported successfully"]},"data":{"redirect":"/index.php/component/jce?view=profiles"}}
実被害・インシデント
2026-06-03
初期パッチ: JCE 2.9.99.5 リリース
2026-06-05
脆弱性公開: GitHub Advisory (GHSA-c3f5-4g7f-qjqj) 公開
2026-06-06
追加ハードニング: JCE 2.9.99.6 リリース
2026-06-16
CISA KEV登録: 「actively exploited」として登録。連邦機関に即時パッチ義務付け
⚠️ JCE公式警告: 「公開、自動化的悪用コードが存在する。公開ユーザー登録がないサイトも安全ではない」
「アップデートは侵入経路を塞ぐが、既に侵害されたサイトのクリーンアップは行わない」
検出方法
ブラックボックス検出
| WAF/ログモニタリング | com_jce&task=profiles.import への不審リクエストを監視 |
| Nucleiスキャン | 公開Nucleiテンプレートで脆弱性スキャン |
| ファイル監視 | tmp/, images/, media/ 内の不審な .php ファイル確認 |
| アクセスログ | 認証なし profiles.import リクエスト — 最古エントリが初期侵入時刻 |
ホワイトボックス検出
| JCEバージョン確認 | 管理画面 → Components → JCE Editor → バージョン確認 |
| ファイル確認 | /administrator/components/com_jce/jce.xml のバージョン情報 |
| プロファイル検査 | 見知らぬプロファイル(自動生成名、最上位配置)の有無 |
実サイト影響確認手順
手順1: JCEインストール確認
curl -s -o /dev/null -w "%{http_code}" "https://<target>/index.php?option=com_jce"
# 200 → JCEあり, 404 → なし
手順2: バージョン確認
curl -s "https://<target>/administrator/components/com_jce/jce.xml" | grep version
# ≤ 2.9.99.4 → 脆弱, ≥ 2.9.99.6 → パッチ済み
手順3: tmp/アクセス確認
curl -s -o /dev/null -w "%{http_code}" "https://<target>/tmp/"
# 200 → 公開可, 403/404 → 制限済み
判定マトリックス
| JCE | バージョン | tmp/ | 判定 |
| ✅ あり | ≤ 2.9.99.4 | ✅ 公開 | 脆弱 |
| ✅ あり | ≥ 2.9.99.6 | — | パッチ済み |
| ❌ なし | N/A | — | 影響なし |
| ✅ あり | ≤ 2.9.99.4 | ❌ 制限 | 理論上脆弱 |
対策
恒久的対策
JCE 2.9.99.6以降にアップデート — 2.9.99.5でも修正済だが、2.9.99.6で追加ハードニング
Immediate
レガシーサイト用無料パッチ — JCE 2.7.x/2.8.x/2.9.x 向けに公式パッチ提供
Immediate
Joomlaコアを最新バージョンに維持
Ongoing
サーバーハードニング
Apache — tmp/でのPHP実行禁止
<Directory "/path/to/joomla/tmp">
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
</Directory>
Nginx — tmp/でのPHP実行禁止
location /tmp/ {
location ~ \.php$ {
deny all;
}
}
⚠️ コンプロマイズ後の復旧:
1. 証拠保全(疑わしいプロファイル/ファイルをコピー) → 2. パッチ適用 → 3. 不正ファイル削除 → 4. 認証情報ローテーション → 5. マルウェアスキャン → 6. 侵入前バックアップから復元
修正パッチ詳細
【クローズドソース製品のため、コードレベルのdiff分析は不可。JCE公式セキュリティアドバイザリに基づく。】
v2.9.99.5 (2026-06-03) — 初期修正
| 認可チェック追加 | インポートエンドポイントにユーザー認証/認可チェックを追加 |
| ファイル拡張子検証 | プロファイルインポート時のファイル拡張子を厳密に検証 |
| アップロードフラグ修正 | $allow_unsafe フラグをデフォルト false に変更 |
v2.9.99.6 (2026-06-06) — 追加ハードニング
| セキュリティ追加強化 | 複数の追加セキュリティ修正を適用 |
| XXE保護 | PHP 7.x環境に外部エンティティ読み込み保護をバックポート |
| XMLフィールド許可リスト | 既知の安全なXMLフィールドのみを処理 |
参考資料
公式情報源
技術分析
PoC/Exploit