Skip to main content

Frappe HR CVE-2026-108732

| EUVDEUVD-2026-96898 MEDIUM
Missing Authorization (CWE-862)
2026-10-11 VulnCheck GHSA-f4w9-fc3h-w6qm
5.3
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-privilege HRMS user
  2. Exploit
    Enumerate Salary Slip/claim document names
  3. Execution
    Call get_account_and_amount via /api/method
  4. Impact
    Disclose other employees' payroll amounts

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 only a valid authenticated session on the Frappe HRMS instance (PR:L) - crucially, the attacker does NOT need any HR role or elevated privilege. The specific trigger is the whitelisted get_account_and_amount method exposed over /api/method, which lacked a frappe.has_permission check; exploitation depends on supplying enumerable Salary Slip or full-and-final/claim document names, which are sequential/guessable, enabling systematic harvesting. No non-default configuration and no user interaction are needed - the endpoint is whitelisted by default on affected 14.x, 15.x (through 15.64.3), and pre-16.11.0 builds. Limiting factors: the attacker must first obtain any authenticated account, disclosure is confined to payroll/loan/advance/claim amounts (no write or system impact), and upgrading to 16.11.0 (or applying commit 6ab7a50) adds the missing read-permission check.

Impact

This is a medium-severity broken-access-control / IDOR issue (CWE-862), not a critical one, and the signals are internally consistent. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L) scores 5.3: network-reachable and low-complexity, but it requires an authenticated session (PR:L) and yields only limited confidentiality impact (VC:L) with no integrity or availability effect. The real-world risk is therefore an authenticated/insider exposure: any logged-in Frappe HRMS user - explicitly including those WITHOUT HR roles - can read other employees' net pay and loan/advance/claim balances by calling the whitelisted get_account_and_amount method with enumerable document names. No EPSS score was supplied, so widespread-exploitation probability cannot be quantified, and the CVE is NOT listed in CISA KEV, so there is no confirmed active exploitation - status is 'no public exploit identified at time of analysis.' However, a detailed public technical writeup (hackmd) documents the enumeration/oracle method, which materially lowers the barrier to exploitation even though no packaged exploit code is referenced. Net: a genuine privacy/payroll-confidentiality priority for organizations with many low-trust HRMS accounts, but not an internet-facing unauthenticated emergency. Note the input 'Authentication Bypass' tag is inaccurate - the flaw is an authorization (not authentication) failure and the attacker is already authenticated.

Exploit ScenarioDerived

A disgruntled or curious employee holding a standard Frappe HRMS login but no HR role scripts requests to /api/method/...get_account_and_amount, iterating over predictable Salary Slip and claim document names to harvest colleagues' net pay and loan, advance, and claim balances. A public technical writeup on hackmd documents this oracle-style enumeration technique, so the method is known even though no weaponized exploit tool is referenced. Because the vector is network/low-complexity but requires a valid authenticated account (PR:L), this is realistically an insider or compromised-credential scenario rather than anonymous remote mass exploitation.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 11, 2026

Authenticated users of Frappe HR (hrms) - including accounts holding no HR role whatsoever - can read other employees' net pay along with loan, advance, and expense-claim balances by calling the whitelisted get_account_and_amount method over /api/method. Affected releases are all 14.x and 15.x builds through 15.64.3, plus any pre-16.11.0 build; the endpoint ships whitelisted by default and requires no non-default configuration or user interaction, only a valid low-privileged session (CVSS 4.0 score 5.3, PR:L, confidentiality-only impact). Exploitation is a straightforward IDOR-style enumeration exercise because Salary Slip and claim document names are sequential and guessable, so an attacker can harvest amounts systematically; CISA KEV does not list this issue and no public exploit code has been confirmed, although a public technical writeup describing the payroll "amount oracle" is referenced in the advisory data, making the technique widely discoverable.

RemediationAI

Vendor-released patch: 16.11.0. Upgrade Frappe HR (hrms) to 16.11.0, available at https://github.com/frappe/hrms/releases/tag/v16.11.0; if the deployment is pinned to a 15.x or 14.x branch, apply the upstream fix commit 6ab7a50347367413b78ad5bd5d9e4b8c6653c81f, which inserts frappe.has_permission(ref_doctype, "read", ref_document, throw=True) into get_account_and_amount - note that this commit is the actual code-level fix and the release tag is the supported distribution channel, so sites that cherry-pick the commit should validate that related permission checks elsewhere in the same diff are also carried forward. Where upgrading or backporting is not immediately possible, compensating controls include: removing get_account_and_amount from the whitelist (or wrapping it with an explicit frappe.has_permission guard via a custom app patch) - effective but requires code maintenance and can break legitimate full-and-final settlement processing; restricting access to /api/method at the reverse proxy or WAF to trusted networks or to known HR users, with the trade-off that remote/mobile HR staff and any legitimate API integrations will be blocked; and reducing the blast radius by tightening Frappe role permissions on Salary Slip, Employee Advance, and Expense Claim doctypes so that ordinary users cannot read records even if an endpoint is reached - this does not close the missing check itself and relies on correct role configuration. Monitoring and detection: alert on authenticated /api/method calls to get_account_and_amount that reference documents outside the caller's own Employee record, and on spikes of sequential/iterative ref_document values from a single session, which is the signature of the enumeration described in the public writeup at https://hackmd.io/@haind03/frappe-hrms-fnf-payroll-amount-oracle.

Affected VersionsENISA

hrms 0 <16.11.0

Affected Packages

euvd hrms fix: 16.11.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

Frappe HR (the hrms app, module path hrms.hr.doctype.full_and_final_statement.full_and_final_statement around lines 273-327) runs on the Frappe framework, which exposes server-side Python functions decorated as whitelisted directly to remote clients through the generic /api/method/<dotted.path> endpoint. The get_account_and_amount(ref_doctype, ref_document, company) helper is intended for internal calculation of full-and-final settlement figures and accepts arbitrary document identifiers; it computed and returned account and amount data without ever invoking frappe.has_permission, which is the CWE-862 (Missing Authorization) root cause. Because Frappe document names such as Salary Slip and the full-and-final/claim records are auto-generated and sequential, an attacker can substitute other employees' document names into the ref_doctype/ref_document parameters and receive payroll, loan, advance, and claim balances that proper role-based permission checks would have denied - a classic Insecure Direct Object Reference layered on top of a broken access control primitive. The upstream fix commit 6ab7a50347367413b78ad5bd5d9e4b8c6653c81f inserts frappe.has_permission(ref_doctype, "read", ref_document, throw=True) into get_account_and_amount; the same commit hardens numerous other entry points across appraisal, appraisal_cycle, attendance, employee_checkin, employee_onboarding, expense_claim, roster, and api/__init__ (File attachment ownership, Company read checks), indicating a broader missing-authorization sweep rather than a single isolated defect. It is notable that the same guard was added with a "write" check for attendance marking and file attachment resolution, but only a "read" check for the payroll path described here, which is consistent with the confidentiality-only (C:L) impact assessed.

Know when Frappe 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 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Authenticated API call needed so PR:L; network/low-complexity endpoint; only limited financial fields are read per enumerated document, so C:L with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/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
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Frappe HR (hrms) before 16.11.0, including all 14.x and 15.x releases through 15.64.3, contains a missing authorization vulnerability in the whitelisted get_account_and_amount method that lets authenticated users read payroll amounts. Attackers without HR roles can call the method over /api/method with enumerable Salary Slip or claim document names to disclose other employees' net pay and loan, advance, and claim balances.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Medium
open-source HR module on Frappe/ERPNext, moderate SMB adoption worldwide
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

More in Frappe

View all
CVE-2025-67289 CRITICAL POC
9.6 Dec 22

Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on

CVE-2018-3885 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3884 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3883 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3882 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2025-66440 HIGH POC
8.8 Dec 15

Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database c

CVE-2025-66439 HIGH POC
8.8 Dec 15

SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa

CVE-2025-66437 HIGH POC
8.8 Dec 15

Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A

CVE-2020-6145 HIGH POC
8.8 Aug 10

An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev

CVE-2026-39352 HIGH POC
8.7 May 20

Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie

CVE-2025-10655 HIGH POC
8.6 Dec 09

SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL

CVE-2025-52042 HIGH POC
8.2 Oct 01

In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re

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