CVE-2026-3967 Overview
A critical insecure deserialization vulnerability has been identified in Alfresco Activiti, affecting versions up to 7.19 and 8.8.0. The vulnerability exists in the Process Variable Serialization System, specifically within the deserialize and createObjectInputStream functions located in the file activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/variable/SerializableType.java. This flaw allows remote attackers to exploit deserialization weaknesses, potentially leading to unauthorized code execution or data manipulation.
Critical Impact
Remote exploitation is possible. An exploit has been publicly disclosed and may be actively used by threat actors. The vendor was contacted but did not respond to the disclosure.
Affected Products
- Alfresco Activiti versions up to 7.19
- Alfresco Activiti version 8.8.0
- Alfresco Activiti Process Variable Serialization System component
Discovery Timeline
- 2026-03-12 - CVE-2026-3967 published to NVD
- 2026-03-12 - Last updated in NVD database
Technical Details for CVE-2026-3967
Vulnerability Analysis
This vulnerability is classified as an insecure deserialization issue (CWE-20: Improper Input Validation). The flaw resides in how Alfresco Activiti handles the deserialization of process variables through its serialization system. When untrusted data is passed to the deserialize or createObjectInputStream methods without proper validation, an attacker can craft malicious serialized objects that execute arbitrary code upon deserialization.
The network-accessible nature of this vulnerability means that attackers can remotely target affected Activiti instances without requiring physical access. The attack requires low privileges, making it accessible to authenticated users with minimal permissions within the system.
Root Cause
The root cause of this vulnerability lies in the improper validation of serialized data within the SerializableType.java class. The createObjectInputStream function does not adequately filter or validate the classes being deserialized, allowing attackers to inject malicious object graphs. When these objects are deserialized by the deserialize function, they can trigger dangerous operations such as executing system commands, accessing sensitive files, or establishing reverse shells.
Java deserialization vulnerabilities of this type are well-documented and commonly exploited using gadget chains from popular libraries present in the application's classpath. Attackers can leverage tools like ysoserial to generate payloads targeting common libraries.
Attack Vector
The attack vector is network-based, allowing remote exploitation by authenticated users with low privileges. An attacker can craft a malicious serialized Java object and submit it as a process variable value to the Activiti engine. When the engine processes this variable and deserializes the data, the malicious payload executes within the context of the application server.
The exploitation process typically involves:
- Identifying a target Activiti instance accessible over the network
- Authenticating with minimal user privileges
- Crafting a malicious serialized object payload targeting available gadget chains
- Submitting the payload as a process variable through the Activiti API
- Triggering the deserialization to execute the malicious code
For technical details and proof-of-concept information, refer to the GitHub Issue Report.
Detection Methods for CVE-2026-3967
Indicators of Compromise
- Unusual serialized Java objects appearing in process variable data or API requests
- Unexpected outbound network connections from the Activiti application server
- Anomalous process spawning or command execution from the Java process running Activiti
- Log entries indicating deserialization errors or class loading of unexpected classes
Detection Strategies
- Monitor Activiti API endpoints for requests containing serialized Java object data with suspicious class references
- Implement Java deserialization attack detection using security tools that can identify known gadget chain patterns
- Enable verbose logging for the SerializableType.java component to capture deserialization activities
- Deploy network intrusion detection rules targeting common Java serialization magic bytes (0xAC 0xED)
Monitoring Recommendations
- Review Activiti process variable submissions for anomalous patterns or unexpected data types
- Monitor system calls and process creation events from the Activiti server process
- Implement file integrity monitoring on critical system directories to detect post-exploitation activity
- Set up alerts for authentication events followed by process variable API calls from newly authenticated sessions
How to Mitigate CVE-2026-3967
Immediate Actions Required
- Restrict network access to Activiti instances to trusted networks and users only
- Review and limit user privileges to minimize the attack surface from authenticated users
- Consider disabling the serializable variable type if not required by your workflows
- Implement a Web Application Firewall (WAF) with rules to detect Java deserialization attacks
Patch Information
As of the last update, the vendor (Alfresco) was contacted about this vulnerability but did not respond. No official patch has been confirmed. Organizations should monitor the VulDB entry and official Alfresco security advisories for patch availability. Users are advised to implement the workarounds below until an official fix is released.
Workarounds
- Implement serialization filtering using Java's built-in ObjectInputFilter (available in Java 9+) to whitelist allowed classes during deserialization
- Deploy a Java agent such as NotSoSerial or contrast-rO0 to block known dangerous deserialization gadget chains
- Isolate Activiti instances in network segments with strict egress filtering to limit post-exploitation impact
- Consider replacing serializable process variables with JSON-based alternatives where possible
# Configuration example - Java serialization filter (Java 9+)
# Add to JVM startup arguments for Activiti
-Djdk.serialFilter=!org.apache.commons.collections.*;!org.apache.xalan.*;!javax.management.*;java.**;org.activiti.**
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


