Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged user
-
DeliveryStore malicious Blob + ContentType via REST API
-
ExploitPrivileged user opens file via openFile helper
-
ExecutionBlob executes as same-origin document
-
ImpactScript acts in privileged user's session
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires: (1) a generated entity with a Blob field plus its companion <field>ContentType property writable by a normal authenticated user - the generated REST resource omits method-level @PreAuthorize unless an entity authority is explicitly configured, so any authenticated user can write under the global /api/** rule; (2) the attacker storing active content (HTML or SVG) with a matching declared ContentType, since the generated code does not restrict MIME types or validate declared type against the bytes; and (3) a privileged user later clicking the UI link that calls the openFile helper (UI:R). Exploitation is LIMITED by the generated application's Content Security Policy and by target-browser Blob handling - a strict CSP or a browser that downloads rather than inline-renders the Blob neutralizes the payload - and by the requirement that both a write-capable account and a victim interaction exist. |
| Impact | This is a genuine but conditional stored XSS (CWE-79) in applications generated by generator-jhipster (<9.4.0) and react-jhipster (<=1.0.3), rated CVSS 7.6 with vector AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N. The elevated score is driven largely by the scope change (S:C) - active HTML/SVG opened as a same-origin Blob document can act in the privileged victim's authenticated context - and high confidentiality impact. However, several signals temper real-world priority. No EPSS score, no CISA KEV listing, and no public exploit were provided in the input, so exploitation status is 'no public exploit identified at time of analysis.' The CVSS vector asserts AC:L, but both the CVE description and the GHSA advisory explicitly state that exploitability 'depends on the generated application's content security policy and target-browser Blob behavior' - a meaningful external precondition that arguably warrants AC:H and makes blanket exploitation unreliable. Exploitation also requires two human prerequisites: an authenticated attacker with write access to a Blob-bearing entity (PR:L), and a privileged user subsequently clicking to open that file (UI:R). Net assessment: a real defense-in-depth flaw worth patching, but not a drive-by remote-unauthenticated emergency; its practical severity hinges on whether the generated app ships a restrictive CSP and whether the target browser renders the Blob inline rather than downloading it. |
| Exploit ScenarioDerived | A low-privileged but authenticated user creates or updates an entity that carries a Blob field, uploading active content (e.g. an SVG or HTML payload) and setting the companion ContentType to 'image/svg+xml' or 'text/html' via the generated REST API, which lacks method-level @PreAuthorize under the global /api/** rule. Later an administrator or other privileged user views the entity and clicks the link that invokes the generated openFile helper, which builds a same-origin object URL using the attacker-supplied MIME type and opens it, executing the script under the application origin. No public exploit code was provided in the input, though the GHSA advisory documents the exact vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Stored cross-site scripting can occur in applications generated by JHipster before generator-jhipster 9.4.0 and react-jhipster 1.1.0 when an authenticated user stores attacker-controlled Blob content and a companion ContentType in a Blob-bearing entity and a privileged user later opens it through the generated UI. The assessed CVSS is 7.6 with vector CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:L/A:N, reflecting authenticated write access, required victim interaction, and conditional exploitability that depends on the generated application's CSP and target-browser Blob handling. No public exploit identified at time of analysis; vendor-released patches are generator-jhipster 9.4.0 and react-jhipster 1.1.0.
RemediationAI
Upgrade to generator-jhipster 9.4.0 or later and react-jhipster 1.1.0 or later, apply the upstream fix from PR https://github.com/jhipster/generator-jhipster/pull/34807 or commit https://github.com/jhipster/generator-jhipster/commit/efe95edd4dedc3379735094936439410a51ce3d9, and regenerate affected applications so the openFile helper restricts Blob MIME handling and forces non-displayable types to application/octet-stream downloads. For existing generated applications that cannot be regenerated, backport the template changes or modify the generated data-utils helper to ignore attacker-controlled ContentType for active formats and force a safe download behavior. Server-side compensating controls include configuring entity-specific authorities or @PreAuthorize checks on Blob-bearing REST resources instead of relying on the global /api/** rule, validating declared MIME types against uploaded bytes and rejecting text/html, image/svg+xml, and application/xhtml+xml, and serving user-uploaded Blobs with Content-Disposition: attachment or from a separate origin; these may reduce functionality or require infrastructure changes. A strict Content Security Policy that prevents inline script execution and object embedding can reduce exploitability but can also break application features and should be tested. Vendor advisory: https://github.com/jhipster/generator-jhipster/security/advisories/GHSA-9ffp-22j7-56r2.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue is a CWE-79 trust-boundary failure in JHipster's generated code, tracked by CPE cpe:2.3:a:jhipster:generator-jhipster:*:*:*:*:*:*:*:* and cpe:2.3:a:jhipster:react-jhipster:*:*:*:*:*:*:*:*. Generated server code accepts entity creation/update for Blob-bearing entities; unless an entity-specific authority is configured, the REST resource omits method-level @PreAuthorize and falls under the global /api/** authenticated rule. The generated DTO/domain/mapper flow persists a companion <field>ContentType value as a plain String without MIME allowlisting or validation against the uploaded bytes. The client-side openFile helper in generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/data-utils.ts.ejs uses that server-returned ContentType as the Blob MIME type, creates an object URL, and opens it in a new same-origin window; active HTML or SVG can therefore render under the application origin if CSP and browser behavior permit. The upstream fix adds a BlobType parameter and forces non-displayable types such as text/html and image/svg+xml to application/octet-stream downloads rather than inline same-origin rendering.
Know when Jhipster gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
Authenticated write access gives PR:L; victim must open the file (UI:R); CSP/browser dependence justifies AC:H; same-origin execution crosses scope (S:C) with high confidentiality, low integrity, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
JHipster is a development platform to quickly generate, develop, and deploy modern web applications and microservice architectures. Prior to generator-jhipster 9.4.0 and react-jhipster 1.1.0, generated applications can persist attacker-controlled Blob data and companion ContentType values, return them through generated REST endpoints, and pass them to the generated openFile helper in generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/data-utils.ts.ejs. The helper uses the returned ContentType as the browser Blob MIME type and opens an object URL, so a normal authenticated user with write access to a Blob-bearing entity can store active HTML or SVG content that may execute under the application origin when a privileged user opens it. Exploitability depends on the generated application's content security policy and target-browser Blob behavior. This issue is fixed in generator-jhipster 9.4.0 and react-jhipster 1.1.0.
Blast Radius
ecosystem impact- 112 npm packages depend on generator-jhipster (111 direct, 1 indirect)
Ecosystem-wide dependent count for version 9.4.0.
Technical POC Analysis
Stored cross-site scripting (CWE-79) caused by a trust-boundary failure between generated server and client code, specifically an unrestricted MIME type passed into a same-origin Blob document.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Applications built with the JHipster generator (versions before generator-jhipster 9.4.0 and react-jhipster 1.1.0) can persist attacker-supplied Blob content that executes as stored script when a privileged user opens the affected record in the generated UI. The exposure is limited to authenticated users who already hold write access, and successful abuse depends on victim interaction and the target application's CSP configuration, so exploitation is conditional rather than opportunistic. Leadership should care because the targeted victims are typically administrators or privileged business users, making a single stored payload a potential path to session or account compromise in internally built applications.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
A class generated by the Generator in JHipster before 6.3.0 and JHipster Kotlin through 1.1.0 produces code that uses an
JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice archite
SQL injection in the generated reactive entity-list endpoints of JHipster-produced applications (generator-jhipster vers
In generator-jhipster-kotlin version 1.6.0 log entries are created for invalid password reset attempts. Rated medium sev
EUVD-2026-95116
GHSA-9ffp-22j7-56r2
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB