The stable channel of Node.js has been updated to version 0.12.6. The latest version of the platform fixes a vulnerability that can be exploited for denial-of-service (DoS) attacks.
The vulnerability, which impacts all Buffer to String conversions, is caused by an out-of-band write in V8’s utf-8 decoder.
“This is an important security update as this bug can be used to cause a denial of service attack,” the developers wrote in the release notes.
Last month, the Node 0.10.39 maintenance release was made available to upgrade OpenSSL to version 1.0.1o. The OpenSSL updates addresses several vulnerabilities, including two issues that affect Node.js.
One of the OpenSSL issues impacting Node.js is Logjam, a bug that can be leveraged via man-in-the-middle (MitM) attacks to downgrade TLS connections to 512-bit export-grade cryptography. The second issue is a DoS vulnerability caused by the way ECParameters structures are handled (CVE-2015-1788).
Node.js is an asynchronous event-driven framework designed for building scalable network applications. The platform has been used by some of the world’s largest enterprise solutions vendors, including IBM, Amazon, Microsoft, Oracle, and CA Technologies.
The use of an event-driven, non-blocking I/O model makes Node.js a lightweight and efficient platform that is ideal for data-intensive real-time applications that run across distributed devices. However, the use of a single-threaded event loop means that Node.js is not recommended for CPU intensive applications and ones that involve heavy lifting.
In a presentation at the recent Infosecurity Europe conference, Helen Bravo, head of product management at Checkmarx, explained that the single thread architecture makes Node.js highly vulnerable to DoS attacks.
In addition, Node.js is also vulnerable to a type of attack known as regular expression denial-of-service (ReDoS), which exploits the fact that regular expression implementations can encounter situations that cause them to work very slowly.
ReDoS attacks against Node.js applications are possible when input length, structure, and permitted characters are not properly validated.
Input validation is also essential for protecting Node.js applications against SQL injection attacks, Bravo noted.