---
title: "Thelia のクーポン条件の概要画面に格納型 XSS（CVE-2026-120205）: 3.1.0 で修正、管理者アカウントの作成に至る恐れ"
url: https://n-t-p.io/worldsecurity/articles/thelia-coupon-condition-stored-xss-admin-takeover-cwe-79-cve-2026-120205-before-3-1-0
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年11月1日
updated: 2026年11月1日
severity: 高
cve: CVE-2026-120205
---

# Thelia のクーポン条件の概要画面に格納型 XSS（CVE-2026-120205）: 3.1.0 で修正、管理者アカウントの作成に至る恐れ

> **TL;DR:** EC サイト構築基盤 Thelia の 3.1.0 より前で、クーポン条件の概要画面に顧客名が無害化されずに出力され、格納型 XSS（CVE-2026-120205、CWE-79）になる。一般顧客の登録名に仕込んだスクリプトが管理者の画面で動き、管理者アカウントの作成に至る恐れがある。3.1.0（2026-09-16）で修正。CVSS v3.1 は 8.0（VulnCheck）、勧告側は 9.6。EPSS は公開直後のため未算出、KEV なし。

**要点**
- Thelia 3.1.0 より前で、「特定の顧客向け」クーポン条件の概要が顧客名を HTML エスケープせずに出力し、格納型 XSS（CWE-79）になる
- 一般顧客として登録した名前に仕込んだスクリプトが、管理者がクーポン画面を開いたときに管理画面の権限で動く。勧告によれば管理者アカウントの作成まで進められる
- 3.1.0（2026-09-16）以降へ更新する。管理者アカウントの一覧と、顧客名に不審な記号がないかを確認する
- CVSS v3.1 は 8.0（VulnCheck の値）、Thelia の勧告は 9.6 と評価が分かれる。NVD の状態は Received。EPSS は公開直後のため未算出、KEV なし
- 管理者に条件を設定させる経路、実際の悪用、旧版のどこまでが対象かは未確認

NVD は 2026-10-31（18:17 UTC）に、EC サイト構築基盤 Thelia の CVE-2026-120205 を登録しました。説明によると、3.1.0 より前の `ForSomeCustomers::getSummary()` に**格納型のクロスサイトスクリプティング（CWE-79）**があり、顧客名のエスケープ漏れを通じて、未認証の攻撃者がスクリプトを仕込めます。仕込まれたスクリプトは、管理者が関連するクーポンを表示したときに実行され、CSRF トークンを盗んで管理者アカウントを作成されるおそれがあります。登録元（CNA）は VulnCheck で、NVD の状態は「Received」です。

## 何が起きるか

- 顧客が会員登録で入力した姓・名は、保存の段階でスクリプトを除去されずに保管されます（Thelia の勧告による）。
- 管理画面のクーポン設定で「特定の顧客向け」の条件にその顧客が指定されると、条件の概要表示が顧客名を**エスケープせずに** HTML として出力します。管理者がクーポン編集画面を開くだけでスクリプトが管理画面の権限で動きます。
- 勧告によれば、そこから管理者権限を持つ新しいアカウントを作る操作まで進められ、店舗の管理画面の乗っ取りにつながります。
- 成立には、(1) 攻撃者が一般顧客として登録できること、(2) 管理者がその顧客を「特定の顧客向け」条件に指定すること、(3) 管理者がクーポンの画面を開くこと、が必要です。(2) の操作を攻撃者が自力で起こせるかは確認できていません（未確認）。

## 数値と出典（2026-11-01 時点）

| 項目 | 内容 |
|---|---|
| CVE | CVE-2026-120205（CWE-79 クロスサイトスクリプティング） |
| 影響版 | Thelia 3.1.0 より前（NVD の説明。勧告の対象パッケージは thelia/thelia と thelia/core の 3.1.0 未満） |
| 修正版 | 3.1.0（2026-09-16 公開）。同系列の 3.2.x・3.3.0 も公開済み |
| 修正の内容 | クーポン条件の概要に差し込む値を HTML エスケープする関数を追加し、顧客名のほか国・カテゴリ・商品名・金額などの差し込みにも適用（修正コミット c90d593） |
| CVSS v3.1 | 8.0（High、AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N）。VulnCheck（CNA）の値で、NVD 自身の評価はなし |
| CVSS v4.0 | 7.4（High）。同じく VulnCheck の値 |
| 勧告側の評価 | Thelia の勧告（GHSA-r63g-6wfg-v5v9）は CVSS v3.1 9.6（Critical）。上の NVD 掲載値とは評価者が異なり、数値が食い違う |
| 状態 | NVD の状態は「Received」 |
| EPSS | 公開直後のため未算出（FIRST の API で該当なし、2026-11-01 確認） |
| KEV | 掲載なし（CISA の JSON で確認） |

## severity を high とした理由

評価は 8.0（CNA）から 9.6（勧告）まで幅があります。未認証の登録だけで仕込める点と、管理者アカウントの作成まで進められる影響の大きさは重い要素です。一方で、管理者が条件に顧客を指定して画面を開く必要があり、KEV 掲載や EPSS の算出もありません。以上から high としました。

## 対応として考えられること

1. 利用中の Thelia の版を確認し、3.1.0 以降（3.1.x の最新、または 3.2.x・3.3.0）へ更新します。
2. 更新できない間は、クーポンの「特定の顧客向け」条件を使わない、または既存の条件に含まれる顧客の姓・名に `<` や `>` を含むものがないか確認します（本記事の推定。公式な回避策は未確認）。
3. 管理者アカウントの一覧を見直し、心当たりのない管理者がいれば無効化して、パスワードの再設定とセッションの破棄を検討します。
4. 3.2.0 より前では管理画面の CSRF（CVE-2026-120206）も報告されているため、更新先の版でそちらの修正状況も確認します。

## 未確認の点

- 攻撃者が自力で、管理者に「特定の顧客向け」条件を設定させる経路があるかは確認していません。
- 実際の悪用は確認していません。PoC の手順は公式勧告に記載がありますが、本記事には再掲しません。
- CVSS は VulnCheck（CNA）と Thelia 勧告の値のみで、NVD 自身の評価は確認できていません。
- 3.0 系以前のどの版から影響を受けるかは確認していません（NVD は「3.1.0 より前」と記載）。
- EPSS は公開直後のため未算出です。
- 日付は NVD の登録（2026-10-31 18:17 UTC）と GitHub の公開情報に基づきます。


## 出典
- [NVD CVE-2026-120205](https://nvd.nist.gov/vuln/detail/CVE-2026-120205) — NIST NVD
- [Thelia 勧告 GHSA-r63g-6wfg-v5v9](https://github.com/thelia/thelia/security/advisories/GHSA-r63g-6wfg-v5v9) — GitHub
- [Thelia 修正コミット c90d593](https://github.com/thelia/thelia/commit/c90d59375089a0833a56703c6f9f9ddea17bddc9) — GitHub
- [Thelia 3.1.0 リリース](https://github.com/thelia/thelia/releases/tag/3.1.0) — GitHub
- [VulnCheck Advisory](https://www.vulncheck.com/advisories/thelia-before-3.1.0-stored-xss-via-coupon-condition-customer-name) — VulnCheck
- [FIRST EPSS CVE-2026-120205](https://api.first.org/data/v1/epss?cve=CVE-2026-120205) — FIRST
- [CISA KEV カタログ](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) — CISA

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/thelia-coupon-condition-stored-xss-admin-takeover-cwe-79-cve-2026-120205-before-3-1-0