Skip to main content

JHipster Generator CVE-2026-107375

| EUVDEUVD-2026-95130 HIGH
SQL Injection (CWE-89)
2026-10-08 GitHub_M GHSA-r223-96jv-q533
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register or log in as low-privileged user
  2. Delivery
    Send crafted sort parameter to entity-list endpoint
  3. Exploit
    Inject unquoted property into ORDER BY clause
  4. Execution
    Execute stacked SQL via R2DBC simple query protocol
  5. Impact
    Read password hashes or drop tables

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitable only when the JHipster-generated application is a reactive stack built with Spring WebFlux, Spring Data R2DBC, and a SQL database (reproduced on H2 and PostgreSQL 16); the attacker must reach a paginated entity-list endpoint (GET /api/<entity>?sort=...) and hold an authenticated account, though the default self-registration flow lets a low-privileged account be self-provisioned. Limiting factors: non-reactive Spring Data JPA applications are NOT affected because JPA validates sort property names against the entity metamodel, and NoSQL backends are outside the root cause; exploitation therefore depends specifically on the reactive R2DBC code path generated by versions 7.0.0 up to 9.4.0.

Impact

Multiple signals point to a genuine priority rather than an inflated CVSS score. The CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, 8.8) indicates a network-reachable, low-complexity flaw requiring only low privileges and no user interaction, with full confidentiality/integrity/availability impact - consistent with CWE-89 SQL injection that permits stacked statements via the R2DBC simple query protocol. The GHSA advisory confirms the authenticated-user requirement is weak because the default JHipster self-registration flow lets an attacker provision their own low-privilege account, effectively lowering the barrier toward unauthenticated-equivalent exposure for any app with registration enabled. The advisory also reports the issue was independently reproduced end-to-end on both the default dev database (H2) and default production database (PostgreSQL 16), strengthening confidence that exploitation is practical, not theoretical. Countervailing/missing signals: no EPSS score was provided, so statistical exploitation probability cannot be stated; there is no CISA KEV listing, so this is not confirmed as actively exploited; and no standalone public exploit tool is referenced - though the advisory publishes the vulnerable code path and payload mechanics in enough detail to materially aid exploit development. Net: treat as a high-priority patch item for any team running JHipster-generated reactive (WebFlux + R2DBC + SQL) applications, while recognizing the scope limitation that non-reactive JPA and NoSQL deployments are not affected.

Exploit ScenarioDerived

An attacker registers a normal low-privileged account (or uses an existing one) on a JHipster-generated reactive WebFlux/R2DBC application, then issues a GET request to a paginated entity-list endpoint such as /api/<entity> with a crafted sort parameter. Because the value is concatenated unquoted into the ORDER BY clause and run over the R2DBC simple query protocol, the attacker appends semicolon-separated statements to dump the jhi_user password-hash table, alter/delete rows, or drop tables. No public exploit tool is identified, but the advisory documents the vulnerable template and injection mechanics in reproducible detail.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 08, 2026

SQL injection in the generated reactive entity-list endpoints of JHipster-produced applications (generator-jhipster versions 7.0.0 up to, but not including, 9.4.0) lets an authenticated user inject arbitrary SQL through the attacker-controlled sort request parameter on GET /api/<entity>?sort=... endpoints. Because the generated R2DBC code passes the sort property into the SQL ORDER BY clause unvalidated and unquoted, and the driver runs it over the simple query protocol, semicolon-separated statements are executed as well - enabling reads of sensitive tables such as jhi_user password hashes, modification or deletion of data, and table drops (CVSS 3.1 8.8, AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H). Exploitation requires the app to be the reactive WebFlux + Spring Data R2DBC + SQL stack, and an account is needed, though the default self-registration flow lets a low-privileged one be self-provisioned; the vendor-released fix is version 9.4.0, and no public exploit code or confirmed active exploitation was identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade the generator-jhipster package to 9.4.0 (released as tag v9.4.0) or later, per the advisory at https://github.com/jhipster/generator-jhipster/security/advisories/GHSA-r223-96jv-q533; the fix commit is f6f1579581da8db0d1b8bd28dd473b56951c83af. Upgrading the generator alone does not repair already-deployed services - regenerating or re-scaffolding the affected reactive projects is required so the corrected EntityManager_reactive.java is emitted, and regeneration can overwrite local customizations, so the regenerated diff should be reviewed and merged rather than applied blindly. For teams that cannot regenerate promptly, the equivalent manual fix is to replace the direct use of order.getProperty() in createOrderByFields with a strict allow-list check that the requested sort property exactly matches a known entity column/field name (rejecting any value containing ., ;, whitespace, quotes, or other SQL metacharacters) before it is rendered as an identifier, and to rebuild/redeploy the affected services. Attacker reachability can be reduced in the interim by requiring authentication on all paginated list endpoints and disabling the default self-registration flow so low-privileged accounts cannot be self-provisioned, though note this is a compensating control with a real trade-off: it removes self-service onboarding and does not close the injection for existing legitimate users. Because the simple query protocol permits stacked statements, ensure the R2DBC connection is not granted DDL/DROP privileges and that the application database user is scoped to the minimum required tables.

Affected VersionsENISA

generator-jhipster 7.0.0, < 9.4.0

Affected Packages

npm generator-jhipster fix: 9.4.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-89 (Improper Neutralization of Special Elements used in an SQL Command) located in the generator template generators/spring-boot/generators/data-relational/templates/src/main/java/package/repository/EntityManager_reactive.java.ejs, specifically the createOrderByFields(Table table, Sort sortToUse) helper. That code iterates Sort.Order objects taken directly from the HTTP sort query parameter and renders order.getProperty() as an unquoted SqlIdentifier via the R2DBC SQL renderer (SqlRenderer.create(...)), rather than binding it as a parameter or validating it against the entity metamodel. Two properties make the impact severe: identifiers cannot be parameterized in an ORDER BY clause, so the value is concatenated, and the generated query uses the R2DBC simple query protocol rather than an extended/prepared protocol, which permits stacked statements separated by semicolons. The affected technology stack is the JHipster reactive profile - Spring WebFlux for the web layer, Spring Data R2DBC for persistence, and an SQL database (reproduced on H2 in dev and PostgreSQL 16 in production). The CPE cpe:2.3:a:jhipster:generator-jhipster:*:*:*:*:*:*:*:* identifies the npm package generator-jhipster as the vulnerable component, but the exploitable code lives in the applications it generates, so downstream users who generated and deployed an app in the affected version range inherit the flaw even if they never upgrade the generator itself. The non-reactive Spring Data JPA code path is immune because Spring Data JPA validates sort property names against the entity metamodel, and NoSQL backends fall outside this root cause entirely; remediation of previously generated projects therefore requires regenerating or manually patching the emitted repository code, not merely updating the CLI.

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

Vendor (GitHub_M) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Network endpoint, trivial crafted sort value (AC:L), requires only a low-privilege (often self-registered) account (PR:L), no user interaction, and stacked SQL yields full C/I/A.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 08, 2026 - 19:18 EUVD
CVE Published
Oct 08, 2026 - 17:36 cve.org
HIGH 8.8

DescriptionCVE.org

JHipster is a development platform to quickly generate, develop, and deploy modern web applications and microservice architectures. From 7.0.0 until 9.4.0, reactive applications generated with Spring WebFlux, Spring Data R2DBC, and a SQL database pass the attacker-controlled sort request parameter from paginated entity-list endpoints into createOrderByFields in generators/spring-boot/generators/data-relational/templates/src/main/java/package/repository/EntityManager_reactive.java.ejs. The generated code renders these properties into the SQL ORDER BY clause without validation or quoting, and the R2DBC simple query protocol can execute additional statements separated by semicolons. A normal authenticated user can consequently read sensitive tables, modify or delete data, or drop tables, while non-reactive JPA applications and NoSQL backends are outside this root cause. This issue is fixed in 9.4.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 4 npm packages depend on generator-jhipster (4 direct, 0 indirect)

Ecosystem-wide dependent count for version 7.0.0.

Technical POC Analysis

CWE-89.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Applications generated by JHipster 7.0.0 through 9.3.x and running on the reactive WebFlux + Spring Data R2DBC + SQL stack contain a SQL injection flaw that allows any authenticated user - including one self-provisioned through the default registration flow - to read, alter, or destroy data, including the user table that stores password hashes. Because this is generated boilerplate replicated across every service built with the affected generator versions, the exposure is potentially organization-wide and directly threatens credential integrity and customer or employee data. Leadership should treat this as a high-priority inventory-and-remediation program, not a single-application patch.

Business Impact: High
Compensating Controls

Apply vendor patch: generator-jhipster 9.4.0 is the vendor-released fix, but it only corrects newly generated code - existing deployments must be regenerated or manually patched. Until then, enforce an allow-list validation of the sort parameter in the generated endpoints, block semicolons and SQL metacharacters in sort via WAF or gateway rules, restrict or disable self-registration to limit attacker-provisioned low-privileged accounts, constrain database account privileges used by the R2DBC connection, and monitor for anomalous multi-statement queries.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Medium
popular Java app generator, but only reactive WebFlux+R2DBC generated apps affected
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy