Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend fingerprint header to obtain visitor JWT
-
ExploitCall querySingleChat with sequential chatId
-
ImpactHarvest other users' chat messages and task data
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 that the 99AI instance (≤ 4.3.0) exposes the chatLog querySingleChat API and the visitor-login/fingerprint JWT mechanism, both of which are default behavior - the attacker sends a fingerprint header to be issued a visitor JWT and then iterates sequential integer chatId values. No authentication, user interaction, or non-default configuration is required. The only practical limiting factor is that chatId values are sequential and therefore guessable/enumerable, and exposure is confined to chat message and task content (read-only); no write, admin, or system-level access is granted. |
| Impact | The source-provided CVSS 4.0 vector scores 6.9 (Medium): AV:N/AC:L/AT:N/PR:N/UI:N means a remote, unauthenticated, low-complexity attack with no user interaction, which makes exploitation trivial and reliable. However, impact is deliberately bounded - VC:L with VI:N/VA:N and SC/SI/SA:N - so the only consequence is limited disclosure of other users' chat message and task content, with no integrity, availability, or scope impact. These signals are consistent rather than conflicting: easy to exploit, modest impact. No EPSS score is present in the input, so real-world exploitation probability is unknown and cannot be asserted; the CVE is not listed in CISA KEV, so there is no confirmed active exploitation. A detailed public technical writeup (hackmd) and direct links to the vulnerable source code are provided, meaning the exploitation method is publicly documented and easily reproducible. SSVC decision data (exploitation/automatable/technical impact) was not supplied and cannot be synthesized. Net: this is a credible, easy-to-exploit confidentiality issue but not a catastrophic RCE/takeover; priority should be driven by whether 99AI is deployed with sensitive chat data, tempered by the product's limited deployment footprint. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a crafted fingerprint header to the application to mint a low-privilege 'visitor' JWT, then calls the querySingleChat API repeatedly while incrementing a sequential chatId value. Because querySingleChat performs no owner check, each request returns another user's chat messages and associated task data, letting the attacker harvest conversation content at scale. A public technical writeup documenting this exact unauthenticated export and IDOR chain exists, so the technique is reproducible without original research. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
99AI through version 4.3.0 allows unauthenticated attackers to read other users' private chat messages and task data, because the querySingleChat handler in the chatLog service performs no ownership check on the requested chat identifier. A remote attacker simply supplies a fingerprint header to be issued a low-privilege visitor JWT, then enumerates sequential integer chatId values to harvest message content belonging to other users. The source CVSS 4.0 vector rates this 6.9 (Medium) with PR:N/UI:N and low confidentiality impact, and our independent assessment agrees it is trivially and reliably exploitable, though it is read-only, grants no write or administrative access, and is not confirmed actively exploited (no CISA KEV listing) or accompanied by packaged exploit code; a public technical writeup describing the attack path is referenced.
RemediationAI
No vendor-released patch was identified at time of analysis, so until upstream issues a fixed release (monitor https://github.com/vastxie/99AI and the advisory at https://www.vulncheck.com/advisories/99ai-through-4.3.0-idor-via-api-chatlog-querysinglechat-chat-message-disclosure) operators must rely on compensating controls. The most direct fix is code-level: add an explicit owner check to querySingleChat so it verifies the caller's user identity against the chat record's owner before returning data, per the referenced source at service/src/modules/chatLog/chatLog.service.ts#L463-L475, and enforce it centrally rather than per-endpoint; the trade-off is that this requires maintaining a local fork. Second, convert chatId from sequential integers to unguessable UUIDs or add a per-record random token, which defeats enumeration but does not fix the missing authorization check and requires a data migration. Third, if visitor access is not essential, disable the fingerprint-based visitor JWT issuance in jwtAuth.guard.ts (or reject visitor principals on chat-log routes) so that only fully authenticated users can call the API; the trade-off is loss of anonymous/guest chat functionality. Fourth, apply rate limiting and anomaly detection to the chatLog endpoints to slow bulk chatId enumeration, and restrict network access to those endpoints via reverse-proxy allowlists or authenticated API gateways where the deployment permits, recognizing that these only reduce exposure rather than eliminate the flaw. Finally, because the disclosed data is other users' chat message and task content, treat any pre-patch deployment as potentially compromised: rotate signing keys for the visitor JWT mechanism, review access logs for sequential chatId sweeps, and notify affected users as required by applicable privacy obligations.
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 flaw is a classic insecure direct object reference (CWE-639) in 99AI, an open-source AI chat application maintained by vastxie (CPE cpe:2.3:a:vastxie:99ai:*:*:*:*:*:*:*:*, indicating all versions up to and including 4.3.0). The product ships a visitor-login mechanism in which the application issues a JWT based on a client-supplied fingerprint header; the authentication guard (service/src/common/auth/jwtAuth.guard.ts at tag v4.3.0) accepts this visitor token, so any remote client can obtain a legitimate but unprivileged session without credentials. The vulnerable endpoint is the chat-log API's querySingleChat function (service/src/modules/chatLog/chatLog.service.ts, lines 463-475 at v4.3.0), which retrieves a chat record by its numeric chatId but never verifies that the authenticated principal owns that record. Because chatId values are sequential integers rather than opaque UUIDs, an attacker with any valid visitor token can walk the identifier space and retrieve the message content and associated task data of arbitrary users. The root cause is therefore twofold: trust of a spoofable fingerprint header for identity issuance, and authorization logic that relies on object references being unguessable rather than enforcing an explicit owner check.
Know when 99Ai 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:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Unauthenticated network access via an auto-issued visitor JWT (PR:N, AC:L) with read-only disclosure of other users' chat data only, so C:L and I:N/A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
99AI through 4.3.0 contains an insecure direct object reference vulnerability that allows unauthenticated attackers to read other users' chat messages because querySingleChat lacks an owner check. Attackers can send a fingerprint header to obtain a visitor JWT and iterate sequential chatId values to retrieve other users' message content and task data.
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.
EUVD-2026-102999
GHSA-ghmq-xxc8-j8m5
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB