Skip to main content

Frappe CRM CVE-2026-116492

| EUVDEUVD-2026-109789 HIGH
Missing Authorization (CWE-862)
2026-10-26 VulnCheck GHSA-qmcv-7jcv-gffw
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 CRM user
  2. Exploit
    Call get_contact_by_phone_number with a known phone number
  3. Execution
    Raw DB query skips permission check
  4. Impact
    Read restricted CRM Lead details

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 an authenticated low-privileged account (PR:L - e.g., the 'Sales User' role seen in the patch tests) on a Frappe CRM instance running a version before 1.89.1. The attacker must know or guess a target's phone number, then call the crm.integrations.api.get_contact_by_phone_number endpoint; the vulnerable code path resolves matches with raw database queries and does not invoke frappe.has_permission, so normal API/UI access controls are bypassed. Limiting factors: a valid authenticated session is mandatory (not remotely anonymous), each lookup returns only the lead matching one supplied phone number (no bulk dump without phone-number enumeration), the impact is confidentiality-only, and instances patched to v1.89.1 - which filters results to records the user can read - are not affected.

Impact

This is a genuine but moderate-priority issue rather than a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes a network-reachable, low-complexity attack needing no user interaction, but PR:L confirms it requires an authenticated low-privileged account - so this is an insider/post-authentication data-exposure flaw, not a remote-unauthenticated breach. Impact is confidentiality-only (VC:H, VI:N, VA:N): an attacker can read CRM Lead records but cannot modify data or affect availability. The vuln.today decision label is 'this_week', consistent with a real-but-not-urgent priority. No CISA KEV listing and no public exploit identified at time of analysis - the only code artifacts are the vendor patch (PR #3103) and release v1.89.1, which is a fix, not a weaponized PoC. EPSS data is MISSING from the input, so probability-of-exploitation cannot be quantified here. The practical risk is bounded by two factors the raw 7.1 score understates: the attacker needs a valid authenticated session, and each query returns only the lead matching one supplied phone number, so mass harvesting requires enumerating known phone numbers. Net: confirmed broken-access-control (CWE-862) with a vendor patch available, warranting prompt patching in multi-tenant or large-user CRM deployments but not emergency escalation.

Exploit ScenarioDerived

A low-privileged user (e.g., a Sales User role) with a legitimate Frappe CRM account calls the crm.integrations.api.get_contact_by_phone_number endpoint, supplying a phone number belonging to a lead owned by another user. Because the endpoint ran raw database queries without calling frappe.has_permission, it returns the full lead details that the standard UI and API would have blocked. No public exploit code was identified; the patch (PR #3103) adds a per-record read-permission filter.

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 – Oct 26, 2026

Missing authorization in Frappe CRM before 1.89.1 lets an authenticated low-privileged user read CRM Lead records they are not permitted to see by supplying a known phone number to the crm.integrations.api.get_contact_by_phone_number endpoint, which resolves matches with raw database queries instead of the permission system. Any user holding a valid session and a low-privilege role (the patch's tests use a 'Sales User' account) can enumerate phone numbers to disclose lead details otherwise blocked by standard API and UI controls; no public exploit was identified at time of analysis and the issue is not in CISA KEV. Severity is high for confidentiality (CVSS 7.1 in the 4.0 scoring, with the assessed 3.1 vector at AV:N/AC:L/PR:L/UI:N/C:H) but the impact is disclosure-only and requires a known or guessed phone number per record, which keeps this a moderate-priority, patch-this-week item rather than an emergency. The vendor shipped a fix in v1.89.1.

RemediationAI

Vendor-released patch: upgrade Frappe CRM to v1.89.1 (release https://github.com/frappe/crm/releases/tag/v1.89.1), which contains the fix from PR https://github.com/frappe/crm/pull/3103 and gates the phone-number lookups on frappe.has_permission while moving unrestricted resolution into server-side-only helpers. Because the flaw lives in an application endpoint rather than infrastructure, the available sources document no configuration workaround and no alternate mitigation beyond applying the update; the vendor's advisory is at https://www.vulncheck.com/advisories/frappe-crm-before-missing-authorization-via-phone-lookup-api. Until the upgrade is applied, exposure is bounded by the prerequisites already noted - the attacker needs a valid low-privileged login and a known or guessed phone number for each record - so auditing who holds Sales User and similar roles, and reviewing CRM Lead access logs for unusual get_contact_by_phone_number calls, are the practical interim detective steps; note that such reviews do not stop the disclosure itself. No CISA KEV entry or confirmed public exploit code exists for this issue at time of analysis, so the upgrade can follow normal weekly patching cadence rather than emergency change.

Affected VersionsENISA

crm 1.0.0 <1.89.1

Affected Packages

euvd crm fix: 1.89.1

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 CRM is an application built on the Frappe/ERPNext framework, where access control is enforced per DocType through frappe.has_permission checks on read, write, and other operations. The vulnerable resolver functions in crm/integrations/api.py (_first_match, get_contact_by_phone_number and get_contact_lead_or_deal_from_number) looked up CRM Lead, Contact and Deal records by phone number using raw database queries and returned the first match without ever calling frappe.has_permission, so the endpoint effectively ran with elevated trust and bypassed the framework's role and ownership rules. This is CWE-862 Missing Authorization: the endpoint is reachable by any authenticated user (the assessed vector is PR:L, and the regression tests in the patch create a plain 'Sales User' to reproduce the leak), and the caller is not an anonymous remote attacker. The upstream fix (PR 3103) makes the public, user-facing helpers filter candidates through frappe.has_permission(m['doctype'], 'read', m['docname']) by passing readable_only=True into _first_match, and splits off explicit server-side-only variants (find_contact_by_phone_number, find_contact_lead_or_deal_from_number) used by the WhatsApp, Exotel and Twilio call-log integrations that must still link records regardless of the acting user's read rights. The included tests verify three behaviors: a hidden lead is no longer returned to the Sales User, the server-side wrappers still find it, and a newer hidden lead is skipped in favour of an older readable one. The trigger for the bypass is a single crafted API call with a phone number; no memory-safety, race or special configuration condition is described in the available sources.

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

Network API callable by any authenticated low-privileged user (PR:L) with no interaction; discloses restricted lead data (C:H) with no integrity/availability impact and no scope change.

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

DescriptionCVE.org

Frappe CRM app before 1.89.1 contains a missing authorization vulnerability that allows authenticated low-privileged users to read CRM Lead records they are not permitted to access by querying the get_contact_by_phone_number API, which performs raw database queries without invoking the permission system. Attackers can supply a known phone number to the crm.integrations.api.get_contact_by_phone_number endpoint to retrieve full lead details otherwise blocked by standard API and UI access controls, resulting in unauthorized disclosure of sensitive CRM data.

Executive ViewAI

Why It Matters

Frappe CRM versions before 1.89.1 contain a missing authorization flaw that allows any authenticated low-privileged user, such as a Sales User, to read CRM Lead records they are not permitted to see by supplying known phone numbers to a specific API endpoint. This vulnerability, while rated high for confidentiality, requires per-record phone number knowledge and only enables disclosure, meaning customer data exposure risk is moderate but real. Leadership should prioritize patching this week to prevent potential privacy breaches and maintain compliance.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
niche open-source CRM app, limited enterprise deployment footprint
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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