CVE-2025-10276

6.3 MEDIUM

📋 TL;DR

This vulnerability allows unauthorized users to transfer CRM contracts to different owners due to improper authorization checks in the YunaiV ruoyi-vue-pro application. Remote attackers can exploit this to manipulate contract ownership without proper permissions. Organizations using ruoyi-vue-pro up to version 2025.09 are affected.

💻 Affected Systems

Products:
  • YunaiV ruoyi-vue-pro
Versions: up to 2025.09
Operating Systems: Any
Default Config Vulnerable: ⚠️ Yes
Notes: Affects systems with the CRM module enabled and the /crm/contract/transfer endpoint accessible.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could transfer all CRM contracts to malicious users, causing complete business disruption, data integrity loss, and potential financial fraud.

🟠

Likely Case

Unauthorized contract transfers leading to business process disruption, data manipulation, and potential privilege escalation within the CRM system.

🟢

If Mitigated

With proper network segmentation and authentication controls, impact is limited to authorized users only, reducing risk of external exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploit requires authentication but bypasses authorization checks. Public disclosure available via referenced blog posts.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: UNKNOWN

Vendor Advisory: NONE

Restart Required: No

Instructions:

1. Check for vendor updates beyond version 2025.09
2. Monitor official YunaiV repositories for security patches
3. Apply any available patches immediately

🔧 Temporary Workarounds

Disable contract transfer endpoint

all

Temporarily disable or restrict access to the vulnerable /crm/contract/transfer endpoint

# Configure web server (e.g., Nginx) to block the path:
location /crm/contract/transfer { deny all; }

Implement additional authorization middleware

all

Add custom authorization checks before processing contract transfer requests

# Add authorization validation in the controller method
if (!hasPermission('contract_transfer')) { return unauthorized(); }

🧯 If You Can't Patch

  • Implement strict network access controls to limit who can reach the application
  • Enable detailed audit logging for all contract transfer operations and monitor for anomalies

🔍 How to Verify

Check if Vulnerable:

Test if unauthorized users can access POST /crm/contract/transfer with id and newOwnerUserId parameters

Check Version:

Check application version in configuration files or via admin interface

Verify Fix Applied:

Verify that proper authorization checks are implemented and only authorized users can transfer contracts

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized access attempts to /crm/contract/transfer
  • Contract ownership changes from unexpected users

Network Indicators:

  • POST requests to /crm/contract/transfer with id/newOwnerUserId parameters

SIEM Query:

source="web_logs" AND uri="/crm/contract/transfer" AND (user NOT IN authorized_users OR status=200)

🔗 References

📤 Share & Export