Description
redis-parser through 3.0.0 fails to validate the multi-bulk length value in RESP protocol parsing, allowing attackers to trigger an uncaught RangeError by supplying an excessively large declared length. A malicious or compromised Redis endpoint can deliver a crafted RESP header with a length above 2^32-1 to crash the Node.js client process.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| NodeRedis | redis-parser | ≤ 3.0.0 | — |
References
- GitHub Issue #65 issue-tracking
- https://github.com/NodeRedis/node-redis-parser/blob/4c2d31c8717f05dea1ffd91a0e45d68f452c73bd/lib/parser.js#L212 technical-description
- https://github.com/NodeRedis/node-redis-parser/blob/4c2d31c8717f05dea1ffd91a0e45d68f452c73bd/lib/parser.js#L108-L122 technical-description
- https://github.com/NodeRedis/node-redis-parser/blob/4c2d31c8717f05dea1ffd91a0e45d68f452c73bd/lib/parser.js#L492-L550 technical-description
- https://github.com/NodeRedis/node-redis-parser/issues/47 issue-tracking
- https://github.com/NodeRedis/node-redis-parser product
- VulnCheck Advisory: redis-parser through 3.0.0 Denial of Service via Invalid Array Length third-party-advisory