During some analysis today on npm's node-tar package I came across the folder creation process, Basicly if you provide node-tar with a path like this ./a/b/c/foo.txt it would create every folder and sub-folder here a, b and c until it reaches the last folder to create foo.txt, In-this case I noticed that there's no validation at all on the amount of folders being created, that said we're actually able to CPU and memory consume the system running node-tar and even crash the nodejs client within few seconds of running it using a path with too many sub-folders inside
Steps To Reproduce:
You can reproduce this issue by downloading the tar file I provided in the resources and using node-tar to extract it, you should get the same behavior as the video
Denial of service by crashing the nodejs client when attempting to parse a tar archive, make it run out of heap memory and consuming server CPU and memory resources
This PR contains the following updates:
^4.4.19
->^6.0.0
GitHub Vulnerability Alerts
CVE-2024-28863
Description:
During some analysis today on npm's
node-tar
package I came across the folder creation process, Basicly if you provide node-tar with a path like this./a/b/c/foo.txt
it would create every folder and sub-folder here a, b and c until it reaches the last folder to createfoo.txt
, In-this case I noticed that there's no validation at all on the amount of folders being created, that said we're actually able to CPU and memory consume the system running node-tar and even crash the nodejs client within few seconds of running it using a path with too many sub-folders insideSteps To Reproduce:
You can reproduce this issue by downloading the tar file I provided in the resources and using node-tar to extract it, you should get the same behavior as the video
Proof Of Concept:
Here's a video show-casing the exploit:
Impact
Denial of service by crashing the nodejs client when attempting to parse a tar archive, make it run out of heap memory and consuming server CPU and memory resources
Report resources
payload.txt archeive.tar.gz
Note
This report was originally reported to GitHub bug bounty program, they asked me to report it to you a month ago
Release Notes
isaacs/node-tar (tar)
### [`v6.2.1`](https://togithub.com/isaacs/node-tar/compare/v6.2.0...v6.2.1) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.2.0...v6.2.1) ### [`v6.2.0`](https://togithub.com/isaacs/node-tar/compare/v6.1.15...v6.2.0) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.15...v6.2.0) ### [`v6.1.15`](https://togithub.com/isaacs/node-tar/compare/v6.1.14...v6.1.15) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.14...v6.1.15) ### [`v6.1.14`](https://togithub.com/isaacs/node-tar/compare/v6.1.13...v6.1.14) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.13...v6.1.14) ### [`v6.1.13`](https://togithub.com/isaacs/node-tar/blob/HEAD/CHANGELOG.md#6113-2022-12-07) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.12...v6.1.13) ##### Dependencies - [`cc4e0dd`](https://togithub.com/npm/node-tar/commit/cc4e0ddfe523a0bce383846a67442c637a65d486) [#343](https://togithub.com/npm/node-tar/pull/343) bump minipass from 3.3.6 to 4.0.0 ### [`v6.1.12`](https://togithub.com/isaacs/node-tar/blob/HEAD/CHANGELOG.md#6112-2022-10-31) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.11...v6.1.12) ##### Bug Fixes - [`57493ee`](https://togithub.com/npm/node-tar/commit/57493ee66ece50d62114e02914282fc37be3a91a) [#332](https://togithub.com/npm/node-tar/pull/332) ensuring close event is emited after stream has ended ([@webark](https://togithub.com/webark)) - [`b003c64`](https://togithub.com/npm/node-tar/commit/b003c64f624332e24e19b30dc011069bb6708680) [#314](https://togithub.com/npm/node-tar/pull/314) replace deprecated String.prototype.substr() ([#314](https://togithub.com/isaacs/node-tar/issues/314)) ([@CommanderRoot](https://togithub.com/CommanderRoot), [@lukekarrys](https://togithub.com/lukekarrys)) ##### Documentation - [`f129929`](https://togithub.com/npm/node-tar/commit/f12992932f171ea248b27fad95e7d489a56d31ed) [#313](https://togithub.com/npm/node-tar/pull/313) remove dead link to benchmarks ([#313](https://togithub.com/isaacs/node-tar/issues/313)) ([@yetzt](https://togithub.com/yetzt)) - [`c1faa9f`](https://togithub.com/npm/node-tar/commit/c1faa9f44001dfb0bc7638b2850eb6058bd56a4a) add examples/explanation of using tar.t ([@isaacs](https://togithub.com/isaacs)) ### [`v6.1.11`](https://togithub.com/isaacs/node-tar/compare/188baddc1d0e6ef5140c7a788f03fc2a6c3df2ea...e573aeea19d4d650908b7f6bf0a1ad8dce9f1736) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.10...v6.1.11) ### [`v6.1.10`](https://togithub.com/isaacs/node-tar/compare/v6.1.9...v6.1.10) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.9...v6.1.10) ### [`v6.1.9`](https://togithub.com/isaacs/node-tar/compare/v6.1.8...v6.1.9) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.8...v6.1.9) ### [`v6.1.8`](https://togithub.com/isaacs/node-tar/compare/v6.1.7...v6.1.8) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.7...v6.1.8) ### [`v6.1.7`](https://togithub.com/isaacs/node-tar/compare/v6.1.6...v6.1.7) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.6...v6.1.7) ### [`v6.1.6`](https://togithub.com/isaacs/node-tar/compare/v6.1.5...v6.1.6) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.5...v6.1.6) ### [`v6.1.5`](https://togithub.com/isaacs/node-tar/compare/v6.1.4...v6.1.5) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.4...v6.1.5) ### [`v6.1.4`](https://togithub.com/isaacs/node-tar/compare/v6.1.3...v6.1.4) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.3...v6.1.4) ### [`v6.1.3`](https://togithub.com/isaacs/node-tar/compare/v6.1.2...v6.1.3) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.2...v6.1.3) ### [`v6.1.2`](https://togithub.com/isaacs/node-tar/compare/v6.1.1...v6.1.2) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.1...v6.1.2) ### [`v6.1.1`](https://togithub.com/isaacs/node-tar/blob/HEAD/CHANGELOG.md#6113-2022-12-07) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.1.0...v6.1.1) ##### Dependencies - [`cc4e0dd`](https://togithub.com/npm/node-tar/commit/cc4e0ddfe523a0bce383846a67442c637a65d486) [#343](https://togithub.com/npm/node-tar/pull/343) bump minipass from 3.3.6 to 4.0.0 ### [`v6.1.0`](https://togithub.com/isaacs/node-tar/compare/v6.0.5...v6.1.0) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.0.5...v6.1.0) ### [`v6.0.5`](https://togithub.com/isaacs/node-tar/compare/v6.0.4...v6.0.5) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.0.4...v6.0.5) ### [`v6.0.4`](https://togithub.com/isaacs/node-tar/compare/v6.0.3...v6.0.4) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.0.3...v6.0.4) ### [`v6.0.3`](https://togithub.com/isaacs/node-tar/compare/v6.0.2...v6.0.3) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.0.2...v6.0.3) ### [`v6.0.2`](https://togithub.com/isaacs/node-tar/compare/v6.0.1...v6.0.2) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.0.1...v6.0.2) ### [`v6.0.1`](https://togithub.com/isaacs/node-tar/compare/v6.0.0...v6.0.1) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v6.0.0...v6.0.1) ### [`v6.0.0`](https://togithub.com/isaacs/node-tar/compare/v5.0.11...v6.0.0) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.11...v6.0.0) ### [`v5.0.11`](https://togithub.com/isaacs/node-tar/compare/v5.0.10...v5.0.11) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.10...v5.0.11) ### [`v5.0.10`](https://togithub.com/isaacs/node-tar/compare/v5.0.9...v5.0.10) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.9...v5.0.10) ### [`v5.0.9`](https://togithub.com/isaacs/node-tar/compare/v5.0.8...v5.0.9) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.8...v5.0.9) ### [`v5.0.8`](https://togithub.com/isaacs/node-tar/compare/v5.0.7...v5.0.8) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.7...v5.0.8) ### [`v5.0.7`](https://togithub.com/isaacs/node-tar/compare/v5.0.6...v5.0.7) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.6...v5.0.7) ### [`v5.0.6`](https://togithub.com/isaacs/node-tar/compare/v5.0.5...v5.0.6) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.5...v5.0.6) ### [`v5.0.5`](https://togithub.com/isaacs/node-tar/compare/v5.0.4...v5.0.5) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.4...v5.0.5) ### [`v5.0.4`](https://togithub.com/isaacs/node-tar/compare/v5.0.2...v5.0.4) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.2...v5.0.4) ### [`v5.0.2`](https://togithub.com/isaacs/node-tar/compare/v5.0.1...v5.0.2) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.1...v5.0.2) ### [`v5.0.1`](https://togithub.com/isaacs/node-tar/compare/v5.0.0...v5.0.1) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v5.0.0...v5.0.1) ### [`v5.0.0`](https://togithub.com/isaacs/node-tar/compare/v4.4.19...v5.0.0) [Compare Source](https://togithub.com/isaacs/node-tar/compare/v4.4.19...v5.0.0)Configuration
📅 Schedule: Branch creation - "" in timezone US/Eastern, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
â™» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.