Most malware programs for Windows are written in compiled programming languages like C or C++ and take the form of portable executable files such as .exe or .dll. Others use command-line scripting such as Windows batch or PowerShell.
It's rare to see client-side malware written in Web-based languages such as JavaScript, which are primarily intended to be interpreted by browsers. Yet the Windows Script Host, a service built into Windows, can natively execute .js and other scripting files out of the box.
Attackers have taken to this technique in recent months, with Microsoft warning about a spike in malicious email attachments containing JavaScript files back in April. Last month, security researchers from ESET warned of a wave of spam that distributes the Locky ransomware through .js attachments.
In both of those cases the JavaScript files were used as malware downloaders -- scripts designed to download and install a traditional malware program. In the case of RAA, however, the whole ransomware is written in JavaScript.
According to experts from tech support forum BleepingComputer.com, RAA relies on CryptoJS, a legitimate JavaScript library, to implement its encryption routine. The implementation appears to be solid, using the AES-256 encryption algorithm.
Once it encrypts a file, RAA adds a .locked extension to its original name. The ransomware targets the following file types: .doc, .xls, .rtf, .pdf, .dbf, .jpg, .dwg, .cdr, .psd, .cd, .mdb, .png, .lcd, .zip, .rar and .csv.
"At this point there is no way to decrypt the files for free," said Lawrence Abrams, the founder of BleepingComputer.com, in a blog post.
The RAA infections reported so far by users display the ransom note in Russian, but even if the threat only targets Russian-speaking users for now, it's only a matter of time until it's distributed more broadly and localized for other languages.
It is very uncommon for people to send legitimate applications written in JavaScript via email, so users should avoid opening this type of file, even if it's enclosed in a .zip archive. There are few reasons for .js files to exist outside websites and Web browsers in the first place.