Researcher: JavaScript Attacks Get Slicker

Researcher: JavaScript Attacks Get Slicker

Written By
Lisa Vaas
Lisa Vaas
Apr 18, 2007
4 minute read
eWeek content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

VANCOUVER, British Columbia—Malicious JavaScript is getting smarter. Its now able to fingerprint victims Web browsers, vulnerable components and accessible CLSIDs, and deliver custom-tailored exploits, according to Dr. Jose Nazario, senior security engineer for Arbor Networks.

Nazario was referring to NeoSploit, a new malware tool hes seen in the wild that carries at least seven distinct exploits to infect a PC with, from which it can choose based on what that PCs weak points are.

“Were seeing a lot of this in the past several months, a lot of malicious JavaScript [at] large,” he said. “People are getting more defensive and offensive with JavaScript.”

Nazario was speaking at his session on reverse-engineering JavaScript malware on April 18 here at the CanSecWest security show. What he meant by saying that attackers are using JavaScript more defensively is that researchers are increasingly finding exploit code thats using more sophisticated means to obfuscate itself so that security systems wont pick up on exploits.

Malicious JavaScript delivers browser exploits by, for example, using adodb.Stream() or setSlice() objects, often dropping ActiveX/VBScript content in order to download malware onto a system. Obfuscated JavaScript in its simplest form uses opaque code to thwart static code review and thereby hide its authors methods and intents. The obfuscation can range from simple ASCII chr() or ord() techniques to Base64 encoding or use of a tool such as iWebTool HTML Encrypt to hide HTML or to string splits or joins to build an AJAX object.

On the simple end, for example, a string split would render a word like this:

Daxhi=”A”+pplica”+”tion”;

Vvu=”.”;

This resulting malicious code, of which the above is a small portion, would be easily detected by a human, but, as Nazario pointed out, it presents an effective stumbling block for automated detection.

Attackers also use double obfuscation, Nazario said. On top of simple joins or splits or single encoding, they use double encoding, often with a custom decoder. While several people like to use the browser to decode such exploits, Nazario said its a bad idea, as the technique is too slow to get full information from a browser under zero-day conditions.

A better idea, he said, is to divorce the JavaScript engine from the browser with a tool such as NJS—an independent implementation of the JavaScript language developed by Netscape and standardized by the ECMA, and designed to be re-entrant, extensible, fast and programmable. Other decoding tools include SpiderMonkey, a JavaScript-C engine from the Mozilla Foundation, and Rhino, an open-source implementation of JavaScript written entirely in Java.

As Nazario described it, reverse-engineering double-decode malware essentially entails cleaning up the HTML and decoding on the command line. This results in code that still requires decoding, so the process is to repeat until the code is no longer encoded.

However, “Life isnt always this easy,” Nazario said. “There are lots of defensive JavaScript [code samples] coming around that kill all sorts of inspection routines.”

For example, because NJS doesnt know about “arguments,” attackers have used “arguments.callee” to make their code tamper-proof. Callee is a property of arguments as a local variable available within all function objects that allows anonymous functions to refer to themselves. Thats necessary for writing recursive strings, which, when executed, cause an endless loop and throw a monkey wrench into reverse engineering.

/zimages/2/28571.gifFor advice on how to secure your network and applications, as well as the latest security news, visit Ziff Davis InternetsSecurity IT Hub.

Enter SpiderMonkey, Nazario said. Because SpiderMonkey will choke on certain functions such as alert() or print(), its impervious to attackers use of those functions to mess with decoding efforts. Once it chokes, a researcher doing reverse engineering can use another language, such as Python.

In short, as attackers increasingly use JavaScript as a delivery vehicle for malware, Nazario suggested, one of the first steps in defense should be to learn JavaScript and to learn how to love it—not a hard task, given that its a relatively easy language, he said.

On the up side, attackers using JavaScript are currently limited by the fact that the language has to be decoded to be used by a browser. Also, the tools attackers are using to obfuscate their code and its intent are primitive. But, given that you need a human to analyze the code, those primitive tools are still effective, Nazario said.

At any rate, JavaScript malware is just taking its baby steps. “Theyll continue to push the envelope,” Nazario said—in other words, we can likely look forward to seeing Malware 2.0 rise to meet the much-ballyhooed Web 2.0.

Check out eWEEK.coms Security Center for the latest security news, reviews and analysis. And for insights on security coverage around the Web, take a look at eWEEKs Security Watch blog.

eWeek Logo

eWeek has the latest technology news and analysis, buying guides, and product reviews for IT professionals and technology buyers. The site's focus is on innovative solutions and covering in-depth technical content. eWeek stays on the cutting edge of technology news and IT trends through interviews and expert analysis. Gain insight from top innovators and thought leaders in the fields of IT, business, enterprise software, startups, and more.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.