- Feb 4, 2016
- 2,520
JavaScript web apps and web servers are susceptible to a specific type of vulnerabilities/attacks known as regular expression (regex) denial of service (ReDoS).
These vulnerabilities take place when an attacker sends large and complex pieces of text to the open input of a JavaScript-based web server or app.
If the server component or an app library is not specifically designed to handle various edge cases, the attacker's input can end up blocking the entire app or server for seconds or minutes at a time, while the server analyzes and pattern-matches the input.
Various programming languages and web server technologies have similar issues with the performance of pattern matching operations and ReDoS attacks, but they are vastly exaggerated in the case of JavaScript because of the single-threaded execution model of most JavaScript servers, where every request is handled by the same thread.
When a ReDoS attack hits, this ends up clogging the entire server, rather than slowing down one particular operation.
ReDoS attacks known since 2012, but gaining momentum
ReDoS attacks in the case of JavaScript servers were first detailed in a research paper published in 2012, but back then, JavaScript, and Node.js, in particular, weren't the behemoth they are today on the web development scene, hence, this particular issue went largely ignored for another half of decade.
Subsequent research published in 2017 revealed that 5% of the total vulnerabilities found in Node.js libraries and applications were ReDoS vulnerabilities.
But according to research presented at a security conference last week, the ReDoS issue is gaining momentum in the JavaScript community because it has been left unaddressed for so many years.
...
....