Skip to content

Commit 9ff7440

Browse files
authored
Prevent "Zip Slip" (#497)
See - Snyk: Zip Slip Vulnerability https://snyk.io/research/zip-slip-vulnerability - OWASP: Path Traversal https://owasp.org/www-community/attacks/Path_Traversal - Common Weakness Enumeration https://cwe.mitre.org/data/definitions/22.html. Closes #496
1 parent d3c0bcc commit 9ff7440

File tree

1 file changed

+4
-0
lines changed
  • api-client/src/test/java/de/gesellix/docker/remote/api/testutil

1 file changed

+4
-0
lines changed

api-client/src/test/java/de/gesellix/docker/remote/api/testutil/TarUtil.java

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import okio.BufferedSink;
44
import okio.Okio;
55
import okio.Sink;
6+
67
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
78
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
89
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
@@ -27,6 +28,9 @@ public File unTar(InputStream tar) throws IOException {
2728
TarArchiveEntry tarEntry;
2829
while ((tarEntry = tis.getNextEntry()) != null) {
2930
File outputFile = new File(destDir, tarEntry.getName());
31+
if (!outputFile.toPath().normalize().startsWith(destDir.toPath())) {
32+
throw new RuntimeException("Bad zip entry");
33+
}
3034
if (tarEntry.isDirectory()) {
3135
if (!outputFile.exists()) {
3236
outputFile.mkdirs();

0 commit comments

Comments
 (0)