CVE-2024-4447

9.9 CRITICAL

📋 TL;DR

This vulnerability exposes sensitive session and user data through Direct Web Remoting API endpoints, allowing authenticated administrators to obtain session IDs and impersonate other users. It also includes privilege escalation through permission modification endpoints. Affected systems are dotCMS installations with vulnerable versions.

💻 Affected Systems

Products:
  • dotCMS
Versions: Versions before 24.07.12, 23.01.20 LTS, 23.10.24v13 LTS, and 24.04.24v5 LTS
Operating Systems: All platforms running dotCMS
Default Config Vulnerable: ⚠️ Yes
Notes: Requires administrator-level authentication to exploit, but multiple DWR endpoints are affected beyond the original session ID exposure.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Malicious administrator escalates privileges, modifies all role permissions, impersonates any user, and obfuscates audit trails, leading to complete system compromise and data exfiltration.

🟠

Likely Case

Administrator with legitimate access abuses exposed session IDs to impersonate other users or accesses sensitive user/role information they shouldn't have access to.

🟢

If Mitigated

With proper access controls and monitoring, impact is limited to authorized administrators accessing information they already have legitimate need for.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated administrator access but involves simple API calls to exposed DWR endpoints.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 24.07.12, 23.01.20 LTS, 23.10.24v13 LTS, or 24.04.24v5 LTS

Vendor Advisory: https://www.dotcms.com/security/SI-72

Restart Required: Yes

Instructions:

1. Backup your dotCMS instance. 2. Download and apply the appropriate patch version for your release track. 3. Restart the dotCMS application server. 4. Verify the fix by checking version and testing affected endpoints.

🔧 Temporary Workarounds

Restrict DWR endpoint access

all

Configure web application firewall or reverse proxy to block access to vulnerable DWR endpoints

# Example nginx location block:
location ~* \.dwr$ {
    deny all;
    return 403;
}

Implement strict access controls

all

Review and restrict administrator privileges, especially 'Sign In As' capabilities

🧯 If You Can't Patch

  • Implement network segmentation to isolate dotCMS from sensitive systems
  • Enable detailed logging and monitoring of all DWR endpoint access and administrator activities

🔍 How to Verify

Check if Vulnerable:

Check dotCMS version against affected versions. Test if authenticated admin can access /api/dwr/UserSessionAjax.getSessionList.dwr and retrieve session IDs.

Check Version:

Check dotCMS admin panel or examine dotCMS/WEB-INF/lib/dotcms_*.jar version

Verify Fix Applied:

After patching, verify version is updated and test that DWR endpoints no longer expose sensitive session/user data to unauthorized administrators.

📡 Detection & Monitoring

Log Indicators:

  • Unusual DWR endpoint access patterns
  • Multiple user impersonation events
  • Role permission modifications from unexpected administrators

Network Indicators:

  • HTTP requests to *.dwr endpoints with sensitive parameter names
  • Unusual API token generation patterns

SIEM Query:

source="dotcms" AND (uri="*.dwr" OR method="POST" AND uri CONTAINS "ajax") AND (user_agent!="browser" OR referer="")

🔗 References

📤 Share & Export