Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user
-
DeliverySend JSON-RPC with X-Requested-With header
-
ExploitCall createApiKeyWithProjects with admin role
-
ExecutionInteractive administrator account created
-
ImpactFull application compromise via plugin install
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
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 an authenticated low-privilege Leantime session (PR:L) and that the request carry the X-Requested-With: XMLHttpRequest header, which the JSON-RPC dispatcher in app/Domain/Api/Controllers/Jsonrpc.php requires to reach the public API service methods. The specific vulnerable methods are leantime.rpc.api.api.createApiKeyWithProjects (reaching Api::createApiKeyWithProjects, accepting an attacker-chosen role) and Plugins::installPlugin/enablePlugin/disablePlugin/removePlugin, all of which lacked a RequiresPermission attribute so PermissionEnforcer::enforce permitted them. The limiting factors are that a valid account is needed first (no unauthenticated path) and that installs must be on a version prior to 3.10.0; exposure is widened when open/self-service user registration is enabled, since that lowers the bar to obtaining the required low-privilege session. |
| Impact | This is a genuine priority for any organization running Leantime, not a high-CVSS-but-low-real-risk issue. The CVSS vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N) is internally consistent with the description: a network-reachable JSON-RPC endpoint, trivially low attack complexity (a single crafted request with an X-Requested-With header), and only a low-privilege authenticated session required. The C:H/I:H/A:H impact is well-justified because the flaw lets an ordinary user mint an interactive administrator account, which is effectively full compromise of the application. No EPSS score was provided in the input, so exploitation probability cannot be quantified. There is no CISA KEV listing and no POC flag in the data, so the status is no public exploit identified at time of analysis. The main risk-amplifying factors are the low barrier (any authenticated user, including self-registered accounts where open registration is enabled) and the vendor-confirmed root cause (missing per-method authorization in PermissionEnforcer::enforce). The main mitigating factor is that an authenticated session is required first - this is privilege escalation, not pre-auth RCE. No signals are conflicting; the primary data gap is the absence of EPSS and any independent telemetry on real-world exploitation. |
| Exploit ScenarioDerived | A low-privilege Leantime user (or an attacker who registered or phished any ordinary account) sends a single JSON-RPC request to leantime.rpc.api.api.createApiKeyWithProjects with the X-Requested-With: XMLHttpRequest header and an attacker-chosen administrator role, creating a new interactive admin account under their control. The same missing authorization also lets them invoke Plugins::installPlugin/enablePlugin to load plugin code. No public exploit is identified at time of analysis, though the fixing commits and PRs are public and make the mechanism easy to reconstruct. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Privilege escalation in Leantime prior to 3.10.0 allows an authenticated low-privilege user to create a full administrator account, or to install, enable, disable and remove plugins, by calling methods exposed through the application's JSON-RPC dispatcher. Any user holding a valid ordinary browser session can trigger this by sending the required X-Requested-With: XMLHttpRequest header and invoking leantime.rpc.api.api.createApiKeyWithProjects with an attacker-chosen role, because PermissionEnforcer::enforce treats API service methods that lack a RequiresPermission attribute as public; exposure widens significantly on installations where open or self-service registration is enabled, since obtaining the prerequisite low-privilege session becomes trivial. There is no public exploit identified at time of analysis and the issue is not listed in CISA KEV, but the CVSS 3.1 score of 8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) reflects complete compromise of confidentiality, integrity and availability once the privilege boundary is crossed, and the vendor has shipped a fix in version 3.10.0.
RemediationAI
Vendor-released patch: upgrade to Leantime 3.10.0 or later (release tag v3.10.0), which is the version in which the complete provisionally grouped issue is fixed; see the vendor advisory GHSA-54mm-6729-r5wp and the upstream pull requests 3583 and 3797. Applying the update runs database migration 30519, which grants the new plugins.manage capability to the admin and owner roles only while preserving any custom role edits, so plugin management remains usable by administrators after patching. If immediate upgrade is not possible, the most effective compensating control is to eliminate the prerequisite low-privilege session at scale by disabling open/self-service user registration and disabling any guest or shared self-signup access, accepting the trade-off that this blocks legitimate new-user onboarding; where registration must stay open, restrict the Leantime instance to trusted networks or place it behind an authenticated reverse proxy, understanding that this still leaves insider and already-provisioned low-privilege accounts able to escalate. A WAF or reverse-proxy rule that blocks or logs POST requests to the JSON-RPC endpoint containing the method names leantime.rpc.api.api.createApiKeyWithProjects and leantime.rpc.plugins.plugins.installPlugin, enablePlugin, disablePlugin or removePlugin will cut off the known invocation paths, at the cost of breaking any legitimate API integrations that use those method names and the residual risk that unspecified unannotated methods remain reachable. Because exploitation mints an administrator account, also review existing user and API-key records for unexpected admin-privileged accounts or API keys created before the patch and rotate or revoke anything suspicious, and note there is no vendor-released mitigation other than upgrading to 3.10.0.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Leantime is a PHP-based open source project management system that exposes internal service classes as remotely callable JSON-RPC methods through app/Domain/Api/Controllers/Jsonrpc.php. Authorization in this build is attribute-driven: a service method is only protected if it carries a #[RequiresPermission(...)] attribute, and PermissionEnforcer::enforce in the dispatcher deliberately permits any method that has no such attribute. The affected version therefore shipped an unguarded default-allow path in which the public API surface for account/API-key creation and plugin management had no per-method permission annotations. The vulnerability class is CWE-269 (Improper Privilege Management): the application fails to assign, track or enforce the privilege level required for security-sensitive operations rather than mishandling a credential or input. The fix introduces a new company-wide capability vocabulary, PluginsPermissions::MANAGE ('plugins.manage', projectScoped = false), applied via #[RequiresPermission(PluginsPermissions::MANAGE, global: true)] on Plugins::installPlugin, enablePlugin, disablePlugin, removePlugin and related handlers, plus a database migration (30519) that grants the new capability to the admin and owner roles so existing installs are not locked out. The accompanying PR also adds a positive allowlist, MARKETPLACE_INSTALL_PROPS, which deliberately excludes the security-sensitive 'type' and 'marketplaceUrl' fields so they can no longer be mass-assigned from client-controlled input during a marketplace install. The prerequisite X-Requested-With: XMLHttpRequest header is simply the dispatcher's request-shape requirement and is trivially supplied by any scripted client, so it provides no meaningful protection.
Know when Leantime 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network JSON-RPC endpoint (AV:N), single crafted request (AC:L), requires a low-privilege session (PR:L) with no user interaction; escalation to admin yields full C/I/A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Leantime is an open source project management system. Prior to 3.10.0, for the provisionally grouped account-creation and plugin-management surfaces, Leantime's JSON-RPC dispatcher in app/Domain/Api/Controllers/Jsonrpc.php exposes public API service methods, while PermissionEnforcer::enforce allows methods that lack a RequiresPermission attribute. A low-privilege authenticated user with an ordinary browser session can send the required X-Requested-With: XMLHttpRequest header and call leantime.rpc.api.api.createApiKeyWithProjects, which reaches Api::createApiKeyWithProjects, with an attacker-chosen role to create an interactive administrator account. The same missing per-method authorization exposes Plugins::installPlugin, Plugins::enablePlugin, Plugins::disablePlugin, and Plugins::removePlugin to ordinary authenticated users, permitting unauthorized plugin management. The complete provisionally grouped issue is fixed in version 3.10.0.
Technical POC Analysis
CWE-269 (Improper Privilege Management), with CWE-862 (Missing Authorization) assigned by the advisory.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Leantime project management installations running versions prior to 3.10.0 allow any user with an ordinary, low-privilege browser session to grant themselves full administrator rights, including the ability to install or remove plugins. This effectively hands over complete control of the application and any project, financial, or credential data it holds, and the risk is materially higher for organizations that permit open or self-service account registration, since an attacker can obtain the prerequisite account without any insider access. Leadership should treat this as a priority remediation item for every affected deployment, internal or externally exposed.
Apply vendor patch.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Leantime 3.0.6 is vulnerable to Cross Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is
Cross-site request forgery in Leantime 3.6.2 lets a remote unauthenticated attacker execute state-changing actions in th
Server-side request forgery and local file inclusion in Leantime 3.6.2 lets authenticated attackers coerce the server in
Cross Site Scripting vulnerability in Leantime v3.0.6 allows attackers to execute arbitrary code via upload of crafted P
Leantime is an open source project management system. Rated medium severity (CVSS 6.5), this vulnerability is remotely e
In Leantime 3.0.6, a Cross-Site Scripting vulnerability exists within the ticket creation and modification functionality
Cross Site Scripting vulnerability in Leantime 3.0.6 allows a remote attacker to execute arbitrary code via the to-do ti
Open redirect in Leantime 3.6.2's Login controller lets unauthenticated attackers craft login URLs where the `redirectUr
Missing centralized authorization in Leantime's JSON-RPC API dispatcher (through v3.9.0) enables any authenticated user
Leantime before versions 2.0.15 and 2.1-beta3 has a SQL Injection vulnerability. Rated high severity (CVSS 8.8), this vu
Leantime 3.0.6 is vulnerable to HTML Injection via /dashboard/show#/tickets/newTicket. Rated medium severity (CVSS 4.7),
Credential disclosure in Leantime's JSON-RPC API allows an authenticated user to read any account's full credential row
EUVD-2026-98850
GHSA-54mm-6729-r5wp
NVD
CVE.org
EPSS
Exploit-DB