CVE-2019-18956

9.8 CRITICAL

📋 TL;DR

This vulnerability allows unauthenticated remote attackers to execute arbitrary code on affected Divisa Proxia Suite systems via insecure Java deserialization of the proxia-error cookie. Attackers can craft malicious serialized payloads that get deserialized by the prepareError function, leading to complete system compromise. Affected products include Divisa Proxia Suite versions 9-10.1, SparkSpace 1.0-1.2, and Proxia PHR 1.0-1.1.

💻 Affected Systems

Products:
  • Divisa Proxia Suite
  • SparkSpace
  • Proxia PHR
  • Proxia Premium Edition 2017
Versions: Proxia Suite: 9 < 9.12.16, 9.11.19, 9.10.26, 9.9.8, 9.8.43, 9.7.10; 10.0 < 10.0.32; 10.1 < 10.1.5. SparkSpace: 1.0 < 1.0.30, 1.1 < 1.1.2, 1.2 < 1.2.4. Proxia PHR: 1.0 < 1.0.30, 1.1 < 1.1.2
Operating Systems: Any OS running Java
Default Config Vulnerable: ⚠️ Yes
Notes: All default configurations are vulnerable as the insecure deserialization occurs in every request handling.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system takeover with attacker gaining full control over the server, data exfiltration, lateral movement, and persistent backdoor installation.

🟠

Likely Case

Remote code execution leading to data theft, service disruption, and potential ransomware deployment.

🟢

If Mitigated

Attack blocked at network perimeter or detected before execution; limited to attempted exploitation logs.

🌐 Internet-Facing: HIGH - Unauthenticated exploit requiring only network access makes internet-facing instances extremely vulnerable.
🏢 Internal Only: HIGH - Even internally, any attacker with network access can exploit this without credentials.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: CONFIRMED
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploit requires crafting a malicious serialized Java object in the proxia-error cookie, which is trivial with available tools.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Proxia Suite: 9.12.16, 9.11.19, 9.10.26, 9.9.8, 9.8.43, 9.7.10, 10.0.32, 10.1.5. SparkSpace: 1.0.30, 1.1.2, 1.2.4. Proxia PHR: 1.0.30, 1.1.2

Vendor Advisory: https://github.com/blackarrowsec/advisories/tree/master/2019/CVE-2019-18956

Restart Required: Yes

Instructions:

1. Download patched versions from Divisa. 2. Backup current installation. 3. Stop the Proxia service. 4. Replace affected JAR files with patched versions. 5. Restart the service. 6. Verify fix by checking version.

🔧 Temporary Workarounds

Cookie Filtering

all

Configure web application firewall or reverse proxy to block or sanitize proxia-error cookie values.

# Example nginx config to block cookie
location / {
    proxy_set_header Cookie $http_cookie;
    if ($http_cookie ~* "proxia-error") {
        return 403;
    }
}

Network Segmentation

linux

Isolate affected systems from untrusted networks and implement strict firewall rules.

# Example iptables rule to restrict access
iptables -A INPUT -p tcp --dport [PROXIA_PORT] -s [TRUSTED_NETWORK] -j ACCEPT
iptables -A INPUT -p tcp --dport [PROXIA_PORT] -j DROP

🧯 If You Can't Patch

  • Implement strict network access controls to limit exposure to trusted IPs only.
  • Deploy web application firewall with rules to detect and block malicious serialized payloads in cookies.

🔍 How to Verify

Check if Vulnerable:

Check application version against affected ranges. Monitor for proxia-error cookie containing serialized Java objects in requests.

Check Version:

Check application documentation or web interface for version information. For Linux: grep -r 'version' /path/to/proxia/installation/

Verify Fix Applied:

Verify application version is patched. Test with safe serialized payload to confirm deserialization is now properly validated.

📡 Detection & Monitoring

Log Indicators:

  • Unusual Java deserialization errors
  • Requests with large or binary data in proxia-error cookie
  • Unexpected process execution from Proxia service

Network Indicators:

  • HTTP requests containing serialized Java objects in proxia-error cookie
  • Outbound connections from Proxia server to unknown IPs

SIEM Query:

source="proxia_logs" AND (cookie="*proxia-error*" AND (content="*rO0AB*" OR content="*ACED*"))

🔗 References

📤 Share & Export