---
title: "AJ-Report 1.7.1 までで、固定の JWT 秘密鍵により共有トークンを偽造され認証なしでコード実行（CVE-2026-120209）: 修正版は未確認"
url: https://n-t-p.io/worldsecurity/articles/aj-report-hardcoded-jwt-share-token-forgery-rce-2026-120209
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年10月31日
updated: 2026年10月31日
severity: 緊急
cve: CVE-2026-120209
---

# AJ-Report 1.7.1 までで、固定の JWT 秘密鍵により共有トークンを偽造され認証なしでコード実行（CVE-2026-120209）: 修正版は未確認

> **TL;DR:** 報告・ダッシュボード作成ツール AJ-Report の 1.7.1 までは、共有トークンの署名に固定の JWT 秘密鍵を使うため、トークンを偽造して /dataSet/testTransform に入り、Groovy スクリプトを認証なしで実行できる（CVE-2026-120209、CVSS v3.1 9.8・v4.0 9.3、CNA の値。報告の説明で、当サイトでは未再現）。修正版・修正コミットは確認できていない（最新タグは V1.7.1）。NVD の評価は未実施、EPSS は公開直後のため未算出、KEV なし。

**要点**
- AJ-Report 1.7.1 まで：共有トークンの署名鍵が固定（V1.7.1 のソースで確認）のため、有効な Share-Token をオフラインで偽造できる
- 報告は、reportCode を dataSet にしたトークンで /dataSet/testTransform が権限確認なしに通り、Groovy スクリプトが実行され、公式イメージは root で動くためサーバー上でコードを実行できるとしている（当サイトでは未再現）
- 修正版・修正コミットは確認できていない。最新タグは V1.7.1（2025-08-08）、最終コミットは 2026-08-13（README のみ）。Issue は未対応
- CVSS は CNA（VulnCheck）の値で v3.1 9.8・v4.0 9.3。NVD の評価は未実施（Received）、EPSS は公開直後のため未算出、KEV なし、悪用の報告なし
- 修正版が出るまでは、サーバーを外部に公開しない・testTransform を遮断するなどの緩和を検討する（本記事の推定）

報告・ダッシュボード作成ツール 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 実行に制限を付けることを提案しています。これは報告者の提案で、開発側が採用したものではありません。

## 対応（修正版が出るまで）

1. AJ-Report の管理画面と API を、インターネットや信頼できないネットワークに公開しないでください。VPN や許可した送信元からだけに絞ることを検討します（本記事の推定です）。
2. リバースプロキシなどで `/dataSet/testTransform` への外部からの要求を遮断する方法があります。正規の利用に影響がないか先に確認してください（本記事の推定で、効果は検証していません）。
3. 公開していた環境では、不審な `Share-Token` 付きの要求、予期しないプロセス・ファイル、データソースの接続情報の使用がないか確認します。アプリケーションを root で動かしている場合は、権限を落とすことも検討します（本記事の推定）。
4. 開発側のリリースや 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 のタグ・コミットの記録に基づきます。


## 出典
- [NVD CVE-2026-120209](https://nvd.nist.gov/vuln/detail/CVE-2026-120209) — NIST NVD
- [GitHub Advisory GHSA-p83w-vf54-73v4](https://github.com/advisories/GHSA-p83w-vf54-73v4) — GitHub
- [VulnCheck の勧告](https://www.vulncheck.com/advisories/aj-report-through-1.7.1-authentication-bypass-leading-to-rce-via-share-token) — VulnCheck
- [AJ-Report Issue #IKRV6T](https://gitee.com/belief-team/report/issues/IKRV6T) — Gitee
- [該当コード（V1.7.1）JwtUtil.java](https://gitee.com/belief-team/report/blob/V1.7.1/report-core/src/main/java/com/anjiplus/template/gaea/business/util/JwtUtil.java) — Gitee
- [FIRST EPSS CVE-2026-120209](https://api.first.org/data/v1/epss?cve=CVE-2026-120209) — FIRST

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/aj-report-hardcoded-jwt-share-token-forgery-rce-2026-120209