Arbitrary File Overwrite Affecting tar package, versions <3.2.3 >=4.0.0 <4.4.15 >=5.0.0 <5.0.7 >=6.0.0 <6.1.2
Do your applications use this vulnerable package?
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.Test your applications
- Snyk ID SNYK-JS-TAR-1536528
- published 4 Aug 2021
- disclosed 4 Aug 2021
- credit ginkoid, chen-robert
How to fix?
tar to version 3.2.3, 4.4.15, 5.0.7, 6.1.2 or higher.
tar is a full-featured Tar for Node.js.
Affected versions of this package are vulnerable to Arbitrary File Overwrite. This is due to insufficient symlink protection.
node-tar aims to guarantee that any file whose location would be modified by a symbolic link is not extracted. This is, in part, achieved by ensuring that extracted directories are not symlinks. Additionally, in order to prevent unnecessary
stat calls to determine whether a given path is a directory, paths are cached when directories are created.
This logic is insufficient when extracting tar files that contain both a directory and a symlink with the same name as the directory. This order of operations results in the directory being created and added to the
node-tar directory cache. When a directory is present in the directory cache, subsequent calls to
mkdir for that directory are skipped.
However, this is also where
node-tar checks for symlinks occur. By first creating a directory, and then replacing that directory with a symlink, it is possible to bypass
node-tar symlink checks on directories, essentially allowing an untrusted tar file to symlink into an arbitrary location and subsequently extracting arbitrary files into that location.