メインコンテンツへスキップ

JCEの緊急脆弱性(CVE-2026-48907)と、自サイトのログに残った30日間の攻撃

| Alaudae.JP

Joomlaのエディタ拡張「JCE(Joomla Content Editor)」に、最高深刻度の脆弱性が見つかりました。CVE-2026-48907。CVSSスコアは10.0、満点です。未認証・ワンステップでサーバー上に任意のPHPコードを実行できる、いわゆるリモートコード実行(RCE)の欠陥です。

すでに修正版は出ています。しかし本稿を書く動機は「直せ」という一言では終わらないところにあります。第一に、この脆弱性は当局が緊急扱いした実害のある事案でありながら、日本語で具体的な対処を案内している情報がほとんど見当たりません。第二に、修正版を当てても、それ以前に侵入されていた場合は攻撃者の残したものは消えません。そして第三に、当サイトの30日分のアクセスログには、この脆弱性を狙った自動攻撃が実際に、しかも執拗に記録されていました。小さな個人サイトでも狙われる。その生のデータを、同じ立場の運営者への手がかりとして残します。

なお前置きとして、筆者はセキュリティの専門家ではありません。以下は公開されている脆弱性情報と、自サイトのログという一次データを突き合わせて整理したものです。断定を避けた箇所は、そのまま慎重に読んでください。

この脆弱性の何が危険か

JCEはJoomlaで最も広く使われているエディタ拡張のひとつです。だからこそ影響範囲が広い。

技術的な核心は、プロファイルのインポート機能における認可の欠落です。パッチ以前のJCEは、プロファイルのインポート処理に対してCSRFトークンの確認しか行っていませんでした。ところがこのトークンはJoomlaがトップページを含む公開ページに埋め込んでいるため、攻撃者は自分で拾えます。認証チェック(ログインしているユーザーかどうかの確認)そのものが存在しなかったため、有効なトークンさえ手に入れれば、誰でもインポート処理を呼び出せてしまう。

攻撃は2段構えです。まず未認証のままファイルアップロードを許す偽のエディタプロファイルを作らせる。次にそのプロファイルを使って、`.php`や`.phtml`といった実行可能ファイルをサーバーに書き込む。あとはそのファイルにアクセスすればPHPが実行される。認証も、利用者の操作も、事前の権限も要らない。これがCVSS 10.0の中身です。

影響を受けるバージョンと修正版

影響を受けるのはJCE 1.0.0から2.9.99.4まで。修正の経緯は次の通りです。

  • 2.9.99.5(6月3日): 脆弱性そのものを修正
  • 2.9.99.6(6月8日): 追加のハードニング
  • 2.9.99.8(6月18日): さらなるセキュリティ機能とバグ修正。全サイトで推奨される版

ひとつ注意点があります。2.9.99.6で一部のサイトが、正規の画像やファイルのアップロードをブロックされる不具合(PHPタグの誤検知)に遭遇しました。これは2.9.99.8で修正されています。もし最近アップロードの不調があったなら、この件かもしれません。いずれにせよ、上げるなら2.9.99.8までです。

当局が課した3日間の期限

これが「よくある脆弱性のひとつ」ではないことを示すのが、米国CISA(サイバーセキュリティ・インフラセキュリティ庁)の対応です。CISAは6月16日、この脆弱性を「悪用が確認された脆弱性(KEV)」カタログに追加し、連邦機関に対して6月19日までという、CISAの歴史でも最短クラスの3日間の修正期限を課しました。動作する攻撃コードは公開済み、攻撃は自動化されている、というのが理由です。

 「うちは会員登録機能がないから大丈夫」は通用しない

ここが最も誤解されやすい点です。JCEの開発元は明言しています。攻撃は自動化されており、公開登録のないサイトも安全ではない、と。前述の通り、この攻撃に必要なCSRFトークンはトップページから拾えます。ログイン機構も会員登録も、攻撃の前提になっていないのです。

そしてそれは、当サイトのログが裏付けています。

当サイトのログに残った30日間

当サイトは6月下旬に本格稼働したばかりの、商用と非商用を合わせて3つのプロパティを持つ小規模なJoomlaサイトです。その30日分(約68万行)のアクセスログを解析しました。載せられる範囲で、観測された事実を記します。接続元のIPアドレスは伏せます。多くは乗っ取られた第三者のサーバーである可能性が高く、晒す意味がないためです。

攻撃は毎日、機械的なペースで来ていた。JCEを狙う攻撃POSTは観測期間を通じて毎日記録されていました。特徴的だったのは、複数の接続元が1日あたりほぼ1,181〜1,182リクエストという、判で押したような固定クォータで動いていたことです。同一の指紋(プロファイルインポートの連打と、その後のWebシェル設置確認)を持ち、接続元をローテーションしながら約2週間続きました。人間の手作業ではなく、ボットネットによる自動キャンペーンの挙動です。

手口はCVEの解説と完全に一致していた。攻撃の流れは、`profiles.import`タスクへのPOST(偽プロファイル作成の試み)に続いて、`.php`や`.phtml`のWebシェルらしきファイルを各所に置いてアクセスを試みる、というものでした。ファイル名には`nx`で始まるものや`nxploited`を含むものなど、既知の攻撃で流通しているパターンが並んでいました。これは前述した「プロファイル作成 → 実行ファイル設置」の2段構えそのものです。

登録機能の有無は関係なかった。当サイトが狙われたことが、開発元の警告を裏付けています。狙われるのに、特別な条件は要りませんでした。

なお当サイトのケースでは、これらの攻撃が成立した形跡は確認できませんでした。ログ上、攻撃POSTはすべてリダイレクトの末にエラーページへ着地し、Webシェル設置の試みはすべてブロックされ、機密ファイルを狙った探索が成功した記録もありませんでした。その上で、サーバー内のファイルも直接確認し、攻撃者が残したとみられる不審なファイルは見つかりませんでした。

ここで、表現を正確にしておきます。ログ解析とファイル確認でできるのは「侵害の成立を示す痕跡が見つからなかった」ことの確認までです。これは「絶対に侵害されていない」ことの証明とは違います。だからこそ、次の対処が要ります。

今すぐ確認・対処すべきこと

以下は公開情報(CISA、JCE開発元ほか)に基づく、運営者がとるべき手順です。

1. まずアップグレードする。JCEを2.9.99.8に上げてください。使っていないなら、Joomlaの管理画面から無効化・削除してください。JCEはテンプレートや配布パッケージに同梱されていることがあり、入れた覚えがなくても動いている場合があります。拡張機能の棚卸しをして、自分のサイトにJCEが入っているか、入っているなら何のバージョンかを確認してください。

2. 侵害されていないかを確認する。開発元が案内している確認ポイントは次の通りです。

  • 管理画面の「コンポーネント → JCE Editor → Editor Profiles」で、自分が作成した覚えのないエディタプロファイルがないか
  • `images/`、`media/`などのアップロードディレクトリに、身に覚えのない`.php` / `.phtml` / `.phar`ファイルが書き込まれていないか
  • アクセスログに、`index.php?option=com_jce&task=profiles.import`への未認証リクエストがないか

サーバーにSSHで入れるなら、アップロード先に最近書き込まれた実行可能ファイルがないかを直接探すのが確実です。ただし正規のファイル(コンポーネントが同梱するPHP等)も引っかかるので、出てきたものが正規か不審かの見分けは慎重に。判断に迷うファイルは、消す前に必ずバックアップを取ってください。

3. サーバー側でも防御を固める。修正版を当てるのが大前提ですが、加えて次の緩和策が挙げられています。

  • `/tmp/`へのWebアクセスを制限し、一時ディレクトリでのPHP実行を止める
  • WAF(Webアプリケーションファイアウォール)で`com_jce&task=profiles.import`へのリクエストをフィルタする

最も重要な一点:アップデートは入口を塞ぐが、掃除はしない

これは開発元自身が強調しています。修正版を当てることは、侵入口を塞ぎます。しかし、それ以前にすでに侵入されていた場合、アップデートは攻撃者が残したものを取り除いてはくれません。

つまり順序が逆だと意味が半減します。「更新したから安心」ではなく、「更新した上で、更新前に入られていなかったかを確認する」。この2段階が必要です。もし侵害の可能性があるなら、管理者パスワード、データベース認証情報、ホスティングの管理パネルの認証情報を、念のためすべて変更することも推奨されています。

おわりに

当サイトのような、稼働したばかりの小さなサイトでも、ボットネットに2週間張り付かれます。攻撃者は、新しく公開された脆弱性を自動化された攻撃に変えるのが実に速い。それは今回、自分のログで目の当たりにしました。

幸い当サイトでは、確認できた範囲で被害の痕跡はありませんでした。しかしそれは、たまたま狙われた欠陥が自サイトの構成に刺さらなかった、という側面もあります。運任せにしない唯一の方法は、直すべきものを、直すべき時に直すことです。この記事が、英語圏の情報にたどり着く前の誰か一人にでも、その手がかりになれば幸いです。


*本稿は公開されている脆弱性情報と、当サイトのアクセスログという一次データに基づいて整理したものです。筆者はセキュリティの専門家ではなく、記述には推定を含む箇所があります。ご自身のサイトの対処にあたっては、開発元およびCISAの公式情報を必ず併せてご確認ください。*

*主な参照先: JCE公式(joomlacontenteditor.net)、CISA KEVカタログ、CVE-2026-48907の各脆弱性データベース。*