Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged tenant user
-
ExploitEnumerate small integer tenant IDs
-
ExecutionCall queryTenantAuthInfo without ownership check
-
ImpactHarvest cross-tenant sys_tenant records and join codes
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires (1) a valid authenticated account on the target JeecgBoot instance - PR:L, any low-privileged tenant user suffices, no admin needed; (2) a multi-tenant deployment where multiple tenants' sys_tenant records exist to be enumerated; and (3) reachability of the SysTenantController queryTenantAuthInfo endpoint over the network. The specific trigger is that the queryTenantAuthInfo handler performs no ownership/authorization check, so supplying another tenant's small integer ID returns that tenant's record. Limiting factors: authentication is mandatory (not unauthenticated), impact is confined to reading tenant join codes and company-profile fields (no write/integrity or availability impact), and value is low for single-tenant installations where there are no other tenants to enumerate. |
| Impact | This is a moderate, access-control (CWE-862) information-disclosure issue, not a high-urgency flaw. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) with only low confidentiality impact (VC:L) and no integrity/availability impact yields a MEDIUM 5.3 - consistent with the description: a low-privileged but authenticated user reads other tenants' sys_tenant records. Publicly available exploit code exists (a GitHub POC and a VulnCheck advisory are referenced), which raises real-world likelihood of opportunistic abuse, but the vulnerability is NOT in CISA KEV and no active exploitation is claimed, so this is 'publicly available exploit code exists' rather than confirmed in-the-wild use. No EPSS score and no SSVC decision data were provided in the input, so automatability and exploitation-trend signals cannot be compared - this limits precision of the risk estimate. The requirement for valid authentication (PR:L) is the key mitigating factor that keeps this out of critical territory: the attacker must already have a tenant account. Bottom line: a legitimate priority for multi-tenant JeecgBoot deployments because exploitation is trivial (AC:L, simple integer-ID iteration) and POC is public, but the impact is bounded to disclosure of tenant join codes and company-profile fields, not system compromise. |
| Exploit ScenarioDerived | An attacker who holds any low-privileged tenant account on a JeecgBoot instance repeatedly calls the SysTenantController queryTenantAuthInfo endpoint, incrementing small integer tenant IDs. Because the handler performs no ownership/authorization check, the attacker harvests other tenants' full sys_tenant records - including house numbers used as tenant join codes and company profile data. A public POC (poc_tenant_ownership_and_pack_approval.py) demonstrating this is already available on GitHub. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Missing authorization in JeecgBoot's SysTenantController queryTenantAuthInfo handler (all versions through 3.9.5) allows any authenticated, low-privileged user to enumerate small integer tenant IDs and read other tenants' full sys_tenant records, including house numbers used as tenant join codes and company profile fields. Exploitation requires a valid authenticated account (CVSS vector PR:L) on a multi-tenant deployment where other tenants' records exist; publicly available exploit code exists, but there is no confirmation of active exploitation. The impact is limited to read-only information disclosure (CVSS 5.3, assessed as C:L/I:N/A:N), making this a moderate access-control issue rather than a high-urgency flaw.
RemediationAI
No vendor-released patch was identified at time of analysis. Until a fix version is published, apply compensating controls: enforce an authorization check on the queryTenantAuthInfo handler so a caller can only retrieve their own tenant's record (or restrict the endpoint to administrator-level roles) via Spring Security configuration, or temporarily disable/remove the queryTenantAuthInfo mapping if the tenant join-code lookup feature is not business-critical. Restrict network access to the SysTenantController endpoints to trusted management networks or require additional authentication controls, recognizing that this reduces functionality for legitimate tenant onboarding. Additionally, monitor application logs and reverse-proxy access logs for sequential or high-volume requests to queryTenantAuthInfo as a detection measure for tenant enumeration; note that blocking the endpoint will break any legitimate tenant-join-code lookup UI that depends on it. Track the vendor repository at https://github.com/jeecgboot/JeecgBoot for a patched release and the VulnCheck advisory at https://www.vulncheck.com/advisories/jeecgboot-through-3.9.5-missing-authorization-via-sys-tenant-querytenantauthinfo for updates.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
JeecgBoot is a Java-based low-code development platform built on Spring Boot, Spring MVC and MyBatis, with a built-in multi-tenant architecture where the sys_tenant table stores each tenant's master record, including a 'house number' join code used for tenant onboarding and company profile fields. CVE-2026-108658 is a CWE-862 Missing Authorization flaw: the queryTenantAuthInfo handler in jeecg-module-system's SysTenantController.java (referenced lines 870-874 in the vendor repository) performs no ownership, role or tenant-scope check, directly querying the sys_tenant table by the caller-supplied tenant ID without verifying that it matches the requester's own tenant. Because tenant IDs are small sequential integers, an authenticated attacker can iterate them to harvest every tenant's join code and profile data. The CPE cpe:2.3:a:jeecgboot:jeecgboot:*:*:*:*:*:*:*:* indicates the wildcard covers all JeecgBoot releases up to and including 3.9.5.
Know when Jeecgboot 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable endpoint (AV:N) trivially abused by ID iteration (AC:L) but requires a valid low-privileged account (PR:L); only limited tenant data disclosed, so C:L and I/A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
JeecgBoot through 3.9.5 contains a missing authorization vulnerability in the SysTenantController queryTenantAuthInfo handler that allows any authenticated user to read other tenants' records. Low-privileged attackers can iterate small integer tenant ids to retrieve full sys_tenant records, including house numbers used as tenant join codes and company profile fields.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Unauthenticated report data exfiltration in JimuReport (JeecgBoot) through version 2.5.0 lets remote attackers export th
Broken access control in JeecgBoot through 3.9.2 lets authenticated low-privilege users reach the OpenApiAuthController
Privilege escalation in JeecgBoot through 3.9.5 lets any authenticated user approve their own pending tenant administrat
Missing authorization in the saveDeptRolePermission endpoint of JeecgBoot's SysDepartPermissionController lets any authe
SQL injection vulnerability in Beijing Guoju Information Technology Co., Ltd JeecgBoot v.3.7.2 allows a remote attacker
JeecgBoot up to v 3.5.1 was discovered to contain a SQL injection vulnerability via the component queryFilterTableDictIn
JeecgBoot up to v 3.5.1 was discovered to contain a SQL injection vulnerability via the component queryTableDictItemsByC
JeecgBoot through 3.9.5 ships a system log controller whose batch-delete handler performs no authorization check, so any
Database credential disclosure in JeecgBoot through 3.9.5 allows any authenticated low-privileged user to retrieve JDBC
Missing authorization in JeecgBoot through 3.9.5 lets any authenticated user enumerate record IDs through the unguarded
Authenticated low-privileged users of JeecgBoot through 3.9.5 can retrieve any other user's stored password ciphertext t
Authenticated users of any privilege level on JeecgBoot through 3.9.5 can rewrite DingTalk, WeCom, or Feishu third-party
EUVD-2026-96597
GHSA-rghv-h578-vgg2
NVD
CVE.org
EPSS
Exploit-DB