Package jadx.zip.security
Class JadxZipSecurity
java.lang.Object
jadx.zip.security.JadxZipSecurity
- All Implemented Interfaces:
IJadxZipSecurity
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Pathprivate static final org.slf4j.Loggerprivate intprivate booleanprivate intThe size of uncompressed zip entry shouldn't be bigger of compressed in zipBombDetectionFactor timesprivate intZip entries that have an uncompressed size of less than zipBombMinUncompressedSize are considered safe -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintMax entries count expected in a zip file, fail zip open if the limit exceeds.booleanisInSubDirectory(File baseDir, File file) Check if a file will be inside baseDir after a system resolves its pathprivate static booleanisInSubDirectoryInternal(File baseDir, File file) booleanisValidEntry(IZipEntry entry) Check if zip entry is valid and safe to processbooleanisValidEntryName(String entryName) Checks that entry name contains no any traversals and prevents cases like "../classes.dex", to limit output only to the specified directorybooleanvoidsetMaxEntriesCount(int maxEntriesCount) voidsetUseLimitedDataStream(boolean useLimitedDataStream) voidsetZipBombDetectionFactor(int zipBombDetectionFactor) voidsetZipBombMinUncompressedSize(int zipBombMinUncompressedSize) booleanUse limited InputStream for entry uncompressed data
-
Field Details
-
LOG
private static final org.slf4j.Logger LOG -
CWD
-
zipBombDetectionFactor
private int zipBombDetectionFactorThe size of uncompressed zip entry shouldn't be bigger of compressed in zipBombDetectionFactor times -
zipBombMinUncompressedSize
private int zipBombMinUncompressedSizeZip entries that have an uncompressed size of less than zipBombMinUncompressedSize are considered safe -
maxEntriesCount
private int maxEntriesCount -
useLimitedDataStream
private boolean useLimitedDataStream
-
-
Constructor Details
-
JadxZipSecurity
public JadxZipSecurity()
-
-
Method Details
-
isValidEntry
Description copied from interface:IJadxZipSecurityCheck if zip entry is valid and safe to process- Specified by:
isValidEntryin interfaceIJadxZipSecurity
-
useLimitedDataStream
public boolean useLimitedDataStream()Description copied from interface:IJadxZipSecurityUse limited InputStream for entry uncompressed data- Specified by:
useLimitedDataStreamin interfaceIJadxZipSecurity
-
getMaxEntriesCount
public int getMaxEntriesCount()Description copied from interface:IJadxZipSecurityMax entries count expected in a zip file, fail zip open if the limit exceeds. Return -1 to disable entries count check.- Specified by:
getMaxEntriesCountin interfaceIJadxZipSecurity
-
isValidEntryName
Checks that entry name contains no any traversals and prevents cases like "../classes.dex", to limit output only to the specified directory- Specified by:
isValidEntryNamein interfaceIJadxZipSecurity
-
isInSubDirectory
Description copied from interface:IJadxZipSecurityCheck if a file will be inside baseDir after a system resolves its path- Specified by:
isInSubDirectoryin interfaceIJadxZipSecurity
-
isZipBomb
-
isInSubDirectoryInternal
-
setMaxEntriesCount
public void setMaxEntriesCount(int maxEntriesCount) -
setZipBombDetectionFactor
public void setZipBombDetectionFactor(int zipBombDetectionFactor) -
setZipBombMinUncompressedSize
public void setZipBombMinUncompressedSize(int zipBombMinUncompressedSize) -
setUseLimitedDataStream
public void setUseLimitedDataStream(boolean useLimitedDataStream)
-