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

CVE-2025-56396

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

Executive Summary

CVE-2025-56396 is a privilege escalation vulnerability discovered in Ruoyi version 4.8.1. The flaw allows an authenticated attacker to gain escalated privileges by exploiting a logic error where the owning department is granted higher rights than the active user. This vulnerability can lead to unauthorized access to sensitive data and administrative functions. No public proof-of-concept (PoC) or exploit code is currently available, and no official patch has been released. The EPSS score is 0.0%, indicating a low probability of exploitation in the wild at this time.

⚡ 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

Ruoyi is a Java-based open-source framework. This vulnerability does not directly affect NPM, PyPI, Go, or Ruby packages. However, organizations using Ruoyi should verify the integrity of their deployment and monitor for any unofficial patches or updates.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which is likely a placeholder. Based on the vulnerability description, a reasonable assessment would be:

  • Attack Vector (AV): Network (N) – The attacker must be authenticated to the application.
  • Attack Complexity (AC): Low (L) – The exploit requires no special conditions.
  • Privileges Required (PR): Low (L) – The attacker needs a valid user account.
  • User Interaction (UI): None (N) – No user interaction is required.
  • Scope (S): Changed (C) – The vulnerability allows the attacker to gain higher privileges than originally granted.
  • Confidentiality (C): High (H) – Full access to sensitive data.
  • Integrity (I): High (H) – Ability to modify data.
  • Availability (A): High (H) – Potential to disrupt services.

Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H Estimated Base Score: 9.9 (Critical)

Deep Dive & Mechanics

The vulnerability lies in the authorization logic of Ruoyi 4.8.1. The system incorrectly handles department-level permissions, allowing a user to inherit or assume the privileges of their owning department. This means a low-privileged user can perform actions that should only be available to users in higher roles (e.g., admin) if their department has those rights.

Root Cause: The permission check does not properly validate that the active user's role matches the department's role. Instead, it grants the department's highest privileges to any user within that department.

Attack Scenario:

  1. An attacker gains access to a low-privileged user account (e.g., via phishing or credential stuffing).
  2. The attacker navigates to a sensitive function (e.g., user management, system configuration).
  3. The application checks the user's department and grants the department's privileges, bypassing the user's actual role.
  4. The attacker can now perform administrative actions.

Vulnerable vs. Patched Code

Since no official patch is available, the following is a hypothetical fix based on common privilege escalation patterns.

Vulnerable Code (Ruoyi 4.8.1):

// Vulnerable: Grants department-level privileges without checking user role
public boolean hasPermission(String permission) {
    User user = getCurrentUser();
    Department dept = user.getDepartment();
    // Incorrectly uses department's role
    return dept.getRole().hasPermission(permission);
}

Patched Code (Hypothetical Fix):

// Patched: Checks user's own role, not just department
public boolean hasPermission(String permission) {
    User user = getCurrentUser();
    // Correctly uses user's role
    return user.getRole().hasPermission(permission);
}

Exploitation & Lab Setup

Red Team

Since no public exploit code is available, a manual exploitation approach is described.

Prerequisites:

  • A valid low-privileged user account on a Ruoyi 4.8.1 instance.
  • Network access to the application.

Steps:

  1. Log in with the low-privileged account.
  2. Identify a sensitive endpoint (e.g., /system/user/list).
  3. Send a request to that endpoint with the session cookie.
  4. Observe if the response includes data that should be restricted (e.g., admin user list).

Example Request:

GET /system/user/list HTTP/1.1
Host: target.com
Cookie: JSESSIONID=lowprivsession

Expected Outcome: The server returns data that should only be accessible to administrators.

Blue Team

Detection:

  • Monitor for unusual access patterns, especially low-privileged users accessing admin endpoints.
  • Log all permission checks and flag anomalies.

Hunting Query (Splunk):

index=web_logs sourcetype=access_combined
| search uri="/system/*" user_role="user"
| stats count by user, uri
| where count > 10

Indicators of Compromise (IOCs)

  • Log Entries: Repeated access to /system/* endpoints by non-admin users.
  • Session Anomalies: A single user session accessing both low-privilege and high-privilege resources.
  • Network Traffic: Unusual API calls to /system/user/update or /system/config from low-privilege accounts.

Detection Engineering

YARA Rule

rule Detect_Ruoyi_PrivEsc_CVE_2025_56396 {
    meta:
        description = "Detects potential exploitation of CVE-2025-56396 in Ruoyi 4.8.1"
        author = "Valters IT"
        date = "2025-04-10"
        hash = "unknown"
    strings:
        $s1 = "/system/user/list" ascii wide nocase
        $s2 = "/system/role" ascii wide nocase
        $s3 = "department" ascii wide nocase
    condition:
        any of ($s*) and filesize < 10KB
}

Sigma Rule

title: Ruoyi Privilege Escalation Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to exploit CVE-2025-56396 by low-privilege users accessing admin endpoints
author: Valters IT
date: 2025/04/10
logsource:
    category: web
    product: ruoyi
detection:
    selection:
        uri|startswith: '/system/'
        user_role: 'user'
    condition: selection
falsepositives:
    - Legitimate admin users with misconfigured roles
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"Ruoyi Privilege Escalation Attempt"; flow:to_server,established; content:"/system/"; http_uri; nocase; content:"user_role=user"; http_cookie; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action: Restrict access to sensitive endpoints using network-level controls (e.g., VPN, IP whitelisting).
  2. Code Fix: Update the permission check logic to validate the user's role, not just the department's role.
  3. Workaround: Manually audit and adjust department permissions to ensure no department has higher privileges than necessary.
  4. Monitoring: Enable detailed logging for all permission checks and set up alerts for anomalies.
  5. Patch: Monitor the official Ruoyi repository for a security patch and apply it as soon as available.

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.

Ruoyi
Ruoyi 4.8.1
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-56396/ · 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.