May Vulnerability of the Month: Java Deserialization Everywhere
Every month, we ask our researchers to nominate a vulnerability of the month. Novelty, sophistication or just plain weirdness are some of the potential criteria for selecting a vulnerability of the month. After the nominations are collected, the candidates are shortlisted and voted on by our 70-plus-member research organization, combining the total experience and knowledge of Tenable Research to identify the vulnerability of the month.
Background
On the heels of a failed patch to another Java deserialization vulnerability in Oracle WebLogic Servers, the research team voted to highlight a Red Hat JBoss vulnerability this month. CVE-2017-12149 is another remote code execution (RCE) vulnerability with a 9.8 CVSS3 score. This vulnerability allows an unauthenticated attacker to execute arbitrary code on a remote host. It affects JBoss Enterprise Application Platform (EAP) 5 deployed on Red Hat Linux.
What makes this the vulnerability of the month?
Attacks leveraging Java deserialization vulnerabilities are becoming a common target for attackers. Serialization is a technique used to translate an object into a binary format that can be easily stored. The reverse process is called deserialization. The problem is that applications frequently fail to validate the data obtained from an untrusted source before trying to deserialize it. This can allow attackers to execute arbitrary code and trigger server side command execution. The issue is listed as “Deserialization of Untrusted Data” in Mitre’s Common Weakness Enumeration database.
Vulnerability details
In Jboss EAP 5, attackers can achieve RCE because of weak HTTP input validation implemented before deserialization process execution. This vulnerability (CVE-2017-12149) allows usage of unsafe classes from "functor" package provided by Apache Commons Collection Library 3.X < 3.2.2 / 4.X < 4.1 (CVE-2015-7501). The vulnerable version of the library is shipped by default with Jboss EAP 5.
Unfortunately, the combination above is not the only one that can be used to conduct this type of attack. Attackers can also try to utilize “property-oriented programming” (POP) to build custom malicious objects chains. These objects chains are composed of code snippets that can be used to manipulate the properties of an object to trigger the RCE by using unsafe classes from the target application. That’s why serialized objects validation is such a challenging task.
In addition, tools like ysoserial make it trivial to utilize well-known objects chains to exploit deserialization vulnerabilities in web servers and applications, increasing the exposed attack surface.
JBoss EAP 5 is affected by this Java deserialization vulnerability due to a flaw in the doFilter method of the ReadOnlyAccessFilter class. A remote attacker could exploit this flaw with a crafted serialized object passed via HTTP request to execute arbitrary code on the host.
Anyone running JBoss EAP 5 with publicly accessible http-invoker.sar component could be impacted by the issue. JBoss EAP 6 and 7 do not provide the HTTP invoker so they’re not affected.
Additional resources
- Nessus Plugin ID: 109321
- Critical Oracle WebLogic Server Flaw Still Not Patched
- Mitigation options provided by Red Hat
- Learn more about Tenable.io, the first Cyber Exposure platform for holistic management of your modern attack surface
- Get a free 60-day trial of Tenable.io Vulnerability Management