目次(5)

CVE-2026-120209
報告・ダッシュボード作成ツール AJ-Report の 1.7.1 までで、共有トークン(Share-Token)の署名に使う JWT の秘密鍵がソースコードに固定されており、攻撃者が有効なトークンをオフラインで偽造できる不具合(CVE-2026-120209、CWE-321)が 10/31 に NVD へ公開されました。NVD の説明では、reportCode を dataSet にしたトークンで testTransform エンドポイントに入り、受け取ったスクリプトが GroovyClassLoader に渡されて、認証なしでリモートコード実行が可能になります。CVSS は v3.1 が 9.8、v4.0 が 9.3 で、いずれも Critical です。公開時点で、修正版のリリースも修正コミットも確認できていません。 最新のタグは V1.7.1(2025-08-08)のままです。
何が起きるか
- 共有トークンの署名・検証の両方が、
JwtUtil.javaの固定文字列(V1.7.1 のコードで確認)を秘密鍵に使っています。この鍵を知っていれば、誰でも検証を通るトークンを自分で作れます。 - 報告(Gitee の Issue #IKRV6T)によると、認証フィルターは、Share-Token を持つ要求について「要求先の URI にトークン内の
reportCodeが含まれるか」だけを調べて通します。reportCodeはトークンを作る側が決められるため、dataSetにすると/dataSet/testTransformが権限確認なしに通ります。 testTransformは、要求に含まれる変換スクリプトをGroovyClassLoaderで読み込んで実行します。報告は、サンドボックスや許可リストがなく、公式イメージではアプリケーションが root で動くため、サーバー上で任意のコードを実行できるとしています。- 当サイトでは再現していません。固定された鍵の文字列は V1.7.1 のソースで確認しましたが、フィルターと Groovy 実行の部分のコードは読んでいません(報告の説明に基づきます)。
- 悪用の報告は確認できていません。CISA の KEV には載っていません(2026.10.30 版の一覧で確認)。
影響を受ける条件
| 項目 | 内容 |
|---|---|
| 対象 | AJ-Report(belief-team/report)の 1.7.1 まで(NVD の記載)。報告は V1.4.2〜V1.7.1 としているが、1.4.2 より前の版は確認していない |
| 前提 | 攻撃者が AJ-Report サーバーの HTTP ポートに到達できること。認証・権限は不要 |
| 評価 | CVSS v3.1 は 9.8(Critical、AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)、v4.0 は 9.3。値は CNA の VulnCheck が付けたもので、NVD 自身の評価ではない。NVD の状態は「Received」(10/31 時点) |
| 弱点の分類 | CWE-321(ハードコードされた暗号鍵の使用) |
| 修正版 | なし(確認できず)。最新のタグは V1.7.1 |
修正の状況
- タグは V1.7.1(2025-08-08)が最新で、リポジトリの最新コミットは 2026-08-13 のもの(README の更新のみ)です。報告後(10/30)に増えたコミットはなく、修正コミットがタグに含まれるかの照合は、対象がなく行えません。
- Issue #IKRV6T は 10/30(JST)に立てられ、確認時点で未対応のまま、コメントはありません。開発側の反応は確認できていません。
- 報告は、鍵をソースから外して外部設定の強いランダム値にすること、共有トークンで入れる範囲を読み取り専用のレポート API に絞って URI は完全一致で比べること、
testTransformに独立した認証を付けること、Groovy 実行に制限を付けることを提案しています。これは報告者の提案で、開発側が採用したものではありません。
対応(修正版が出るまで)
- AJ-Report の管理画面と API を、インターネットや信頼できないネットワークに公開しないでください。VPN や許可した送信元からだけに絞ることを検討します(本記事の推定です)。
- リバースプロキシなどで
/dataSet/testTransformへの外部からの要求を遮断する方法があります。正規の利用に影響がないか先に確認してください(本記事の推定で、効果は検証していません)。 - 公開していた環境では、不審な
Share-Token付きの要求、予期しないプロセス・ファイル、データソースの接続情報の使用がないか確認します。アプリケーションを root で動かしている場合は、権限を落とすことも検討します(本記事の推定)。 - 開発側のリリースや Issue の更新を確認し、修正版が出たら更新します。
未確認の点
- 修正版・回避策の公式情報は確認できていません。開発側の反応も確認できていません。
- 悪用の報告は確認できていません。KEV にも載っていません。
- NVD の評価は未実施(状態は Received)で、CVSS は CNA(VulnCheck)の値です。GitHub の勧告(GHSA-p83w-vf54-73v4)は未レビューで、同じ値を載せています。
- EPSS は公開直後のため未算出です(FIRST にデータなし)。
- 報告の再現手順(トークンの偽造、スクリプトの実行、公式イメージで root)は当サイトでは再現していません。1.4.2 より前の版の影響も確認していません。
- 日付は、NVD の公開(2026-10-31 18:17 UTC)、Issue の作成(2026-10-30 23:31 JST)、Gitee のタグ・コミットの記録に基づきます。
この記事について
- 執筆・編集
- World Security 編集部
出典
- NVD CVE-2026-120209(NIST NVD)
- GitHub Advisory GHSA-p83w-vf54-73v4(GitHub)
- VulnCheck の勧告(VulnCheck)
- AJ-Report Issue #IKRV6T(Gitee)
- 該当コード(V1.7.1)JwtUtil.java(Gitee)
- FIRST EPSS CVE-2026-120209(FIRST)




