While researchers had identified a Java 7 security-settings bug exploited in the attack, they've since found that it's chained together with a second vulnerability. "Most of the online analysis talks about one vulnerability, where we saw two vulnerabilities being exploited to achieve full execution on a target," according to a blog post from Esteban Guillardoy, who's a Python developer and security researcher working for information security firm Immunity.
"The first bug was used to get a reference to sun.awt.SunToolkit class that is restricted to applets, while the second bug invokes the getField public static method on SunToolkit using reflection, with a trusted immediate caller bypassing a security check." He said the two bugs had to be chained together to create a working exploit. He also noted that the "getField" Java bug was introduced with Java 7.0-- which debuted on July 28, 2011--and suggested that a foreign nation state, or states, may have been "enjoying it non-stop for quite some time now."
"The beauty of this bug class is that it provides 100% reliability and is multiplatform," he said. "Hence this will shortly become the penetration test Swiss knife for the next couple of years."
[ Could an international 'cyber arms' agreement forestall U.S. cyber warfare with China and other countries? See The Case For A Cyber Arms Treaty. ]
Researchers said the related zero-day attack appears to have been launched from servers in China, and that it's being used to deliver the Poison Ivy remote-access toolkit (RAT) onto infected systems. According to a heatmap of related Poison Ivy infections released by Kaspersky Lab, the greatest number of related infections have been seen in China, followed by Russia.
The discovery of the Java 7 vulnerabilities has led numerous security experts to recommend that enterprises disable Java in browsers. US-CERT Tuesday released a security alert noting that "disabling the Java browser plug-in may prevent a malicious webpage from exploiting this vulnerability." In addition, for Firefox users, it said that "using the ... NoScript extension to whitelist websites that can run scripts and access installed plug-ins will mitigate this vulnerability."
Users of systems targeted by the exploit likely wouldn't notice the attack. "It does not crash browsers, the landing page looks like a blank page, sometimes one may see a flash of a rotating Java logo and the word 'Loading,'" according to an analysis published by Andre' M. DiMino and Mila Parkour at DeepEnd Research.
To help identify vulnerable systems, both Rapid7 and Zscaler are offering free online tools which will review a user's system for the presence of vulnerable Java code. Zscaler also offers a guide to disabling Java in Chrome, Firefox, and Internet Explorer. While the vulnerability affects Windows, Apple OS X, and Linux systems, most Mac users will be protected, since Java 6--not Java 7--is installed on OS X by default, although Java 7 can be added manually.
Oracle releases patches on a quarterly cycle, and its next bug fix isn't due until October. But DeepEnd Research Tuesday began offering its own patch for the vulnerability, though it must be requested directly from the company, which said it's restricting distribution "not to preserve the code but limit it to IT administrators and developers who can test and decide if they want to deploy." In other words, it's a temporary fix, and may break existing systems. "We do not want to push/offer it to 3 billion end Java users, it wasn't tested in all the possible scenarios and systems," said DiMino and Parkour in a blog post.
Whoever built this zero-day attack was extremely skilled in Java programming. "At this moment exploiting [these] vulnerabilities is not hard, in fact the PoC that was released is almost a fully working exploit and with a just few changes, setting a different payload instead of popping up a calculator, you have everything you need," Guillardoy told Threatpost. "However finding these vulnerabilities and [using] them in a useful way is a much harder task that requires a wide knowledge of the Java JDK/JRE codebase and deep understanding of the Java security architecture."
But FireEye's initial disclosure of the zero-day attack, followed by detailed analyses from other researchers, has led to criticism that the exploit was irresponsibly disclosed. "The Java 0day activity that we have been monitoring and preventing for almost the past week has been irresponsibly reported on other blogs, with early posts publicly linking to known sites serving the 0day," said Kurt Baumgartner, a security researcher at Kaspersky Lab, in a blog post.
"Would you encourage folks to walk down a mugger's dark alley with no protection or would you work to communicate the muggers' whereabouts to the right folks and work on lighting the alley or giving better directions? Would you provide muggers with some new weapons that they haven't considered? The efforts this time around seem misplaced," he said.
On the other hand, the bug was already being actively exploited by attackers, and researchers reported that numerous antivirus tools--including from McAfee and Symantec--weren't spotting or stopping the threat. Accordingly, did Kaspersky err by spotting the vulnerability, but failing to disclose it publicly?
Cybercriminals are taking aim at your website. Is your security strategy up to the challenge? Also in the new, all-digital 10 Steps To E-Commerce Security special issue of Dark Reading: About half of the traffic to e-commerce sites is machine generated--and much of it is malicious. (Free registration required.)