Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate or self-register
-
DeliveryUpload file and create record with traversal filename via file.createFile
-
ExploitTrigger document.parseFileContent to write payload outside tempDir
-
ExecutionOverwrite startServer.js / config / authorized_keys
-
PersistAwait app or container restart
-
ImpactExecute arbitrary code as app user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a LobeChat server-database deployment (not the lightweight client-only mode) and an authenticated user session (CVSS PR:L). The concrete trigger is: supplying an unsanitized filename containing '../' sequences to the file.createFile tRPC procedure (which stores it in the files.name DB column), then invoking document parsing (document.parseFileContent / DocumentService.parseFile), which passes file.name unsanitized into path.join() inside writeTempFile(). Exploitation is limited to files writable by the application user, and RCE specifically requires overwriting a file that is subsequently executed/loaded (e.g. startServer.js on container restart, a dynamically loaded Node module, or a cron/SSH file) - so code execution is not instantaneous and may depend on a restart or load event. Limiting factors: valid authentication is needed, though this is substantially weakened in multi-tenant deployments (any tenant user can reach RCE/DoS) and in deployments with self-registration enabled (attacker registers to obtain the required session). |
| Impact | This is a genuine high-priority issue, not an inflated high-CVSS score. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H) describes a network-reachable, low-complexity attack requiring only low privileges (PR:L = an authenticated user) with no user interaction and full compromise of confidentiality, integrity and availability - consistent with the described path-traversal arbitrary file write leading to RCE/DoS. The vuln.today decision label is 'this_week', reported by VulnCheck, which aligns with a serious but authentication-gated flaw rather than an emergency mass-exploitation event. No EPSS score and no CISA KEV status were provided, so there is no signal of confirmed active exploitation or statistically modeled exploitation probability; absence of these is not evidence of safety. A detailed public PoC (step-by-step HTTP requests plus a video) is published in the GitHub Security Advisory, which materially raises practical exploitability. The main mitigating factor is the PR:L authentication requirement, but the advisory notes this collapses in multi-tenant deployments (any user can reach RCE) and effectively disappears where self-registration is enabled (attacker registers, then exploits). Net: real priority for server-database LobeChat deployments, especially multi-tenant or open-registration ones. |
| Exploit ScenarioDerived | An authenticated user (or, where self-registration is enabled, an attacker who simply registers) uploads a file, then calls file.createFile with a filename set to a path-traversal payload such as '../../../../../../app/startServer.js' and triggers document parsing, causing writeTempFile() to overwrite that application file with attacker-controlled content; on the next container/app restart the malicious code executes, yielding RCE (or a permanent crash loop for DoS). A detailed public PoC including HTTP requests and a video demonstration is published in the GitHub Security Advisory, making this straightforward to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 02, 2026
Path traversal in LobeHub Chat (npm @lobehub/chat, versions 1.84.26 through 2.1.48) lets any authenticated user write arbitrary files with attacker-controlled content: the file.createFile tRPC procedure stores an unsanitized name containing '../' sequences in the files.name database column, and a later document-parse call feeds that value into path.join() inside writeTempFile(). Because the write primitive is unrestricted within the application user's permissions, an attacker can overwrite an executed file such as startServer.js and gain code execution after a container restart, or corrupt critical application files to cause persistent crash loops and denial of service; multi-tenant deployments are the highest risk since any tenant user reaches this path, and self-registration turns it into an effectively unauthenticated attack. A detailed public proof-of-concept, including a demonstration video, is published in the project's GitHub security advisory; the issue is not listed in CISA KEV and no confirmed active exploitation has been reported, and the vendor shipped a fix in 2.1.49.
RemediationAI
Vendor-released patch: LobeHub Chat 2.1.49 (npm @lobehub/chat); upgrade every deployment in the 1.84.26 through 2.1.48 range to 2.1.49 or later, per https://github.com/lobehub/lobehub/security/advisories/GHSA-2g9j-v25c-4j97. The advisory does not document a code-level workaround, so updating is the complete fix; note that a restart is part of the exploit chain the advisory demonstrates, so patch and restart containers rather than assuming a running instance is clean. Where an immediate upgrade is not possible, the exposure the advisory itself identifies can be narrowed: because any authenticated user can exploit this, deployments with self-registration enabled are effectively unauthenticated targets and should close open registration so only trusted accounts hold sessions, and multi-tenant operators should treat every tenant account as a potential RCE source until 2.1.49 is deployed. The trade-off is that disabling self-registration blocks legitimate new user signups and does not remove the flaw for existing accounts. Reviewing the files table for stored names containing '../' or absolute paths and confirming that application-critical files such as startServer.js have not been modified would help detect prior exploitation, though the advisory does not specify such a check as remediation.
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 CWE-22 (path traversal) arising from an unsanitized filename flowing into a filesystem API, with the advisory additionally classifying it as CWE-73 (external control of file name or path), CWE-94 (code injection through a written file that is later executed) and CWE-754. In src/server/utils/tempFileManager.ts, writeTempFile() computes the destination as join(this.tempDir, name) and immediately calls writeFileSync(); because path.join() normalizes '..' segments, a name such as ../../../../app/startServer.js escapes the temp directory entirely. The name value is not attacker-invented at write time but persisted earlier: the file.createFile tRPC procedure (src/server/routers/lambda/file.ts) copies input.name straight into the files.name column, so the malicious string survives in the database until it is consumed. The sink is reached through the document pipeline: DocumentService.parseFile() or parseDocument() (src/server/services/document/index.ts) calls FileService.downloadFileToLocal() (src/server/services/file/index.ts), which loads the file record, builds a TempFileManager and passes file.name into writeTempFile(). Only the write is performed by the traversal itself; code execution is second-order and requires the overwritten path to be executed or loaded afterwards, as the advisory illustrates with startServer.js and a container restart, and as it notes for dynamically loaded Node modules, cron entries, SSH authorized_keys, web-accessible directories and mounted host volumes. The write is bounded by the filesystem permissions of the application user, and the whole path is only present in server-database deployments, not lightweight client-only configurations.
Know when Lobehub 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:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network-reachable tRPC endpoints with low complexity; PR:L because an authenticated session is required; arbitrary file write yields full C/I/A impact via RCE/DoS, scope unchanged.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
LobeHub Chat from 1.84.26 before 2.1.49 contains a path traversal vulnerability that allows authenticated users to write arbitrary files by supplying unsanitized file names to writeTempFile(). Attackers can create a file record via file.createFile with a traversal name, then trigger document parsing to overwrite application files like startServer.js for code execution or denial of service.
Technical POC Analysis
CWE-22 (Improper Limitation of a Pathname to a Restricted Directory).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-120315 is a high-severity path traversal vulnerability in LobeHub Chat (npm @lobehub/chat versions 1.84.26 through 2.1.48) that allows any authenticated user-and in self-registration deployments, effectively any user-to write arbitrary files and potentially achieve code execution or cause persistent denial of service. Multi-tenant environments are at highest risk, and leadership should prioritize remediation because a public proof-of-concept (including a demonstration video) is already available, enabling rapid exploitation by malicious actors.
Disable self-registration; restrict file system permissions; implement strict input validation on file names; monitor for anomalous file writes; network segmentation to limit exposure.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Lobe Chat is a chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system.
Lobe Chat is an open-source artificial intelligence chat framework. Rated high severity (CVSS 8.8), this vulnerability i
Lobe Chat is an open-source, AI chat framework. Rated high severity (CVSS 8.6), this vulnerability is remotely exploitab
Server-side request forgery in LobeChat before 2.2.10-canary.18 lets authenticated users coerce the server into issuing
Denial of service in LobeChat before 2.2.10-canary.15 lets an authenticated user hang the entire Node.js server by impor
Cross-user data disclosure in LobeChat through version 2.2.9 allows any authenticated user to read other users' document
Lobe Chat is an open-source LLMs/AI chat framework. Rated medium severity (CVSS 5.7), this vulnerability is remotely exp
Lobe Chat is a chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system.
Lobe Chat is an open-source artificial intelligence chat framework. Rated medium severity (CVSS 4.3), this vulnerability
Stored XSS in lobehub/lobe-chat through v2.2.13 allows a low-privileged authenticated user to persist malicious JavaScri
Webhook signature verification bypass in LobeChat 2.2.1 allows unauthenticated remote attackers to inject forged inbound
Broken object level authorization in LobeChat through version 2.2.9 permits authenticated users to read and manipulate c
EUVD-2026-115004
GHSA-7925-2fm7-xg83
NVD
CVE.org
EPSS
Exploit-DB