☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-109623

CVE-2026-109623 Missing Authorization in Frappe
📅 PUBLISHED: 2026-10-12 00:00 UTC 🔄 UPDATED: 2026-10-13 23:16 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.17%
👁️
0.17% probability
4.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
5.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-109623 is a missing authorization vulnerability (CWE-862) in Frappe ERPNext affecting versions before 15.121.1 and 16.x before 16.34.2. Certain endpoints fail to enforce proper authorization checks, allowing an authenticated attacker to modify documents and data beyond the scope permitted by their assigned role. The impact is limited to low confidentiality and low integrity loss (CVSS 5.4), but in the context of an ERP platform, unauthorized modification of business records can have disproportionate downstream operational and compliance consequences.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability class is Missing Authorization (CWE-862), which occurs when an application fails to perform an authorization check before allowing a sensitive action. In ERPNext, the platform exposes a large set of server-side endpoints (both RPC-style and REST document operations) that are expected to enforce role-based permissions. The NVD description states that "certain endpoints fail to enforce proper authorization checks," meaning the defect is not in the authentication layer — the attacker must already be authenticated — but in the per-request authorization decision.

The attack surface is therefore the authenticated HTTP interface of an ERPNext deployment. Because the description does not enumerate the specific endpoints, the precise route, controller, or parameter names cannot be stated without inventing them, and no such detail is provided in the source data. What can be stated with confidence:

  • The flaw is reachable over the network (AV:N), requiring only low privileges (PR:L) and no user interaction (UI:N).
  • The affected operations are write operations against documents and data, consistent with the I:L (Low integrity) subscore.
  • The scope is unchanged (S:U), meaning the vulnerable component and the impacted component are the same authorization domain.
  • Confidentiality impact is Low (C:L), indicating limited read exposure in addition to or as a side effect of the write path.
  • Availability is Not impacted (A:N).

From an architectural perspective, missing authorization in ERP frameworks commonly arises in one of three patterns: (1) an endpoint that relies on client-supplied role or user flags rather than server-side permission evaluation; (2) a document-level or field-level permission check that is applied on read but omitted on write; or (3) a privileged internal method that is exposed to lower-privileged sessions without a guard. The NVD description aligns with the general category but does not confirm which pattern applies here; analysts should treat endpoint identification as a discovery task during validation.

No public proof-of-concept, exploit code, or Nuclei template was available at the time of writing, and no EPSS score has been assigned by FIRST.org. CISA KEV status is NO. The absence of weaponized public exploit code lowers near-term opportunistic risk, but the low complexity of the flaw class means in-the-wild misuse should not be ruled out.

Exploitation Scenarios

The following chain is inferred from the vulnerability class (CWE-862) and the NVD description. No specific endpoints, methods, or parameters are asserted because none are disclosed in the source data. No public PoC is available; the attack chain is inferred from vulnerability class.

  1. Reconnaissance / target identification. The attacker identifies an internet- or intranet-exposed ERPNext instance, for example via Shodan using http.title:"ERPNext" or the application favicon hash. The attacker then obtains a valid low-privilege account. This is a realistic precondition in ERP environments because self-registration, portal users, supplier/customer portal accounts, and contractor accounts are common, and valid credentials are frequently obtainable through phishing, credential reuse, or purchase.

  2. Authentication and privilege baseline. The attacker logs in with the low-privilege account and maps the interface to enumerate which document types and actions the session can reach. Because the flaw is a missing authorization check rather than a missing authentication check, the attacker is looking specifically for write operations that the UI hides or disables for their role but that the backend still accepts when invoked directly.

  3. Triggering the flaw class. The attacker crafts authenticated HTTP requests directly to the affected endpoints, bypassing the UI entirely. Under CWE-862, the server processes the request without verifying that the session's role permits the operation. The request is authenticated, so it passes the authentication gate, and the missing authorization check allows the write to proceed. At the vulnerability-class level, this is an authorization bypass on a write path — the attacker does not need a memory-corruption primitive, injection flaw, or malformed payload; a well-formed authenticated request is sufficient.

  4. Payload and execution. The "payload" is the document write itself. Depending on which endpoints are affected, the attacker may alter business records, approval states, financial entries, master data, or configuration-adjacent documents that their role should not be able to touch. Because specific endpoints are not disclosed, the exact set of mutable objects cannot be enumerated here.

  5. Post-exploitation impact. Integrity of business data is the primary casualty: unauthorized modification of records can subvert approval workflows, falsify transaction history, or degrade trust in reporting. Confidentiality impact is Low, consistent with limited exposure of data adjacent to the write path. Persistence is plausible where the writable objects include user-facing or configuration documents, though the data provided does not confirm this. No availability impact is expected (A:N).

Detection opportunity: the requests are authenticated and structurally valid, so signatures must rely on behavioral anomalies — a low-privilege session issuing write requests to endpoints or document types outside its normal role profile — rather than on malformed traffic.

Impact Assessment

Business impact centers on data integrity within an ERP system of record. ERP platforms aggregate finance, procurement, inventory, HR, and customer data; unauthorized modification of even a subset of documents can propagate into downstream reports, reconciliations, and automated decisions. A low-privilege insider, contractor, or external attacker holding any valid account can act without elevated permissions, which broadens the pool of potential abusers to everyone with a login.

Blast radius considerations:

  • Affected systems: ERPNext deployments on versions before 15.121.1 and 16.x before 16.34.2 that expose authenticated endpoints to untrusted networks.
  • Subscore interpretation: PR:L means only a basic account is required, which is the most commonly available foothold. UI:N means no victim action is needed. AV:N means the attack is remote. S:U means no privilege-domain escape. I:L and C:L indicate bounded but real integrity and confidentiality loss. A:N indicates no direct denial of service.
  • Compliance exposure: In regulated environments, unauthorized modification of financial or personal records can trigger audit findings, data-integrity obligations, and mandatory disclosure processes even where no data is exfiltrated.
  • Likelihood: rated moderate. Exploitation requires valid credentials and knowledge of which endpoints lack the authorization check. The unpatched status and 0/4 patch confidence increase the value of compensating controls, but the absence of public exploit code and the unassigned EPSS score currently limit mass opportunistic exploitation.

Detection Guidance

Sigma Rule

title: ERPNext Missing Authorization - Low-Privilege Write to Restricted Endpoint
id: 7f3c9a12-4d21-4f8b-9c2e-1a6b5e9d0c44
status: experimental
description: Detects authenticated write attempts by low-privilege ERPNext sessions against endpoints that should require elevated role permissions (CVE-2026-109623).
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-109623
author: valtersit.com
date: 2026/01/01
logsource:
  category: webserver
  product: erpnext
detection:
  selection_method:
    cs-method:
      - 'POST'
      - 'PUT'
      - 'PATCH'
  selection_write:
    cs-uri-query|contains:
      - 'method=save'
      - 'method=submit'
      - 'method=update'
      - 'method=insert'
  filter_privileged_roles:
    user_role:
      - 'System Manager'
      - 'Administrator'
  condition: selection_method and selection_write and not filter_privileged_roles
fields:
  - c-ip
  - cs-username
  - cs-uri
  - user_role
falsepositives:
  - Legitimate users with delegated write permissions to the same document types
  - Automated integrations using service accounts with broad roles
level: medium
tags:
  - attack.t1190
  - cve.2026-109623
  - cwe.862

YARA Rule

rule CVE_2026_109623_ERPNext_Missing_Authz
{
    meta:
        description = "Detects references to CVE-2026-109623 exploitation attempts in logs, scripts, or capture files targeting ERPNext missing authorization"
        author = "valtersit.com"
        date = "2026-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-109623"
        cve = "CVE-2026-109623"

    strings:
        $cve = "CVE-2026-109623" ascii nocase wide
        $erp = "erpnext" ascii nocase wide
        $authz1 = "missing authorization" ascii nocase
        $authz2 = "unauthorized" ascii nocase
        $method1 = "method=save" ascii nocase
        $method2 = "method=submit" ascii nocase
        $role = "user_role" ascii nocase
        $api1 = "/api/method/" ascii nocase
        $api2 = "/api/resource/" ascii nocase

    condition:
        uint16(0) == 0x0A0D or
        (
            $erp and
            ($authz1 or $authz2 or $cve) and
            1 of ($method*) and
            any of ($api*)
        )
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-109623 ERPNext Missing Authorization Write Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/api/method/"; http.uri; content:"method="; http.header; content:"Cookie"; pcre:"/(save|submit|update|insert)/Ri"; threshold:type both, track by_src, count 10, seconds 60; classtype:attempted-user; reference:cve,2026-109623; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-109623; sid:9000109; rev:1;)

Note: this rule uses a coarse write-method heuristic because the specific vulnerable endpoints are not disclosed. Tune the content values to the endpoints identified during your own verification, and pair network detection with server-side role context for accuracy.

Elastic Detection

sequence by user.name, source.ip with maxspan=5m
  [ authentication where event.outcome == "success" and user.roles : ("Employee", "Customer", "Supplier", "Website User") ]
  [ http where http.request.method in ("POST", "PUT", "PATCH")
      and url.path : ("/api/method/*", "/api/resource/*")
      and url.query : ("*method=save*", "*method=submit*", "*method=update*")
      and not user.roles : ("System Manager", "Administrator") ]

This sequence flags a low-privilege session immediately followed by write-oriented API calls, which is the behavioral signature of an authorization bypass rather than a malformed request.

Splunk SPL Query

index=web sourcetype=erpnext_access
| eval is_write=if(match(http_method,"(?i)POST|PUT|PATCH"),1,0)
| eval is_api=if(match(uri_path,"/api/(method|resource)/"),1,0)
| eval is_priv_role=if(match(user_role,"(?i)System Manager|Administrator"),1,0)
| where is_write=1 AND is_api=1 AND is_priv_role=0
| stats count values(uri_path) as endpoints values(http_method) as methods by src_ip user_name user_role
| where count > 5
| sort - count

Wazuh OSSEC Rule

<group name="erpnext,web,cve-2026-109623,">
  <rule id="100623" level="8">
    <decoded_as>json</decoded_as>
    <field name="event_type">http_access</field>
    <field name="http_method">POST|PUT|PATCH</field>
    <field name="uri_path">/api/(method|resource)/</field>
    <field name="user_role" negate="yes">System Manager|Administrator</field>
    <description>CVE-2026-109623: Low-privilege ERPNext session issued a write request to a restricted API endpoint.</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>web_attack,</group>
  </rule>

  <rule id="100624" level="10" frequency="10" timeframe="120">
    <if_matched_sid>100623</if_matched_sid>
    <same_source_ip />
    <description>CVE-2026-109623: Repeated unauthorized write attempts from the same source - possible exploitation of missing authorization in ERPNext.</description>
    <group>web_attack,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). The following guidance is prioritized by immediacy and should be validated against your own environment and vendor communications.

  1. Immediate mitigations
  • Reduce the exposed attack surface: restrict access to ERPNext authenticated endpoints to trusted networks or VPN. Administrative and API paths should not be internet-reachable without an authentication-aware reverse proxy.
  • Enforce least privilege for all accounts. Audit portal, customer, supplier, and website user accounts, and remove or downgrade any account that does not have a current business need for write access.
  • Add a reverse-proxy or WAF layer that applies positive authorization modeling: allow only the write paths each role legitimately requires instead of allowing all authenticated POST/PUT/PATCH traffic.
  • Enable detailed web and application audit logging with user identity, role, endpoint, and document identifier so that behavioral detections (Sigma, Elastic, Splunk, Wazuh) have the context they need.
  • Increase monitoring of write operations by low-privilege roles; treat anomalies as security events rather than application bugs.
  1. Patch / upgrade steps
  • The vendor fix version referenced in the source data is ERPNext 15.121.1 for the 15.x branch and 16.34.2 for the 16.x branch. Because patch confidence is 0/4 and no tracked source has confirmed an available fix, do not assume these versions are downloadable or verified. Confirm availability directly with the ERPNext/Frappe project before planning a change window.
  • If a fix is available: inventory all instances and confirm exact running versions; stage the upgrade in a non-production environment; validate that the affected endpoints enforce authorization for low-privilege roles before production rollout; and keep a rollback plan.
  • If no fix is available: remain on compensating controls and monitor vendor/security channels for an official advisory and patched release.
  1. Long-term hardening
  • Adopt deny-by-default authorization: every endpoint should declare an explicit required role, and new endpoints should be inaccessible until a permission is assigned.
  • Introduce automated authorization testing into CI/CD so that endpoints are validated against low-privilege sessions before release.
  • Maintain strict separation between public-facing portal components and internal ERP administration.
  • Keep ERPNext and all dependent Frappe framework components current, and subscribe to vendor security notifications.
  • Reassess periodically: because no EPSS score is assigned and no public exploit exists yet, risk may rise if exploit code is published or if the vendor publishes a detailed advisory.

References

Threat actor and exploit-in-the-wild evidence: none available. No public PoC, no exploit code, no Nuclei template, and no CISA KEV entry were identified at the time of writing.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Frappe"
title:"Frappe"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-109623/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.