CVE-2021-43835
Executive Summary
CVE-2021-43835 is a privilege escalation vulnerability affecting the Sulu open-source PHP content management system, which is built on the Symfony framework. Authenticated users with access to any subset of the Sulu admin UI can elevate their privileges by exploiting a flaw introduced in version 2.0.0-RC1 within the ProfileController putAction — a mechanism that permitted them to grant themselves permissions for areas of the system they did not previously have access to. The vulnerability has been patched in Sulu versions 2.2.18, 2.3.8, and 2.4.0, and affects any Sulu deployment running version 2.0.0-RC1 through the patched releases.
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
Technical Analysis
Sulu is an open-source PHP content management system (CMS) built on top of the Symfony framework. It provides a full-featured admin panel for managing content, users, media, and site configuration. The vulnerability class is improper authorization (CWE-269 — Improper Privilege Management), allowing a lower-privileged authenticated user to escalate their access level without proper authorization checks.
The issue was introduced in version 2.0.0-RC1 with the addition of the ProfileController and specifically its putAction method. The ProfileController is responsible for allowing authenticated users to manage their own profile settings through the admin UI. The flaw lies in the fact that the API endpoint associated with this controller action did not sufficiently validate or restrict which permission-related fields a user could modify as part of their profile update.
The NVD description states: "Over the API it was possible for them to give themselves permissions to areas which they did not already had." This indicates that the putAction method accepted permission-related parameters without verifying that the authenticated user had the authority to grant themselves those permissions. In a properly secured system, permission/role assignment should only be modifiable by an administrator with the appropriate rights; however, in this case the profile update API did not enforce such restrictions, enabling any authenticated admin UI user (even with minimal access) to escalate their privilege to include permissions they were not entitled to hold.
The attack surface is the admin API. Since Sulu is a CMS, the admin panel is typically accessible over the network, and the API endpoints used by the admin UI accept HTTP requests that can be crafted by a client (e.g., via curl or a custom script) without necessarily using the standard UI. Because the vulnerability lies in an API endpoint rather than in a rendering function, exploitation does not require XSS or CSRF — the authenticated user can directly craft HTTP requests to the vulnerable endpoint and supply the permission-related fields they wish to grant themselves.
The vulnerability exists in all versions from 2.0.0-RC1 up to (but not including) 2.2.18, 2.3.x versions below 2.3.8, and versions below 2.4.0.
Exploitation Scenarios
No public PoC is available for this vulnerability; the attack chain described below is inferred from the vulnerability class and the details in the NVD description. Only the ProfileController and putAction names are taken directly from the description — no other implementation details are fabricated.
1) Reconnaissance / Target Identification
- An attacker begins by identifying a Sulu CMS instance. This can be done via fingerprinting (e.g., HTTP headers, admin panel paths, response signatures), searching for Sulu-specific routes, or using search engine/dorking techniques to find exposed admin UIs.
- The attacker needs a legitimate account with some access to the admin UI — even the lowest-privileged role (e.g., a content editor) is sufficient.
- The attacker authenticates to the Sulu admin panel and obtains a session token or API authentication credentials.
2) Triggering the Flaw
- The attacker crafts a direct HTTP request to the API endpoint associated with
ProfileController::putAction. This endpoint is conventionally used to update a user's profile settings (name, email, preferences, etc.). - Because the endpoint does not properly restrict which fields can be modified, the attacker includes additional permission-related fields in the request payload — fields that would normally grant specific admin rights, roles, or privileges.
- The server accepts the request and processes the permission fields without verifying that the authenticated user is authorized to grant themselves those permissions.
3) Payload / Execution Method (Vulnerability-Class Level)
- The request is a standard authenticated HTTP PUT/PATCH to the profile update API endpoint. The payload contains the attacker's user identifier and a set of parameters controlling permission/role assignments — parameters that the vulnerable endpoint fails to reject.
- The exact parameter names are not disclosed in the available data. The attack is purely a logic/authorization flaw; no code injection or memory corruption is involved.
4) Post-Exploitation Impact
- After the malicious request is processed, the attacker's account now holds elevated permissions across the Sulu admin panel — including areas they previously did not have access to (e.g., user management, system configuration, site administration).
- With elevated privileges, the attacker can further compromise the CMS: create or modify users, alter site content, modify templates/server-side configurations, potentially execute arbitrary PHP code (via template/theme editing) and achieve full remote code execution on the underlying web server.
- The attacker can also escalate to lateral movement within the infrastructure if the CMS accesses backend databases or other internal services with elevated credentials.
Impact Assessment
CVSS Score: 7.2 (High) — The vulnerability has a high severity rating. The vector indicates:
- Attack Vector: Network (AV:N) — remote exploitation is possible.
- Attack Complexity: Low (AC:L) — no special conditions are required.
- Privileges Required: Low (PR:L) — a valid low-privileged admin UI account is sufficient.
- User Interaction: None (UI:N) — no victim interaction is needed.
- Confidentiality / Integrity / Availability Impact: High (C:H/I:H/A:H) — full compromise of confidentiality, integrity, and availability.
Business Impact:
- Compromise of CMS integrity — an attacker can modify website content, inject malicious code, or deface the CMS.
- Data breach risk — elevated privileges allow access to user data, passwords (potential hash dumping), and sensitive site content.
- Full server takeover — in deployments where the CMS operates as a high-privilege service, privilege escalation can lead to complete host compromise.
- Supply chain risk — if the Sulu instance manages content for downstream consumers (e.g., public websites, partner portals), those consumers may be exposed to malicious or maliciously modified content.
Affected Systems: Any Sulu deployment running version 2.0.0-RC1 through 2.2.17, 2.3.x versions through 2.3.7, and versions below 2.4.0.
Blast Radius: The vulnerability affects all users with any access to the admin UI. The blast radius is therefore the entire CMS backend — all content, all data, all configuration — because a single low-privileged user can escalate to near-full control.
EPSS Score: 0.01134 (63.6th percentile) — This indicates that the vulnerability is in the high percentile of probability for exploitation in the wild, meaning there is meaningful likelihood of real-world exploitation attempts. However, no PoC is known publicly, and the CVE is not yet listed in CISA KEV.
Detection Guidance
The following detection rules target the anomalous behavior of a low-privileged user modifying permission-related fields through the ProfileController putAction endpoint, or the more general indicator of privilege escalation within the Sulu admin panel.
Sigma Rule
title: Sulu CMS - Privilege Escalation via ProfileController putAction
id: 8c4f2def-sulu-43835-001
status: experimental
description: Detects attempts to exploit CVE-2021-43835 by a user with low privileges attempting to grant themselves elevated permissions via the profile update API.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2021-43835
author: ValtersIT Threat Intelligence
date: 2024/01/15
logsource:
category: application
product: sulu
service: admin
detection:
selection:
http.method: ['PUT', 'PATCH', 'POST']
http.url.path|contains: 'profile'
http.response.status_code: 200
username:
- '*' # any user
filter_normal:
user.role: 'admin' # exclude normal admin privilege changes
condition: selection and not filter_normal
level: high
falsepositives:
- Legitimate admin users updating profile settings (rare, since admins typically use user management UI)
- Custom Sulu implementations that intentionally allow non-admin permission changes
tags:
- attack.privilege_escalation
- cve.2021-43835
- cwe.269
YARA Rule
rule Sulu_CVE_2021_43835_Profile_Permission_Escalation
{
meta:
author = "ValtersIT Threat Intelligence"
description = "Detects HTTP requests targeting Sulu ProfileController putAction with permission-granting parameters"
reference = "CVE-2021-43835"
date = "2024-01-15"
score = 60
strings:
$s1 = "putAction" ascii wide
$s2 = "/profile" ascii wide fullword
$s3 = "permissions" ascii wide nocase
$s4 = "role" ascii wide nocase
$s5 = "granted" ascii wide nocase
$s6 = "ProfileController" ascii wide nocase
condition:
(uint16(0) == 0x5A4D or uint16(0) == 0x7F45) and // PE or ELF - matches HTTP traffic logs or packets
any of ($s1, $s6) and any of ($s2, $s3, $s4, $s5)
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"CVE-2021-43835 Sulu ProfileController Privilege Escalation Attempt"; flow:established,to_server; content:"PUT"; http_method; content:"/profile"; http_uri; nocase; content:"permissions"; http_client_body; nocase; content:"role"; http_client_body; nocase; reference:cve,2021-43835; reference:url,nvd.nist.gov/vuln/detail/CVE-2021-43835; classtype:attempted-admin; sid:1000010; rev:1;)
Elastic Detection (EQL)
sequence by user.name with maxspan=5m
[ any where http.request.method in ("PUT", "PATCH", "POST") and
url.path like "*profile*" and
http.request.body.text like "*permissions*" ]
[ any where user.roles not in ("admin", "superadmin", "administrator") ]
Splunk SPL Query
index=web sourcetype=access_combined
| where method IN ("PUT", "PATCH", "POST")
| where uri_path LIKE "%profile%"
| where user != ""
| where NOT (user_role IN ("admin", "superadmin", "administrator") AND uri_path LIKE "%user%")
| eval is_privilege_field = if(_raw LIKE "%permissions%" OR _raw LIKE "%granted%" OR _raw LIKE "%role%", 1, 0)
| where is_privilege_field == 1
| stats count by clientip, user, uri_path, _time
| sort - _time
Wazuh OSSEC Rule
<group name="sulu,web,privesc,">
<rule id="100010" level="12">
<if_sid>31100</if_sid>
<match>PUT|PATCH|POST</match>
<regex>\/profile</regex>
<regex>permissions</regex>
<description>Sulu CVE-2021-43835: Possible privilege escalation attempt via ProfileController putAction.</description>
<mitre>
<id>T1068</id>
</mitre>
<group>privilege_escalation,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 2/4 (CLAIMED) — The vendor (Sulu CNA) claims patched versions exist, but this has not been independently confirmed by a second source. The patch locations are: 2.2.18, 2.3.8, and 2.4.0.
1) Immediate Mitigations
- Harden access to the admin panel: Restrict network access to the Sulu admin UI. If possible, place it behind a VPN or firewall with allowlisting so only trusted administrative IPs can reach it. This limits who can even attempt the attack.
- Audit existing users: Immediately review all existing Sulu admin accounts. Look for users who hold permissions beyond what their role should grant, and remove/revoke the extra permissions. Pay specific attention to any user whose role has changed recently.
- Monitor actively: Enable auditing and logging on the admin profile update API endpoint. Look for anomalous requests that include permission-related fields (e.g.,
permissions,role,granted). - Disable the ProfileController if the admin panel doesn't strictly require it (this is a temporary measure and may break legitimate profile management).
2) Patch / Upgrade Steps
- Upgrade to a patched version — the definitive fix:
- Upgrade Sulu to 2.2.18 (if using the 2.2.x line)
- Upgrade Sulu to 2.3.8 (if using the 2.3.x line)
- Upgrade Sulu to 2.4.0 (latest stable)
- Manual patch for unupgradable deployments: The only known workaround is to manually apply a patch to the
ProfileController— specifically theputActionmethod. The patch should enforce that only explicitly allowed fields (non-permission-related) can be modified, and any permission-related parameters are rejected unless the caller is a true administrator. - After applying the patch or upgrade, re-audit user permissions to ensure no unauthorized privilege grants have persisted.
3) Long-Term Hardening
- Enable Web Application Firewall (WAF) rules that block requests to admin APIs containing sensitive permission-related parameters from non-admin users.
- Adopt least-privilege models — ensure that admin UI accounts are only granted the minimal permissions required for their role.
- Regular security audits — periodically review all admin accounts, permission assignments, and audit logs for anomalies.
- Monitor vendor security advisories — subscribe to Sulu security announcements (https://github.com/sulu/sulu/security/advisories) to receive timely notifications of future vulnerabilities.
- Update to the latest version whenever new security patches are released, as the 2.4.0 version includes this fix and likely other security improvements.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2021-43835
- Sulu GitHub Advisory (if available): https://github.com/sulu/sulu/security/advisories
- Sulu Release Notes (patch versions): https://github.com/sulu/sulu/releases (2.2.18, 2.3.8, 2.4.0)
- MITRE ATT&CK — T1068 Exploitation for Privilege Escalation: https://attack.mitre.org/techniques/T1068/
- CWE-269 — Improper Privilege Management: https://cwe.mitre.org/data/definitions/269.html
Threat Actor Activity / Exploit-in-the-Wild: No known threat actor campaigns or exploit-in-the-wild evidence is available. No PoC is publicly known (POC_STATUS: None), and the CVE is not listed in CISA KEV. However, the EPSS score of 0.01134 (63.6th percentile) indicates a high relative likelihood of exploitation attempts, so proactive patching is strongly advised.
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.