Uninitialized Memory Exposure Affecting mysql package, versions <2.14.0
Threat Intelligence
Do your applications use this vulnerable package?
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applications- Snyk ID npm:mysql:20170317
- published 8 Aug 2017
- disclosed 16 Mar 2017
- credit ChALkeR
How to fix?
Upgrade mysql
to version 2.14.0 or higher.
Note This is vulnerable only for Node <=4
Overview
mysql
is a node.js driver for mysql.
Affected versions of the package are vulnerable due to the unsafe use of the Buffer()
method. Uninitialized memory may be exposed when a value of type number
is provided to various methods in mysql
which require allocation of buffers and results in concatenation of uninitialized memory to the buffer collection.
This vulnerability is unlikely to be exploited, but may be possible if a server-side mysql
accepts typed input for passwords from the client even though the user doesn’t control the server-side code (i.e through JSON format).
Details
Constructing a Buffer
class with integer N
creates a Buffer
of length N
with raw (not "zero-ed") memory.
In the following example, the first call would allocate 100 bytes of memory, while the second example will allocate the memory needed for the string "100":
// uninitialized Buffer of length 100
x = new Buffer(100);
// initialized Buffer with value of '100'
x = new Buffer('100');
You can read more about the insecure Buffer
behavior on our blog.
Similar vulnerabilities were discovered in request, mongoose, ws and sequelize.