Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged user
-
ExploitEnumerate victim record ids via listByUser
-
ExecutionSend DELETE with arbitrary victim userId
-
ImpactErase victim voice records from Redis
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Requires a valid authenticated JeecgBoot account of any privilege level (CVSS PR:L) with access to the AiRAG voice feature; exploitation targets the DELETE /airag/voice/deleteVoiceRecord endpoint, which trusts an attacker-supplied userId instead of the session identity, combined with the GET /airag/voice/listByUser endpoint that returns record ids without an ownership check. No user interaction or non-default configuration is needed beyond the AI voice/text-to-speech feature being in use with records stored in Redis. Limiting factors: an authenticated account is mandatory (not remote-unauthenticated), impact is confined to deletion of other users' voice history one record per request, and there is no confidentiality or availability compromise of the host system. |
| Impact | This is a genuine-but-low-priority authorization flaw. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) scores 5.3 (medium), and the signals are internally consistent: network-reachable, low complexity, but requires an authenticated low-privileged account (PR:L) and yields only limited integrity impact (VI:L) with no confidentiality or availability impact (VC:N/VA:N). The CWE-639 IDOR matches the description exactly. Publicly available POC code exists (AnkesKasty cve-request-poc) and the issue was reported by VulnCheck, but the CVE is NOT in CISA KEV and no EPSS score was provided in the input, so there is no evidence of active exploitation or widespread automated targeting - POC availability and active exploitation are distinct signals and only the former is present here. The real-world impact ceiling is modest: an attacker can delete other users' text-to-speech history entries from Redis one record per request - annoyance/data-tampering, not account takeover, RCE, or data exfiltration. Net: a legitimate bug worth patching but not an emergency; treat as routine remediation unless JeecgBoot is internet-exposed with untrusted authenticated users. |
| Exploit ScenarioDerived | A low-privileged authenticated JeecgBoot user calls the unchecked GET /airag/voice/listByUser endpoint to harvest record ids belonging to other users, then issues DELETE /airag/voice/deleteVoiceRecord requests supplying an arbitrary victim userId to erase their AI voice/text-to-speech history from Redis. A working Python POC is publicly available, and because the flaw is network-reachable with low attack complexity, each request deletes one victim record. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Authenticated JeecgBoot users running version 3.9.5 or earlier can delete other users' stored AI voice (text-to-speech) history by passing an arbitrary userId to the DELETE /airag/voice/deleteVoiceRecord endpoint, which trusts the client-supplied identifier instead of the caller's session identity. Victims' record IDs are easily enumerated from the ownership-unchecked GET /airag/voice/listByUser endpoint, and deletion proceeds one record per request against history held in Redis; a publicly available exploit script is referenced in the VulnCheck advisory. Impact is limited to unauthorized modification (loss) of voice records with no confidentiality or host availability impact, there is no CISA KEV listing, and any valid authenticated account, regardless of privilege level, is sufficient to exploit the flaw.
RemediationAI
No vendor-released patch was identified at time of analysis, so the primary action is to upgrade to the first JeecgBoot release after 3.9.5 once the maintainers publish a fix that derives the userId from the authenticated session rather than the request body. Where immediate upgrade is not possible, apply a code-level fix in VoiceController.java (lambdas around lines 83-90) so deleteVoiceRecord and listByUser resolve the current login user via the authenticated subject and reject any request whose target userId differs from the session identity; this is the only mitigation that fully closes the flaw, but it requires maintaining a forked build. As compensating controls with explicit trade-offs: restrict the /airag/voice/* endpoints at the gateway, reverse proxy, or Spring Security filter chain to highly trusted roles - this reduces the attacker pool but does not fix the underlying IDOR for legitimate users; disable the AI voice/text-to-speech module entirely if the feature is unused, which eliminates exposure at the cost of losing that functionality; and rotate or clear the Redis voice-record keyspace if you have evidence of abuse, accepting that this destroys all users' TTS history. Monitor JeecgBoot's repository and the VulnCheck advisory at https://www.vulncheck.com/advisories/jeecgboot-through-3.9.5-idor-via-deletevoicerecord-userid-parameter for an official patched version before assuming the issue is resolved.
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
The issue is an insecure direct object reference / authorization bypass through a user-controlled key (CWE-639) in the AiRAG module of JeecgBoot, a Java/Spring Boot low-code development platform. The vulnerable logic lives in jeecg-boot-module-airag, in VoiceController.java around lines 83-90, where the delete handler accepts the userId (and record identifiers) from the request rather than deriving the owner from the authenticated subject, and the companion listByUser handler returns record metadata without verifying that the records belong to the caller. Because the AI voice feature persists text-to-speech history entries in Redis, the controller operations map to simple cache-key lookups and deletions, so the missing ownership check yields a direct, low-complexity write operation on another tenant's/user's data. The CPE string cpe:2.3:a:jeecgboot:jeecgboot:*:*:*:*:*:*:*:* confirms that all released JeecgBoot versions up to and including 3.9.5 are affected. The assessed vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N) reflects network reachability with low attack complexity, but requires an authenticated account (PR:L) and yields only limited integrity impact - no confidentiality loss and no degradation of the underlying host.
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:N/VI:L/VA:N/SC:N/SI:N/SA:N
Network-reachable endpoint with low complexity and no user interaction, but requires an authenticated account (PR:L); only cross-user data deletion gives limited integrity impact (I:L), with no confidentiality or system-availability loss.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
JeecgBoot through 3.9.5 contains an insecure direct object reference vulnerability that allows authenticated users to delete other users' AI voice records by supplying an arbitrary userId to DELETE /airag/voice/deleteVoiceRecord. Attackers can obtain record ids from the unchecked GET /airag/voice/listByUser endpoint and delete victims' text-to-speech history entries stored in Redis, one per request.
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-96547
GHSA-c23h-4967-rhxw
NVD
CVE.org
EPSS
Exploit-DB