mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	Introduced protections against "zip slip" attacks
This commit is contained in:
		
							parent
							
								
									68d390e633
								
							
						
					
					
						commit
						e20f4fe31a
					
				@ -1,5 +1,6 @@
 | 
				
			|||||||
package stirling.software.SPDF.controller.api.pipeline;
 | 
					package stirling.software.SPDF.controller.api.pipeline;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.github.pixee.security.ZipSecurity;
 | 
				
			||||||
import java.io.ByteArrayInputStream;
 | 
					import java.io.ByteArrayInputStream;
 | 
				
			||||||
import java.io.ByteArrayOutputStream;
 | 
					import java.io.ByteArrayOutputStream;
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
@ -356,7 +357,7 @@ public class PipelineProcessor {
 | 
				
			|||||||
        List<Resource> unzippedFiles = new ArrayList<>();
 | 
					        List<Resource> unzippedFiles = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try (ByteArrayInputStream bais = new ByteArrayInputStream(data);
 | 
					        try (ByteArrayInputStream bais = new ByteArrayInputStream(data);
 | 
				
			||||||
                ZipInputStream zis = new ZipInputStream(bais)) {
 | 
					                ZipInputStream zis = ZipSecurity.createHardenedInputStream(bais)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ZipEntry entry;
 | 
					            ZipEntry entry;
 | 
				
			||||||
            while ((entry = zis.getNextEntry()) != null) {
 | 
					            while ((entry = zis.getNextEntry()) != null) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
package stirling.software.SPDF.utils;
 | 
					package stirling.software.SPDF.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.github.pixee.security.ZipSecurity;
 | 
				
			||||||
import java.io.ByteArrayInputStream;
 | 
					import java.io.ByteArrayInputStream;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.nio.charset.StandardCharsets;
 | 
					import java.nio.charset.StandardCharsets;
 | 
				
			||||||
@ -144,7 +145,7 @@ public class FileToPdf {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static Path unzipAndGetMainHtml(byte[] fileBytes) throws IOException {
 | 
					    private static Path unzipAndGetMainHtml(byte[] fileBytes) throws IOException {
 | 
				
			||||||
        Path tempDirectory = Files.createTempDirectory("unzipped_");
 | 
					        Path tempDirectory = Files.createTempDirectory("unzipped_");
 | 
				
			||||||
        try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(fileBytes))) {
 | 
					        try (ZipInputStream zipIn = ZipSecurity.createHardenedInputStream(new ByteArrayInputStream(fileBytes))) {
 | 
				
			||||||
            ZipEntry entry = zipIn.getNextEntry();
 | 
					            ZipEntry entry = zipIn.getNextEntry();
 | 
				
			||||||
            while (entry != null) {
 | 
					            while (entry != null) {
 | 
				
			||||||
                Path filePath = tempDirectory.resolve(entry.getName());
 | 
					                Path filePath = tempDirectory.resolve(entry.getName());
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user