Skip to main content

ERPNext CVE-2026-94113

| EUVDEUVD-2026-83735 HIGH
Missing Authorization (CWE-862)
2026-09-20 disclosure@vulncheck.com GHSA-m9g7-gc6x-55x7
7.1
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privileged user
  2. Delivery
    Call whitelisted timesheet RPC endpoint
  3. Exploit
    Endpoint skips doctype permission check
  4. Execution
    Enumerate timesheet/project records
  5. Impact
    Exfiltrate billing amounts and descriptions

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
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

Requires a valid authenticated ERPNext session with any low-privilege role (PR:L) - the whitelisted endpoints get_projectwise_timesheet_data, get_timesheet_detail_rate, and get_timesheet are callable by authenticated users and, before 15.121.0 / 16.34.0, ran raw SQL that ignored Timesheet/Project doctype permissions. No user interaction, no special configuration, and no admin rights are needed; exploitation works against default configurations. Limiting factors: attacker must have an account on the instance (not remote-unauthenticated), only billable/submitted timesheet detail data is exposed, and impact is limited to reading data (no modification). Affected: ERPNext before 15.121.0 and 16.x before 16.34.0.

Impact

This is a genuine but bounded authorization flaw (CWE-862). The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N, 7.1) is internally consistent with the description: any authenticated ERPNext user can call the whitelisted timesheet endpoints and read billable time logs belonging to other users/projects because the pre-patch code ran raw frappe.db.sql with no doctype-permission filtering. The source diff confirms the root cause and fix - raw SQL was replaced with frappe.get_list(...)/frappe.qb scoped to allowed_timesheets/allowed_projects, which is exactly the permission enforcement that was missing. Impact is confidentiality-only (VI:N/VA:N is correct - no write or availability effect), so this is not a takeover or RCE. There is no EPSS, KEV, or public POC provided, so exploitation is neither confirmed active nor demonstrated. The realistic priority is moderate: it requires a valid low-privileged account and only leaks business-sensitive data (project names, billing amounts, descriptions), not credentials or system control. Treat as an authorization/data-leak bug to patch on a normal cadence, not an emergency. Note the 'Authentication Bypass' tag is misleading - this is missing authorization for already-authenticated users, not an auth bypass.

Exploit ScenarioDerived

A low-privileged authenticated ERPNext user (e.g., a limited employee or portal account) invokes the whitelisted RPC endpoints get_projectwise_timesheet_data, get_timesheet_detail_rate, or get_timesheet, which failed to apply doctype permissions. By iterating parameters they enumerate and retrieve other teams' billable time logs - project names, billing amounts, and work descriptions - that their role should not see. No public POC is provided, but the exploit is trivial given a valid session and knowledge of the endpoint names, which are visible in the patched source.

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

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

Alert me

AnalysisAIv1 – Sep 20, 2026

Information disclosure in Frappe ERPNext before 15.121.0 and 16.x before 16.34.0 lets any authenticated user with a low-privilege account read billable timesheet records they are not authorized to see, via the whitelisted endpoints get_projectwise_timesheet_data, get_timesheet_detail_rate, and get_timesheet. The affected code paths ran raw SQL that skipped Timesheet and Project doctype permission checks, exposing project names, billing amounts, currencies, activity types, and free-text work descriptions. Exploitation requires a valid ERPNext session (PR:L) but no admin rights, user interaction, or special configuration; there is no public exploit identified at time of analysis, and the assessed impact is confidentiality-only (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) with no data modification or denial of service.

RemediationAI

Vendor-released patch: upgrade to ERPNext 15.121.0 or later on the v15 branch, or 16.34.0 or later on the v16 branch, which applies the Frappe query-builder rewrite that filters Timesheet and Project results through frappe.get_list permission scoping (see GHSA-9vph-hqmm-g7hq and PR 58576). If immediate upgrade is not possible, compensating controls are: block or disable the three exposed endpoints (get_projectwise_timesheet_data, get_timesheet_detail_rate, get_timesheet) at the reverse proxy or via a before_request/site-level hook returning 403, accepting that the project billing, timesheet search, and rate lookup features in the ERPNext UI will break until the patch is applied; temporarily revoke or audit low-privilege ERPNext accounts and roles that do not legitimately need timesheet/billing visibility, since the flaw requires only an authenticated session; and enable Frappe access/API logs to detect calls to those /api/method/ paths from accounts without Timesheet read permission. Rotating credentials is not a meaningful mitigation because the exposure is a persistent authorization gap, not a credential leak, and no compensating control fully restores the intended permission model - the upgrade is the only complete fix.

Affected VersionsENISA

ERPNext 0 <15.121.0
ERPNext 16.0.0 <16.34.0

Affected Packages

euvd erpnext fix: 15.121.0, 16.34.0

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

ERPNext is a Frappe-framework ERP application in which server-side Python functions are exposed as HTTP-callable endpoints by the @frappe.whitelist() decorator through the /api/method/ route, but the framework only enforces DocType permissions automatically when methods go through permission-aware APIs such as frappe.get_list, frappe.get_all with permitted filters, or frappe.has_permission. The vulnerable functions in erpnext/projects/doctype/timesheet/timesheet.py instead built raw SQL strings against tabTimesheet Detail and tabTimesheet and executed them with frappe.db.sql, so the user's role-based read restrictions on Timesheet and Project were never consulted. This is CWE-862 (Missing Authorization): the endpoints authenticate the caller but perform no authorization check against the underlying DocTypes. The upstream fixes in commits c656497aac76af82eea028e3e8cb8d5380385f0f and d5df40986d72a55d414ddaf4d382883f9df31e41 (PR 58576) replace the raw SQL with the Frappe query builder and constrain results using frappe.get_list("Timesheet", pluck="name") and frappe.get_list("Project", pluck="name") allowlists, returning empty results or 0.0 when the caller has no permitted timesheets, and limit the rate lookup to a single permitted timelog.

Know when Python 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 (vulncheck) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Remote, low-complexity, needs any authenticated account (PR:L); confidentiality-only leak of sensitive billing/project data (C:H), no integrity or availability impact.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 20, 2026 - 13:15 EUVD
CVE Published
Sep 20, 2026 - 12:17 cve.org
HIGH 7.1

DescriptionCVE.org

Frappe ERPNext versions before 15.121.0 and 16.x before 16.34.0 contain an information disclosure vulnerability in whitelisted timesheet endpoints that fail to enforce doctype permissions. Authenticated attackers can call get_projectwise_timesheet_data, get_timesheet_detail_rate, and get_timesheet endpoints to enumerate and retrieve billable time logs including project names, billing amounts, and work descriptions without proper authorization checks.

Technical POC Analysis

CWE-862 (Missing Authorization), per the GitHub advisory GHSA-9vph-hqmm-g7hq ("Certain endpoints failed to enforce proper authorization checks, allowing users to read data beyond their permitted role…

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

Frappe ERPNext instances running versions below 15.121.0, or 16.x below 16.34.0, allow any employee holding an ordinary non-privileged login to pull billing and timesheet records for projects they are not assigned to, exposing client project names, rates, currencies, activity types and free-text work notes. Because the flaw is reachable through normal application endpoints by any authenticated account, the exposure scales with the entire ERP user population rather than being confined to a small administrative group. Leadership should treat this as a confidentiality risk to client billing data that is compounded by the absence of a vendor patch at time of analysis and no public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

Restrict get_projectwise_timesheet_data, get_timesheet_detail_rate and get_timesheet at the reverse proxy, WAF or API gateway to finance/billing roles only; remove Timesheet and Project read permissions from low-privilege and non-finance roles; reduce the number of accounts holding valid ERPNext sessions by disabling dormant users and enforcing MFA; enable access logging and anomaly alerting on the three endpoints; and apply the vendor fix at 15.121.0 or 16.34.0 as soon as it becomes obtainable.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Medium
ERPNext is a widely used open-source ERP, but not ubiquitous infrastructure
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.2%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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