Skip links

Apache says Struts 2 security bug wasn’t fully fixed in 2020

Apache has taken another shot at fixing a critical remote code execution vulnerability in its Struts 2 framework for Java applications – because the first patch, issued in 2020, didn’t fully do the trick.

The security flaw exists in Struts versions 2.0.0 to 2.5.29, and an attacker could exploit it to gain control of a vulnerable system.

Uncle Sam’s CISA has urged organizations to upgrade to a patched version, eg 2.5.30, as soon as possible.

Struts is widely used, and this new-old security flaw is similar to the OGNL injection bug that was abused in the massive Equifax breach in 2017. 

Object-Graph Navigation Language (OGNL) is an expression language for Java that allows programmers to, among other things, set and get Java object properties. As security firm Qualys warned last year, “being able to create properties and change the code execution, it’s prone to critical security flaws.”

Back in December 2020, bug hunters Alvaro Munoz of GitHub and Masato Anzai of Aeye Security Lab discovered an OGNL injection vulnerability in Struts 2, tracked as CVE-2020-17530, which received a 9.8 out of 10 in terms of CVSS severity. 

The patch for that oversight was not complete, it now turns out. This week we learned that if an application performs forced OGNL evaluation, using the %{...} syntax, it is still possible for double evaluation to occur from malicious user input, leading to exploitation. In other words, the patched bug could still be abused by carefully crafted attacker-supplied data to hijack a vulnerable system.

“Using forced OGNL evaluation on untrusted user input can lead to a remote code execution and security degradation,” Apache noted in its security bulletin, both in 2020 and now.

Back then, Apache advised developers to avoid using forced OGNL evaluation on untrusted user input and also to upgrade to Struts 2.5.26, which the software foundation said will check expression evaluation to ensure it won’t lead to double trouble.

More recently, Chris McCown discovered the fix for CVE-2020-17530 was incomplete. As a result, once again Apache has sounded the upgrade-Struts-now alarm. 

Java bugs keep on coming

The Struts vulnerability comes on the heels of other Java flaws. 

Late last month, VMware threat researchers discovered an RCE vulnerability in the Java-based Spring Framework, and almost immediately attackers began taking advantage of the bug. Check Point analysts saw about 37,000 exploitation attempts in the first weekend alone, and said about 16 percent of organizations around the globe were impacted by the programming blunder. 

More recently, Trend Micro researchers said criminals are exploiting the vuln to run Mirai botnet malware.

Meanwhile, Palo Alto Networks’ Unit42 security analysts wrote that they expect the Spring bug, dubbed Spring4Shell, to “become fully weaponized and abused on a larger scale,” because exploitation of the flaw is “straightforward and all the relevant technical details have already gone viral on the internet.”

A large number of organizations are still struggling to patch the Log4j vulnerability in the extensively used Apache logging library. The flaw was discovered late last year, and as of March miscreants were still exploiting the hole to install backdoors and crypto-mining malware.

According to Qualys, nearly 1 million exploitation attempts were made in 72 hours following the Log4j vulnerability disclosure in December 2021. Two months later, 30 percent of Log4j instances apparently remained vulnerable to attack. ®