Skip to main content

Leantime EUVDEUVD-2026-98850

| CVE-2026-85990 HIGH
Improper Privilege Management (CWE-269)
2026-10-13 GitHub_M GHSA-54mm-6729-r5wp
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege user
  2. Delivery
    Send JSON-RPC with X-Requested-With header
  3. Exploit
    Call createApiKeyWithProjects with admin role
  4. Execution
    Interactive administrator account created
  5. Impact
    Full 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Leantime < 3.10.0

Affected Packages

composer leantime/leantime fix: 3.10.0
euvd leantime fix: 3.10.0

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

Vendor (GitHub_M) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 13, 2026 - 17:03 EUVD
CVE Published
Oct 13, 2026 - 16:15 cve.org
HIGH 8.8

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Low
self-hosted open-source project management tool, niche deployment footprint
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

CVE-2024-27474 HIGH POC
8.8 Apr 10

Leantime 3.0.6 is vulnerable to Cross Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is

CVE-2026-66416 HIGH POC
8.6 Jul 30

Cross-site request forgery in Leantime 3.6.2 lets a remote unauthenticated attacker execute state-changing actions in th

CVE-2026-66415 HIGH POC
8.4 Jul 30

Server-side request forgery and local file inclusion in Leantime 3.6.2 lets authenticated attackers coerce the server in

CVE-2024-27705 HIGH POC
7.6 Apr 03

Cross Site Scripting vulnerability in Leantime v3.0.6 allows attackers to execute arbitrary code via upload of crafted P

CVE-2023-45826 MEDIUM POC
6.5 Oct 19

Leantime is an open source project management system. Rated medium severity (CVSS 6.5), this vulnerability is remotely e

CVE-2024-27477 MEDIUM POC
6.1 Apr 10

In Leantime 3.0.6, a Cross-Site Scripting vulnerability exists within the ticket creation and modification functionality

CVE-2024-27703 MEDIUM POC
5.4 Mar 13

Cross Site Scripting vulnerability in Leantime 3.0.6 allows a remote attacker to execute arbitrary code via the to-do ti

CVE-2026-66414 MEDIUM POC
5.1 Jul 30

Open redirect in Leantime 3.6.2's Login controller lets unauthenticated attackers craft login URLs where the `redirectUr

CVE-2026-76647 HIGH
8.8 Aug 19

Missing centralized authorization in Leantime's JSON-RPC API dispatcher (through v3.9.0) enables any authenticated user

CVE-2020-5292 HIGH
8.8 Mar 31

Leantime before versions 2.0.15 and 2.1-beta3 has a SQL Injection vulnerability. Rated high severity (CVSS 8.8), this vu

CVE-2024-27476 MEDIUM POC
4.7 Apr 10

Leantime 3.0.6 is vulnerable to HTML Injection via /dashboard/show#/tickets/newTicket. Rated medium severity (CVSS 4.7),

CVE-2026-59712 HIGH
8.6 Jul 06

Credential disclosure in Leantime's JSON-RPC API allows an authenticated user to read any account's full credential row

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy