Lodash versions 0.5.0 and 0.5.1 represent incremental improvements to a popular JavaScript utility library, serving as a drop-in replacement for Underscore.js while prioritizing performance, bug fixes, and expanded functionality. Both versions, authored by John-David Dalton and hosted on GitHub, offer developers a comprehensive toolkit for simplifying common programming tasks, such as array manipulation, object handling, and function binding.
The key difference lies in the subtle enhancements introduced in version 0.5.1, released just a day after 0.5.0. While the core functionality remains largely the same, the newer version likely incorporates bug fixes, performance tweaks, or minor feature additions that refine the developer experience. For those already using Lodash, upgrading to 0.5.1 is advisable to benefit from these improvements.
Developers choosing between the two should opt for the latest version (0.5.1) unless specific compatibility concerns dictate otherwise. Lodash, in general, offers a wealth of utilities that streamline JavaScript development, promote code readability, and reduce the need for writing repetitive code. Its consistent API and focus on performance make it a valuable asset for projects of all sizes, from small web applications to large-scale enterprise solutions. The library's availability on npm makes installation and integration simple, further contributing to its widespread adoption within the JavaScript ecosystem.
All the vulnerabilities related to the version 0.5.1 of the package
Prototype Pollution in lodash
Versions of lodash
before 4.17.12 are vulnerable to Prototype Pollution. The function defaultsDeep
allows a malicious user to modify the prototype of Object
via {constructor: {prototype: {...}}}
causing the addition or modification of an existing property that will exist on all objects.
Update to version 4.17.12 or later.
Prototype Pollution in lodash
Versions of lodash
before 4.17.5 are vulnerable to prototype pollution.
The vulnerable functions are 'defaultsDeep', 'merge', and 'mergeWith' which allow a malicious user to modify the prototype of Object
via __proto__
causing the addition or modification of an existing property that will exist on all objects.
Update to version 4.17.5 or later.
Prototype Pollution in lodash
Versions of lodash
before 4.17.11 are vulnerable to prototype pollution.
The vulnerable functions are 'defaultsDeep', 'merge', and 'mergeWith' which allow a malicious user to modify the prototype of Object
via {constructor: {prototype: {...}}}
causing the addition or modification of an existing property that will exist on all objects.
Update to version 4.17.11 or later.
Regular Expression Denial of Service (ReDoS) in lodash
lodash prior to 4.7.11 is affected by: CWE-400: Uncontrolled Resource Consumption. The impact is: Denial of service. The component is: Date handler. The attack vector is: Attacker provides very long strings, which the library attempts to match using a regular expression. The fixed version is: 4.7.11.
Regular Expression Denial of Service (ReDoS) in lodash
All versions of package lodash prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the toNumber
, trim
and trimEnd
functions.
Steps to reproduce (provided by reporter Liyuan Chen):
var lo = require('lodash');
function build_blank(n) {
var ret = "1"
for (var i = 0; i < n; i++) {
ret += " "
}
return ret + "1";
}
var s = build_blank(50000) var time0 = Date.now();
lo.trim(s)
var time_cost0 = Date.now() - time0;
console.log("time_cost0: " + time_cost0);
var time1 = Date.now();
lo.toNumber(s) var time_cost1 = Date.now() - time1;
console.log("time_cost1: " + time_cost1);
var time2 = Date.now();
lo.trimEnd(s);
var time_cost2 = Date.now() - time2;
console.log("time_cost2: " + time_cost2);
Command Injection in lodash
lodash
versions prior to 4.17.21 are vulnerable to Command Injection via the template function.