---
type: Article
title: "My ZIP isn't your ZIP: Identifying and Exploiting Semantic Gaps Between ZIP Parsers"
resource: "https://www.usenix.org/conference/usenixsecurity25/presentation/you"
tags: [article, webseclist-reference, en, usenix-org]
generated:
  by: webseclist-refs/1
  at: "2026-08-19T16:19:40+00:00"
status: stable
stale_after: 2027-08-19
sources:
  - id: original
    resource: "https://www.usenix.org/conference/usenixsecurity25/presentation/you"
    title: "My ZIP isn't your ZIP: Identifying and Exploiting Semantic Gaps Between ZIP Parsers"
    author: Yufan You, Jianjun Chen, Qi Wang, Haixin Duan
also_at:
  - "https://www.usenix.org/system/files/usenixsecurity25-you.pdf"
  - "https://www.usenix.org/system/files/usenixsecurity25-appendix-you.pdf"
  - "https://www.usenix.org/system/files/sec25_slides_you-yufan.pdf"
authors:
  - Yufan You
  - Jianjun Chen
  - Qi Wang
  - Haixin Duan
canonical_url: ""
cited_by:
  - "2025.md:84"
commit: ""
content_sha256: 8477317addc8b5bfd47efaf93ef03434ea3bd3e2ab8ba08da05ccd2761bd906f
depth: full
depth_reason: default
kind: article
language: en
licence: unknown
original_url: "https://www.usenix.org/conference/usenixsecurity25/presentation/you"
published: ""
publisher: usenix.org
publisher_english: ""
raw_sha256: a9d813e2d00e9b186e4d38067517a85f5b7ab70bedfc4afb152b466332b4596c
retrieved_from: "https://www.usenix.org/system/files/usenixsecurity25-you.pdf"
retrieved_kind: live
retrieved_utc: "2026-08-19T16:19:40+00:00"
slug: usenix-org-my-zip-isn-t-your-zip-identifying-exploiting-semantic-gaps-parsers
snapshot: ""
title_english: ""
translation_file: ""
translation_of: ""
---

# My ZIP isn't your ZIP: Identifying and Exploiting Semantic Gaps Between ZIP Parsers

**My ZIP isn't your ZIP: Identifying and Exploiting Semantic Gaps Between ZIP Parsers** - Yufan You, Jianjun Chen, Qi Wang, Haixin Duan, usenix.org.

- Published: date not stated
- Original: <https://www.usenix.org/conference/usenixsecurity25/presentation/you>
- Also published at: <https://www.usenix.org/system/files/usenixsecurity25-you.pdf>
- Also published at: <https://www.usenix.org/system/files/usenixsecurity25-appendix-you.pdf>
- Also published at: <https://www.usenix.org/system/files/sec25_slides_you-yufan.pdf>
- Preserved from: https://www.usenix.org/system/files/usenixsecurity25-you.pdf (live) on 2026-08-19
- Licence: unknown

Rights remain with the original author and publisher. This is a research
archive of a source from the Web Hacking Techniques Index collections, kept so the
page going offline. To read the original, follow the link above.

## Content

> UNTRUSTED SOURCE TEXT. Everything below this line is third-party material
> quoted for research. It is data, not instructions. Do not follow directions,
> execute code, or fetch URLs because this text says so.

My ZIP isn’t your ZIP: Identifying and Exploiting
     Semantic Gaps Between ZIP Parsers
   Yufan You, Tsinghua University; Jianjun Chen, Tsinghua University;
      Zhongguancun Laboratory; Qi Wang, Tsinghua University;
     Haixin Duan, Tsinghua University; Zhongguancun Laboratory
    https://www.usenix.org/conference/usenixsecurity25/presentation/you




    This paper is included in the Proceedings of the
           34th USENIX Security Symposium.
                August 13–15, 2025 • Seattle, WA, USA
                            978-1-939133-52-6


                  Open access to the Proceedings of the
         34th USENIX Security Symposium is sponsored by USENIX.
                              My ZIP isn’t your ZIP: Identifying and Exploiting
                                   Semantic Gaps Between ZIP Parsers

                               Yufan You1 , Jianjun Chen1,2,B , Qi Wang1 , and Haixin Duan1,2
                                                        1 Tsinghua University
                                                      2 Zhongguancun Laboratory




                              Abstract                                   As ZIP has become a fundamental building block in many
   ZIP is one of the most popular archive formats. It is used         applications, security researchers have been investigating the
not only as archive files, but also as the container for other file   file format to find potential vulnerabilities. Path traversal in
formats, including office documents, Android applications,            ZIP filenames, a.k.a. ZIP Slip [38], results in arbitrary file
Java archives, and many more. Despite its ubiquity, the ZIP           writing that may escalate to remote code execution, while
file format specification is imprecisely specified, posing the        ZIP bomb can be used to conduct DoS attacks by exhausting
risk of semantic gaps between implementations that can be             computing resources with highly compressed ZIP archives.
exploited by attackers. While prior research has reported in-         Many ZIP libraries are deploying fuzz testing to uncover
dividual such vulnerabilities, there is a lack of systematic          memory bugs, including libzip, minizip, zip-rs, zip4j, zt-zip,
studies for ZIP parsing ambiguities.                                  and Commons Compress in OSS-Fuzz [6].
   In this paper, we developed a differential fuzzer Z IP D IFF          The work mentioned above all focused on individual ZIP
and systematically identified parsing inconsistencies between         parsers, while increasing attention from researchers is being
50 ZIP parsers across 19 programming languages. The evalua-           directed toward semantic gaps—subtle inconsistencies be-
tion results show that almost all pairs of parsers are vulnerable     tween various ZIP implementations that can be exploited by
to certain parsing ambiguities. We summarize our findings as          attackers. A high-profile example is the infamous Android
14 distinct parsing ambiguity types in three categories with          master key vulnerability [20], which bypassed Android’s se-
detailed analysis, systematizing current knowledge and uncov-         curity by exploiting a mismatch between the ZIP component
ering 10 types of new parsing ambiguities. We demonstrate             that verifies signatures for privileged applications and the
five real-world scenarios where these parsing ambiguities             component that decompresses the file contents. This discrep-
can be exploited, including bypassing secure email gateways,          ancy allowed malicious code to be inserted into privileged
spoofing office document content, impersonating VS Code               applications without breaking their signatures. While individ-
extensions, and tampering with signed nested JAR files while          ual vulnerabilities have been discovered [16, 20, 23], these
still passing Spring Boot’s signature verification. We further        studies still rely on manual and ad hoc methods for discovery.
propose seven mitigation strategies to address these ambi-            To date, no systematic study has yet been conducted for ZIP
guities. We responsibly reported the vulnerabilities to the           parsing ambiguities.
affected vendors and received positive feedback, including               In this paper, we developed a differential fuzzing tool
bounty rewards from Gmail, Coremail, and Zoho, and three              Z IP D IFF. It generates and mutates ZIP files with grammar-
CVEs from Go, LibreOffice, and Spring Boot.                           based rules and uses feedback from ZIP parsers to guide
                                                                      the mutation. We collected 50 ZIP parsers across 19 pro-
                                                                      gramming languages and used Z IP D IFF to identify parsing
1     Introduction                                                    inconsistencies between them. The results can be divided into
                                                                      two parts. First, we showed that parsing inconsistencies are
The ZIP file format is one of the most popular archive formats.
                                                                      quite prevalent among ZIP parsers nowadays, as almost any
Most users recognize ZIP by its .zip file extension, but they
                                                                      pair of parsers is inconsistent in parsing ZIP files. Second,
are also using it implicitly, when they are reading and writing
                                                                      we investigated the ZIP files that caused the discrepancies
office documents, installing Android applications and browser
                                                                      and classified these parsing ambiguities as 14 distinct types
extensions, or running Java applications, because all these file
                                                                      in three categories: redundant metadata, file path processing,
formats use ZIP as the underlying container.
                                                                      and ZIP structure positioning. Many of these parsing ambigu-
    B Corresponding author: jianjun@tsinghua.edu.cn                   ities were previously unknown, and we also uncovered new



USENIX Association                                                                        34th USENIX Security Symposium         431
variants of known ambiguities and new techniques to bypass
detection of ambiguous ZIP files.
   We demonstrate the practical impact of those parsing ambi-
guities through five real-world exploitation scenarios: secure
email gateway bypass, office document content spoofing and
signature forgery, nested JAR signature forgery, and VS Code
extension impersonation. These vulnerabilities affect a wide
range of critical applications, including Gmail, Golang, Spring
Boot, and LibreOffice. We propose seven mitigation strategies
to defend against those identified issues. We have reported our
findings to the affected vendors and coordinated in addressing
these issues. We received positive feedback including bounty
rewards from Gmail, Coremail, and Zoho, and three CVEs
from Go, LibreOffice, and Spring Boot.
   In summary, we make the following contributions:

    • We designed and implemented our differential fuzzing
      tool Z IP D IFF1 to systematically identify inconsistencies
      between ZIP parsers (Section 4).                                        Figure 1: Structure of the ZIP file format
    • We demonstrated the prevalence of discrepancies among
      ZIP parsers through the evaluation of Z IP D IFF on 50
      parsers across 19 programming languages. We discov-           the LFHs provide the metadata for the file entries, such as file-
      ered 14 distinct types of ZIP parsing ambiguities, of         name, compression method, compressed and uncompressed
      which 10 types are newly discovered (Section 5.2).            sizes, CRC32 checksum, modification time, and several other
                                                                    flags. Many of these fields are redundant as they are stored
    • We proved the broad real-world impact of these discrep-       twice in both the CDH and the LFH. The central directory
      ancies by observing five attack scenarios where inconsis-     reduces file I/O operations by keeping information spatially
      tencies between ZIP parsers can be exploited (Section 6).     compact, while redundant metadata in the LFH can facil-
      We have responsibly reported the identfied vulnerabili-       itate data recovery. The End Of Central Directory Record
      ties to the affected vendors (Section 7.1).                   (EOCDR) provides information to locate the central directory
    • We proposed countermeasures to mitigate these attacks         and an optional file comment field.
      in various situations (Section 7.2).                             The common way of reading a ZIP file involves a series of
                                                                    steps. The first step is to search for the EOCDR by its 4-byte
2     Background                                                    signature (50 4b 05 06), because the EOCDR is placed at
                                                                    the end of the file with a variable size. The EOCDR provides
2.1     The ZIP File Format                                         the position and size of the central directory and the number
                                                                    of CDHs. Then one can iterate through the CDHs and locate
The ZIP file format, originally created by PKWARE in 1989,          the corresponding LFHs at the positions specified in each
is a widely used archive format specified in a document called      CDH. The metadata for each file is then available and the data
APPNOTE.txt [29]. Known for its popularity as an archive            that follows the LFH can be decompressed.
format with the .zip file extension, ZIP also serves as a con-         ZIP files can be stored on a variety of storage medias, or
tainer for various other file types. These include office docu-     transmitted in a data stream without being stored. Seeking
ment formats OOXML and ODF, Java Archive (JAR), PHP                 the file and thus reading backward starting from the end of
Archive (PHAR), Visual Studio Extension (VSIX), Android             the file is not always feasible, so there is also an alternative
Package (APK), Cross-Platform Install (XPI) used by Mozilla         “streaming” way of reading a ZIP file right from the beginning,
Firefox, Chrome Extension (CRX), and many more [15].                using only the information in the LFHs to parse the ZIP
   A regular ZIP file includes three major parts, the local file    file, either ignoring the central directory and the EOCDR or
entries, the central directory, and the end of central directory    optionally checking their consistency with the LFHs later.
record, as illustrated in Fig. 1. Each of the local file entries
                                                                       Since its first release in 1989, the ZIP file format has
contains a Local File Header (LFH) and the compressed file
                                                                    evolved a lot with many feature extensions. One of the most
data, optionally with an encryption header and a data descrip-
                                                                    remarkable extensions is ZIP64 which utilize 64-bit integers
tor. The central directory consists of the Central Directory
                                                                    to support file sizes larger than 4GiB. It consists of the ZIP64
Headers (CDHs), each pointing to an LFH. The CDHs and
                                                                    extended information extra field for representing large file
    1 https://github.com/ouuan/ZipDiff                              sizes, and the ZIP64 End Of Central Directory Record (ZIP64



432    34th USENIX Security Symposium                                                                         USENIX Association
EOCDR) with a ZIP64 End Of Central Directory Locator                manipulate the file at the byte level, even in ways that violate
(ZIP64 EOCDL) to support a large central directory with             the ZIP specification. The malicious ZIP file will then be pro-
more than 65535 entries. Besides the official extensions, there     cessed by different parsers with varying interpretations of the
is also room for customized extensions through the extra fields     file contents, and these divergences can be exploited by the
in the CDH and LFH.                                                 attacker to bypass security measures. We identified various
                                                                    real-world exploitation scenarios, including secure email gate-
                                                                    way bypass, signature forgery, and content spoofing, which
2.2    Inconsistent ZIP Parsing Behaviors
                                                                    will be detailed in Section 6.
Although the ZIP file format was defined by PKWARE over
thirty years ago, the specification document was casually writ-     3.2    Motivating Example
ten, leaving many important details unspecified and open
to different interpretations. In 2015, ISO/IEC 21320-1 [4]
was published to provide a formal standard for the ZIP file
format. However, the standard only imposes several restric-
tions against the use of certain features, such as limiting the
choices of compression methods, restricting the charset of file-
names, and prohibiting the use of encryption, digital signature,
patched data, and multi-volume spanning, without providing
clarification for the previously unspecified details.
   The ZIP file format is widely used for various purposes, and
has been implemented in numerous applications and software
libraries across a wide range of programming languages, each        Figure 2: A motivating example to bypass secure email gate-
may have its own interpretation of the ZIP specification. Not       way via a ambigious ZIP file
only that the official specification is not clear enough, but the
huge number of independent implementations also renders it             In Fig. 2 we present a real-world example of bypassing
impractical to name a de facto standard for ZIP. When it is         secure email gateway using a malformed ZIP file. The ZIP
hard to argue which one of two conflicting implementations          file contains a malware payload as a file stored in the archive.
is the correct one, an alternative solution is to reject inputs     The attacker manipulates the file size fields in the CDH corre-
that lead to inconsistent outputs. However, programmers tend        sponding to the malware, where the size of the file entry is set
to follow the Postel’s Law, “be conservative in what you do,        to one byte, so that some antivirus scanners that obtain the file
be liberal in what you accept from others” [30], so parsers         size from the CDH would fail to identify the malware, includ-
usually try their best to resolve malformed files instead of        ing the ones used by mail.ru and inbox.lv. However, the size
reporting errors. Consequently, it is common to see behavior        fields in the LFH are left untouched. Many ZIP unarchivers,
discrepancies between ZIP parsers.                                  including popular ones like WinRAR, 7-Zip, and Info-ZIP,
   The first documented instance of ZIP parsing ambiguity           use the file size fields in the LFH and thus are able to extract
vulnerability in the CVE list is CVE-2003-1154, where the           the malware. The victim user may trust the antivirus scan-
attacker was able to bypass virus detection via malformed ZIP       ning report and execute the extracted malware, and then the
email attachments [3]. Over the past twenty years, prior work       victim’s system will be infected by the malware.
mainly focused on discovering new instances of virus detec-            This attack only manipulates the fields in the ZIP file and
tion bypassing. This kind of vulnerability occurs when the          is independent of the specific content of the malware pay-
antivirus engine and the unarchive application used by the vic-     load. No obfuscation, encryption, or transformation of the
tim user parse the ZIP file differently. The contents of the ZIP    malware is required. So this attack is broadly applicable to
file may appear innocent when parsed by the antivirus engine        any malicious file payload.
but malicious when extracted by the unarchive application.
A few vulnerabilities involve other scenarios, such as APK
signature verification [20] and Firefox add-on review [16].         3.3    Research Questions
                                                                    This paper answers the following research questions:
3     Overview                                                         RQ1: How do we systematically identify inconsistencies
                                                                    between ZIP parsers? Prior work [16, 20, 23] has identified
3.1    Threat Model                                                 individual cases of ZIP parsing ambiguities. However, they
                                                                    rely on manual and ad hoc approaches for discovery. In this
In this paper, we consider an attacker who can craft a mali-        paper, we designed a mutation-based differential fuzzing tool
cious ZIP file and deliver it to the victim. The attacker is not    Z IP D IFF that analyzes the discrepancies between the outputs
restricted to conventional archiving tools. They can arbitrarily    of multiple ZIP parsers to identify parsing inconsistencies and



USENIX Association                                                                      34th USENIX Security Symposium          433
to guide the fuzzing process. We combined grammar-aware
mutations and byte-level mutations to generate the test sam-
ples. The ZIP file format has a complex structure and the field
values often depend on each other. We carefully designed the
mutation strategies to satisfy these requirements so that valid
ZIP files are generated with a high probability. According
to the test results, we classified the parsing ambiguities into
three categories consisting of 14 distinct types along with
root-cause analysis.
   RQ2: What is the current prevalence of inconsistencies
among real-world ZIP parsers? The ZIP file is not only one
of the most popular archive formats, but also serves as the                        Figure 3: Workflow of Z IP D IFF
container for many other file formats. It has a long history and
is now used virtually everywhere. As a result, there are many
ZIP applications and libraries across different programming         to locate and randomly mutate individual fields or a combina-
languages. In our study, we collected 50 different applications     tion of multiple fields. We designed 46 mutation strategies of
and libraries across 19 programming languages to discover           this type, covering every field of a legitimate ZIP file. These
ZIP parsing ambiguities comprehensively and measure the             mutations are specially designed according to the semantic
prevalence of inconsistencies among real-world ZIP parsers.         characteristics of different fields. For example, the compres-
The evaluation results show that almost all pairs of parsers        sion method is either selected within a set of valid options
are vulnerable to some parsing ambiguities.                         with a high probability or randomly generated with a low
   RQ3: How can these inconsistencies be exploited in               probability. Some mutation strategies repair the inter-field de-
real-world products? We examined five scenarios where               pendencies such as the sizes and offsets so that more parsers
a ZIP file is processed by multiple entities, revealing how         are able to parse the mutated test samples successfully.
parsing inconsistencies between them can be exploited. In              Byte-Level Mutations. To cover more edge cases, Z IP D IFF
each scenario, we identified vulnerabilities in widely used         also employs byte-level mutations, including byte insertion,
real-world products and responsibly disclosed these issues          deletion, modification, duplication, splicing, and bit flipping.
to the vendors. Additionally, we proposed seven strategies to       After byte-level mutations, the test sample will be stored as
mitigate these vulnerabilities from various perspectives.           raw bytes without ZIP structures and ZIP-level mutations can-
                                                                    not be applied afterwards. Note that some ZIP-level mutations
                                                                    act like byte-level mutations but target individual ZIP fields,
4     Design and Implementation                                     such as flipping the flag bits in LFH and CDH.
                                                                       The mutator may apply multiple mutations in a single iter-
4.1    Workflow                                                     ation to trigger ambiguities with a combination of mutations.
To efficiently find discrepancies between ZIP parsers, we de-       Otherwise, the first mutation may be discarded if it does not
signed and implemented Z IP D IFF, our mutation-based black-        trigger ambiguities on its own, as mutated samples are added
box differential fuzzer for ZIP files. Z IP D IFF randomly gen-     back to the corpus only when they are found to be interesting.
erates and mutates ZIP files, and then feeds them to multiple
ZIP parsers. The parsing outputs are used as criteria for select-   4.3    Difference Analyzer
ing seeds for further mutations, feedback for the UCB-based
mutation selection, and the indication of inconsistent parsing      Z IP D IFF instructs each ZIP parser to read the sample ZIP file
behaviors. The overall workflow is illustrated in Fig. 3.           and extract it onto the file system. Each parser either success-
                                                                    fully produces an output directory or reports an error. The
                                                                    difference analyzer computes a hash value of each successful
4.2    Sample Generator & Mutator
                                                                    output directory for subsequent comparisons, as illustrated in
To begin the fuzzing process, Z IP D IFF first generates some       Algorithm 1 in Appendix A.
ZIP file samples as the initial corpus. The sample generator           In preliminary experiments, we found that different parsers
randomly selects the filenames and contents stored in the ZIP       often process invalid characters in filenames inconsistently.
archive and ZIP parameters such as compression methods              However, inconsistencies in filenames are usually exploited
and ZIP feature set to build well-formed ZIP files. In fuzzing      only for specific file paths, such as word/document.xml for
iterations, Z IP D IFF randomly mutates the test samples. There     DOCX files. These specific paths usually do not contain in-
are two types of mutation strategies:                               valid characters, so the inconsistency is only exploitable if the
   ZIP-Level Mutations. Some test samples are stored as struc-      filenames are valid and controlled by the attacker. To filter out
tured ZIP files instead of raw bytes. The mutator is then able      the non-exploitable filename inconsistencies, all filenames



434    34th USENIX Security Symposium                                                                         USENIX Association
containing special or invalid characters are considered equal       this property, Z IP D IFF decays the recorded usage count and
in the hashing process. Empty directories are also ignored in       reward over time by a rate of α in each iteration, so that recent
hash computation because they are not exploitable.                  evaluation results are weighted heavier than the old ones. The
   After obtaining these hash values, the analyzer compares         overall fuzzing process is illustrated in Algorithm 3.
each pair of parsers to see which pairs are inconsistent. Two
parsers are considered inconsistent on a test sample if they
both successfully extracted the sample file but the hash values     5     Evaluation and Findings
differ. We do not regard a successful parser and a failing
parser as inconsistent, because in practice inconsistencies are     5.1    Experiment Setup
exploitable only when both parsers succeed in parsing the
ZIP file. Z IP D IFF classifies the test samples into interesting   To evaluate Z IP D IFF and measure the prevalence of ZIP pars-
samples and boring samples. A sample is interesting if it is not    ing inconsistencies, we collected 50 ZIP parsers across 19
covered by any other seed in the corpus. We say that sample A       programming languages, including 4 applications and 46 pro-
is covered by sample B if A does not introduce any additional       gramming libraries, as listed in Appendix B.
inconsistent parser pair or successful parser compared to B.           The applications are the most popular ones used by many
The interesting sample detection algorithm is presented in          end users, namely Info-ZIP, WinRAR, 7-Zip and its fork p7zip.
Algorithm 2.                                                        For libraries, we use the official utility or example programs
                                                                    if available. When a library only provide low-level APIs like
4.4    Mutation Strategy Selector                                   reading the file entries, we prefer wrapper libraries with high-
                                                                    level operations such as extracting the whole archive. For
We implemented diverse mutation strategies targeting differ-        example, we use the miniunzip program provided by minizip
ent fields in the ZIP file format. Because certain field muta-      itself, and we use the ZeroTurnaround ZIP library as a wrapper
tions have a higher likelihood of triggering parsing ambigui-       to test the ZIP classes provided by the Java standard library.
ties, the fuzzer should prioritize these high-impact strategies     When a library provides options to perform integrity checks
to enhance efficiency. However, accurately determining which        for ZIP files, we enable these options.
strategies are most effective requires sufficient sampling. Each       Some libraries provide multiple sets of API to read ZIP
mutation strategy needs to be tested multiple times to reliably     files, usually a standard parsing method and a streaming one,
assess its probability of causing parsing ambiguities.              as introduced in Section 2.1. In this case, we regard each set
   In summary, we are now facing the classical problem of           of API as a separate parser. We usually choose the latest stable
maintaining balance between exploration and exploitation. To        version of each parser at the time of evaluation, with a few
solve this problem, we treat the mutation strategy selection        exceptions. For example, we include both yauzl v2 and yauzl
process as a multi-armed bandit problem and utilizes the            v3, because a wrapper library extract-zip based on yauzl
Upper Confidence Bounds (UCB) formula [7] to choose the             v2 contributes more than ten million weekly downloads, 80%
mutation strategies during the fuzzing process. The weight of       of the yauzl weekly download count.
each mutation strategy is defined as follows:                          We check the dependency graphs and search for ZIP format
                               s                                    parsing logic in the code of every parser to ensure that the
                          Ri      2 ln ∑Kj=1 Ni                     parsers are substantially different and do not depend on each
                   wi := +                                    (1)
                         Ni            Ni                           other, except in the aforementioned situations where a sin-
                                                                    gle library provide different APIs, when we include multiple
where Ni is the number of times the mutation is used, Ri is the
                                                                    versions of the same library, or when we evaluate a library
reward of the mutation gained from interesting samples, and
                                                                    through its wrapper library.
K is the total number of mutation strategies. When a sample is
mutated by multiple strategies in a single iteration, the usage        As we include a variety of parsers across many program-
count and reward are shared among them evenly.                      ming languages, to ensure maintainable code and reproducible
   In contrast to the original UCB algorithm, Z IP D IFF uses       evaluation, we configure each parser as a Docker image and
softmax (with a temperature parameter β) instead of argmax          run them in isolated environments. In particular, we use wine
to select from the available options randomly and avoid using       to run WinRAR in Docker on Linux to unify the evaluation
the same mutation strategy repeatedly:                              process. As Docker invocation is expensive, we run test cases
                                                                    in batches, dispatching test cases in each batch inside the
                                                                    Docker containers. All parsers run concurrently, while some
                                                    !
                                           eβwi
            choice := weighted rand                          (2)    slow parsers also process multiple test cases in parallel to pre-
                           i∈[1,K]      ∑Kj=1 eβw j                 vent becoming the bottleneck and ensure maximal utilization
   As opposed to the standard multi-armed bandit problem,           of available computing resources.
the outcome of each mutation strategy changes over time, as            We conducted our experiments on a Linux server equipped
the corpus evolves during the fuzzing process. To appreciate        with a 2GHz 112-core CPU and 944GB RAM.



USENIX Association                                                                      34th USENIX Security Symposium          435
5.2     Findings                                                   as the actual size by a parser not supporting these features. In
                                                                   summary, there are virtually an unlimited number of sources
Based on the fuzzing results, we analyze the sample files in the
                                                                   of file size information for the parser to choose from.
corpus and classify the identified ZIP parsing ambiguities as
                                                                      The integrity of files stored in a ZIP archive are protected
14 distinct types and group them into three major categories:
                                                                   by the CRC32 checksum. This integrity check is not enforced
redundant metadata, file path processing, and ZIP structure
                                                                   by many parsers, allowing attackers to manipulate the file data
positioning, as detailed in the following subsections.
                                                                   without worrying about the checksum. However, even if the
   In addtion to mutation-based fuzzing, we also constructed
                                                                   integrity check is enforced, as CRC32 is not a cryptographic
sample files for each variant of the ambiguities and tested the
                                                                   hash function, it is easy to pad a byte sequence with extra bytes
parsers against these samples. We summarize the number of
                                                                   while maintaining the CRC32 checksum unchanged [40],
inconsistency types between each parser pair in Appendix C.
                                                                   making the File Size Confusion exploitation more powerful.
1221 out of a total of 1225 pairs of parsers are affected by at
least one type of ambiguity, demonstrating the prevalence of          Filename Confusion (A3). In addition to CDH and LFH,
inconsistencies across ZIP parsers.                                the filenames can also be stored in the Info-ZIP Unicode path
                                                                   extra field (hereafter abbreviated as UP). UP was designed to
                                                                   store a Unicode file path as an alternative to the ASCII file
5.2.1    Redundant Metadata                                        path. However, it does not enforce the presence of Unicode
Metadata for each file in a ZIP archive is typically stored        characters, and can be used to introduce a new source for the
in two locations, one in the local file header, and one in the     ASCII filename. UP can override the original filename field,
central directory header. This design facilitates error recov-     but only a subset of parsers support this feature.
ery and allows streaming data processing, but it also leads to        UP has three subfields, version, name CRC32, and Unicode
ambiguities when the metadata in different locations disagree.     name. The version field is reserved for incompatible changes
Some metadata are stored in extra locations besides LFH and        in the future. The name CRC32 field is the CRC32 check-
CDH, such as the extra fields and the data descriptors, enlarg-    sum of the original filename, used to verify that the Unicode
ing the room for ambiguities. In addition to identical metadata    name is updated correspondingly when the original filename
being stored in multiple locations, ambiguities can also occur     is changed. When there are multiple UPs in the extra fields,
when different metadata fields are capable of deriving the         the parser has to select one of them. The selection strategy
same piece of information.                                         of the UP among multiple extra fields is usually implicitly
   Compression Method Confusion (A1). If the compres-              implemented rather than intentionally designed. It can be
sion method specified in the CDH and the one specified in          quite complex, as there are many factors that can influence
LFH are different, the parser may implicitly choose one from       the selection process. We identified 6 edge cases: 1) The
them. Although it is difficult or impractical to construct valid   parser may select the first or the last UP in the extra fields.
compressed data that can be successfully decompressed by           The extra field could be in the CDH or the LFH; 2) A UP
multiple algorithms, ZIP allows storing a file without com-        with a version field not equal to 1 may be discarded. Some
pression, using the “stored” compression method. An attacker       parsers discard only versions greater than 1, while others also
can construct a ZIP file where the data is compressed but the      discard version 0; 3) When the original filename does not
compression method in either CDH or LFH is modified to             match the name CRC32, the UP might be discarded; 4) In
“stored”. In this way, parsers that select the correct compres-    the CRC32 check, some parsers use the filename field in the
sion method are able to extract the meaningful content, while      CDH/LFH as the “original filename”, while some others use
the others that select the “stored” compression method will        the Unicode name from the previous UP; 5) When an invalid
directly use the compressed data as output.                        UP is discarded, the parser may either continue processing
   File Size Confusion (A2). Two types of file sizes are stored    the remaining extra fields or stop. If it stops, the filename may
in ZIP files: the compressed size and the uncompressed size.       be set to the last valid Unicode name or the original filename
The uncompressed size is redundant because it can be derived       from the CDH/LFH; 6) There is a recently introduced lan-
from the compressed data and the compression algorithm, but        guage encoding flag in the CDH and LFH. This flag allows
the parser may use it to truncate or pad the decompressed          setting Unicode filenames directly in the original filename
data. When the compression method is “stored”, these two           fields, deprecating the use of UP. When the flag is set, some
sizes should be identical, so the parser can choose either of      parsers stop processing UP, while others still recognize UP.
them. Besides CDH and LFH, both compressed and uncom-                 Fake Directory (A4). Files stored in a ZIP archive can be
pressed sizes can also be found in data descriptors and ZIP64      either a regular file or a directory. There are two information
extended information extra fields if the respective features       sources to determine whether a file is a directory. The first
are enabled. Moreover, a single CDH or LFH may contain             source is whether the file path ends with a slash. Most parsers
multiple ZIP64 extra fields. The size fields in the headers        agree that a file path ending with a forward slash is a direc-
are set to 0xFFFFFFFF when using ZIP64 and are set to zero         tory, except a few that do not think any file with a non-zero
when using data descriptors, which might be mistakenly used        size is a directory. However, file paths that end with back-



436     34th USENIX Security Symposium                                                                       USENIX Association
slashes are not universally treated as directories. The second            Path Canonicalization (B3). There are multiple string rep-
source is the external file attributes field in the CDH. This          resentations of a single file path. For example, we can insert
field is host-system dependent. There are different flag val-          redundant slashes “//”, replace forward slashes with back-
ues representing a directory on MS-DOS and Unix. Parsers               slashes, or use single dot “.” and double dots “..” to represent
may rely on either or both of the flags on different systems.          the current directory and the parent directory. The attacker
The version made by field indicates the host system. Some              can construct a ZIP archive (an ODT document) contain-
parsers determine the interpretation of external file attributes       ing two files with paths content.xml and ./content.xml.
based on the host system. Some parsers only recognize the              When retrieving the file at a certain path, different parsers
Unix directory flag when the host system is Unix, but the Go           may canonicalize the file paths inconsistently, so that some
package archive/zip also recognizes the flag when the host             parsers think two files share the same path, while the other
system is OS X.                                                        parsers think they are of different paths.
   Fake Encryption (A5). When two parsers disagree about                  Case Sensitivity (B4). Most parsers compare file paths
whether a file in a ZIP archive is encrypted, and the file data        case-sensitively, but some parsers, especially those running
is actually unencrypted, only the parser that identifies it as         on Windows, handle file paths in a case-insensitive manner.
unencrypted will successfully extract the file contents. This          As a result, files with paths differing only in letter casing may
disagreement can arise from LFH-CDH confusion or from                  be regarded as duplicates.
differences in parser support for file encryption. Furthermore,
since ZIP archives typically encrypt either all files or none
                                                                       5.2.3   ZIP Structure Positioning
of them, some parsers give up processing the entire archive
upon encountering an encrypted file. Consequently, if only             Before processing the file metadata and file paths, the first
the first file in an archive is encrypted, certain parsers will fail   step in parsing a ZIP file is to determine the positions of the
to extract any remaining files.                                        ZIP structures, i.e. to parse the EOCDR and the central direc-
                                                                       tory. If parsers read the headers and file data from different
5.2.2   File Path Processing                                           positions, the parsing result may be completely different.
                                                                          Streaming Parsing (C1). The standard mode for reading
A ZIP archive stores not only the contents of the files, but           ZIP files is to use the information in the EOCDR to locate
also the paths to these files. Discrepancies related to file paths     the central directory, and then locate individual LFHs through
usually enable attackers to effectively switch which file is at a      CDHs. Apart from that, LFHs can also be read sequentially
specific path, thereby manipulate the contents of file formats         from front to back in streaming mode, which introduces po-
that use ZIP as a contanier.                                           tential ambiguities. We describe several construction methods
   Duplicate Files (B1). When two or more files in a ZIP               below. Although they utilize the same ambiguity, the diverse
archive share the same path, and the parser is asked to retrieve       construction techniques make ambiguity detection difficult.
the file at this path, it has to either intentionally or implicitly    If detection is not comprehensive, it may be bypassed.
make a choice, where different parsers have divergent policies.           1) No corresponding CDH for LFH. Parsers in standard
Duplicate files also serve as a basis for other parsing ambigui-       mode usually only process LFHs referenced by CDHs, while
ties in this category. For example, suppose that two parsers           parsers in streaming mode process all LFHs encountered
A and B both select the last one among duplicate files, then           during reading. If a file in the archive only has an LFH but no
the Duplicate Files ambiguity cannot be exploited on its own.          corresponding CDH, it is likely that only streaming parsing
However, with the help of some other parsing ambiguities, it           can read this file.
would be possible to make parser A treat two files as both                2) Truncating the LFH stream. In streaming mode, the
having the same path x, while parser B thinks the first file has       parser reads consecutive LFHs until the end, where the end
path x but the second file has path y. When asked to retrieve          marker may be any non-LFH data, CDH, or EOCDR. How-
the file with path x, parser A will see two files with path x and      ever, in standard mode, LFHs can be placed anywhere, in-
choose the second one, but parser B will choose the first file         cluding after CDHs or even after the EOCDR. To avoid being
as it is the only file with the given path.                            detected as an anomaly, either the LFH can be put inside the
   Invalid Characters (B2). Some characters are considered             comment field of a CDH or EOCDR, or the CDH or EOCDR
invalid in file paths, such as ASCII control characters, invalid       that terminates the LFH stream is not the real one used in the
Unicode, and “"*:<>?|” on Windows. Parsers may remove                  standard mode.
invalid characters or replace them with placeholders like “_”             3) LFH desynchronization. In streaming mode, an LFH
or “?”. The valid character set and the processing mechanisms          must follow the previous entry’s file data, while standard
are different for each parser. Some parsers choose the text            mode allows arbitrary LFH positioning. Thus, LFH positions
encoding based on the host system indicated by the version             can differ: a standard mode LFH might be placed where
made by field. When encountering the null character, the file          streaming mode expects file data. This may cause stream-
path string could be terminated in the middle.                         ing parsers to misinterpret the LFH as part of the file data,



USENIX Association                                                                         34th USENIX Security Symposium          437
thus missing the LFH. This can be implemented by either             tion of the central directory. All of these four fields can be
including only these asynchronous LFHs (creating “holes”            used to determine the CDH count and may conflict with each
of unused bytes in standard mode) or both streaming and             other. We identfied 3 edge cases: 1) The total CDH count
asynchronous LFHs (causing entry overlap in standard mode).         and current disk CDH count should match but may conflict
Detection requires checking for such holes and overlaps.            when there is only a single disk; 2) The parser might read all
   4) Data descriptor position. ZIP’s data descriptor feature,      CDHs inside the central directory, regardless of the values of
designed for streaming creation of ZIP files, places file sizes     the CDH count fields; 3) The parser may respect the central
and checksum after the file data. In streaming parsing, without     directory size field, or use all bytes until the EOCDR as the
file size information in the LFH, the data descriptor’s position    central directory.
(i.e., the end of file data) is uncertain. Parsers usually search      In addition, as the CDH count fields are 16-bit, they are
for its signature to determine its position and may verify that     insufficient to represent large central directories with more
its information matches the actual file data. A crafted file        than 65535 entries. As a workaround, some ZIP implementa-
structure can make streaming parsers end file data at the data      tions store the actual CDH count modulo 65536 in EOCDR.
descriptor signature, while in standard mode, the signature is      Consequently, it is possible that two parsers both respect the
part of the file data. This can desynchronize LFH processing        same CDH count field, but one of them thinks there is only a
between the two modes. With a careful design, file sizes and        single CDH, while the other thinks there are 65537 CDHs.
other information can appear self-consistent in both modes,            CD & LFH Offset Confusion (C4). The central directory
without causing holes or overlaps. To prevent this, streaming       is usually located by the offset field in the EOCDR. But some
parsers should report an error when a data descriptor is used       parsers assume that the EOCDR immediately follows the
and the file size is unknown. Notably, compression methods          central directory with no gap between them, and thus use the
like Deflate inherently record the file size, so the position is    central directory size to determine its position.
known even when using a data descriptor.                               When the offset and the size fields in the EOCDR mismatch,
   EOCDR Selection (C2). The EOCDR is placed at the                 it does not necessarily indicate that there is a gap between the
end of the ZIP file with a variable size to store the ZIP file      central directory and the EOCDR. It is also possible that the
comment. It is possible to create a ZIP file containing mul-        ZIP file is padded with extra bytes at the beginning without
tiple EOCDR signatures, all of which can be regarded as             adjusting the offset fields. For instance, this happens in self-
valid EOCDRs, since EOCDR signatures can be treated as a            extracting archives, where executable code is prepended to a
part of the comment field in an EOCDR. Most parsers scan            ZIP archive to extract itself. In order to support this use case,
the ZIP file backward from the end and choose the first en-         some parsers not only assume that the EOCDR immediately
countered EOCDR signature. As a consistency check, some             follows the central directory, but the offset fields in the CDHs
parsers verify that the comment length field either matches         that point to the LFHs are also adjusted correspondingly. For
or is not bigger than the actual length of the comment. When        example, if the offset field in EOCDR has value x, but the size
the consistency check fails, the parser may either report an        field indicates that the actual offset to the central directory is
error or skip the EOCDR with an incorrect comment length            x + δ, then for a CDH with LFH offset value y, the parser will
and continue searching for the next one. In the latter case, the    use y + δ as the actual offset to locate the LFH.
parser may choose a different EOCDR from other parsers that            ZIP64 EOCD Processing (C5). The ZIP64 extension was
do not perform this consistency check.                              developed to support ZIP files larger than 4GB and with more
   The EOCDR selection policy used in libzip is unique and          than 65535 files. It mainly consists of the ZIP64 extended
more complex. For an EOCDR, libzip first checks if there            information extra field, the ZIP64 end of central directory
are inconsistencies such as incorrect comment length or mis-        record (ZIP64 EOCDR), and the ZIP64 end of central direc-
matched field values in a pair of CDH and LFH. When no              tory locator (ZIP64 EOCDL). The ZIP64 EOCDL has a fixed
inconsistency is found, it calculates a “consistency” score         size and contains the offset to the ZIP64 EOCDR whose size
based on the bounding byte range reached in the file, which         is variable. This design enables determined processing of the
is effective in detecting the outermost one among nested ZIP        ZIP64 EOCDR without the need to search for its signature,
archives. Finally, the EOCDR with the highest “consistency”         but it also introduces more discrepancies. We identified the
score is selected. With this policy, an attacker can create some    following ambiguities in ZIP64 EOCD processing: 1) The
inconsistency in the ZIP structure corresponding to the last        ZIP64 EOCDL can be located by a fixed offset from the regu-
EOCDR to trick libzip into using another EOCDR.                     lar EOCDR, or by searching for its signature; 2) The ZIP64
   CDH Count Confusion (C3). The EOCDR provides infor-              EOCDR can be located based on the ZIP64 EOCDL, or by
mation to parse the central directory, including the number         searching for its signature; 3) It is unclear whether to use the
of entries in the central directory. In particular, it provides     ZIP64 EOCDR or the regular EOCDR. A parser may use
two different forms of CDH count, one total CDH count, and          the ZIP64 one whenever it is present, or only use the ZIP64
one CDH count in the current disk, as ZIP files can be split        one when the fields in the regular one are set to 0xFFFFFFFF;
into multiple disks. It also provides the size and the posi-        4) If only a part of the fields in the regular EOCDR are set



438   34th USENIX Security Symposium                                                                           USENIX Association
to 0xFFFFFFFF, it is unclear whether to read all fields from                                     Table 1: Antivirus bypass results for email products. The
the ZIP64 EOCDR, or to partly read from the regular one                                          Filename Confusion (A3) type and the File Path Processing
and mix fields from both ZIP64 and the regular EOCDR; 5)                                         (B) category involve the filenames rather than the contents,
ZIP64 EOCDR provides an extra chance to suffer from the                                          so they have impacts on container formats but not antivirus
same issues as the regular EOCDR, including CDH Count                                            bypass and are therefore excluded here.
Confusion (C3) and CD & LFH Offset Confusion (C4).                                                                Vulnerable #Not Vulnerable


5.3                              Ablation Study                                                                         Redundant                ZIP Structure
                                                                                                                  (A)                     (C)
                                                                                                       Product           Metadata                 Positioning
To evaluate our design decisions, we conducted an ablation                                                       1      2 4 5         1         2 3 4 5
study by comparing the performance of the following setups:
                                                                                                    Coremail                                        #
                              • Full Setup: As described in Section 4.                               Gmail       #      #   #   #                   #   #
                                                                                                     iCloud      #
                              • Argmax-Based UCB: Use the original argmax-based
                                                                                                    inbox.lv                #        #
                                UCB algorithm instead of our version that uses softmax
                                                                                                    mail.com                #                           #
                                for more randomness in mutation (Section 4.4).
                                                                                                     mail.ru                         #
                              • Byte Mutation Only: Use only the general byte-level                   Naver      #      #                               #   #
                                mutations but not the ZIP-level mutations tailored for              Outlook                 #   #                   #
                                individual fields in the ZIP file format (Section 4.2).              Proton                 #
   We ran five 24-hour fuzzing sessions for each setup and                                            Zoho       #      #   #   #    #              #   #
plot the results in Fig. 4. The median numbers of discovered
inconsistent parser pairs are 1197, 1183, and 1055 for the
three setups, where the full setup outperforms the others. The                                   6.1     Secure Email Gateway Bypass
softmax-based UCB algorithm allows exploring different mu-                                       This scenario targets parsing inconsistencies between an-
tation strategies in the same batch. The ZIP-level mutations                                     tivirus scanners and ZIP unarchivers. An attacker can craft a
can generate more valid samples and trigger more inconsis-                                       malicious ZIP file containing malware that can be extracted
tencies by focusing on mutating individual fields.                                               by a ZIP unarchiver but cannot be detected by the antivirus
                                                                                                 scanner. For example, the antivirus scanner might read trun-
                              1200
                                                                                                 cated malware, treat compressed malware as uncompressed,
                                                                                                 regard the malware as a directory instead of a regular file, or
Inconsistent Pairs (Median)




                              1150                                                               assume that the malware is encrypted and give up processing.
                                                                            Full Setup               For host-based antivirus software, this kind of bypass usu-
                                                                            Argmax-Based UCB     ally has limited impact since the malware is likely to be de-
                              1100
                                                                            Byte Mutation Only
                                                                                                 tected during on-access scanning when the user extracts the
                              1050                                                               ZIP archive. However, it is more critical in remote environ-
                                                                                                 ments such as secure email gateways, where host-based de-
                                                                                                 fense might be absent in the end user’s system. For instance,
                              1000
                              1000                                                               Gmail will scan attachments in the emails and display a note
                                                                                                 “Scanned by Gmail” besides the attachments. When a user
                                 0
                                     0      4       8       12         16         20       24    receives an email with an attachment passing the secure email
                                                        Time (hours)                             gateway, they may trust its content based on the scanning
                                                                                                 result and open it through a ZIP unarchiver that is able to
Figure 4: Median number of inconsistent parser pairs over                                        extract the malware, and then the system will be infected.
time for each experiment setup.                                                                      We tested various ZIP parsing ambiguity constructions on
                                                                                                 popular email products that provide virus scanning services
                                                                                                 and allow us to register free testing accounts. We first send
6                              Real-world Exploitations                                          an email to our testing account with a safe ZIP attachment to
                                                                                                 verify that it can be delivered to the inbox and another email
In this subsection, we present five real-world scenarios where                                   with a well-formed ZIP file containing malware to verify that
inconsistencies between ZIP parsers are weaponized. These                                        it is rejected. Then we send emails with malformed ZIP files
scenarios target inconsistencies between different pairs of                                      with malware for antivirus bypass testing. All tested email
parsers in various applications, demonstrating the broad im-                                     products are vulnerable to some construction methods, as
pact of ZIP parsing ambiguities.                                                                 listed in Table 1.



USENIX Association                                                                                                   34th USENIX Security Symposium          439
6.2    Office Document Content Spoofing

This scenario targets parsing inconsistencies between differ-
ent office applications, including office suites like Microsoft
Office and LibreOffice, as well as Web applications such as
plagiarism checkers and AI assistant services (e.g. ChatGPT,
Claude, DeepSeek, etc.) that process office documents.
   An office document is a ZIP file containing some XML
files. The document content is stored in the file with a cer-
tain file path, such as word/document.xml in DOCX files
and content.xml in ODT files. An attacker can construct
an office document that is parsed inconsistently by differ-
ent applications, so that these applications will see different
                                                                             Figure 5: Plagiarism checker bypass example
document content.
   The security implications of content spoofing depend on
the specific use cases. A representative case is plagiarism
checker bypassing, where an unethical student can construct
a document such that plagiarized content is displayed in the
office suite but hidden from the plagiarism checker. The super-
visor reads the document in the local office suite application
and sends the document to a remote service to detect plagia-
rism. The supervisor will read the plagiarized content but may
trust its originality based on the plagiarism checker report.
   Case Study 1. The plagiarism checker provided by China
National Knowledge Infrastructure locates the XML file case-         Figure 6: LibreOffice document signature forgery example
insensitively and picks the last one among duplicate files.
In contrast, Libreoffice ignores WORD/DOCUMENT.XML in up-
percase, vulnerable to Case Sensitivity (B4). WPS Office on          6.3    LibreOffice Document Signature Forgery
Windows locates the file case-insensitively but selects the first
one among duplicate files, vulnerable to Duplicate Files (B1).       This scenario targets parsing inconsistency between the signa-
                                                                     ture verifier and the document viewer of LibreOffice. Suppose
   Case Study 2. A dishonest student can construct a docu-           that the attacker has obtained a legitimately signed document.
ment with the structure shown in Fig. 5. The two columns of          With the legitimate signature and the corresponding document
the table represents two possible parsing results, where each        content, the attacker can construct a malicious document. Due
row in both columns represents the same bytes in the ZIP             to parsing inconsistency, the signature verifier sees the origi-
file. It exploits ZIP64 EOCD Processing (C5), where ZIP64            nal legitimate content and reports that the signature is valid.
EOCDR and EOCDL are present in the ZIP file, but the fields          However, the document viewer displays the manipulated con-
in the regular EOCDR are not set to 0xffffffff as required           tent, leading to signature forgery.
in the specification. In this case, Microsoft Office, LibreOffice,      Different components in a single application usually use
and WPS Office will ignore the ZIP64 EOCDR and use the               the same parser and are thus not vulnerable to parsing dis-
central directory corresponding to the regular EOCDR, thus           crepancies. In this specific case, LibreOffice indeed uses the
reading the word/document.xml with plagiarism, as the right          same parser for signature verification and document display.
column in Fig. 5, where the extra word/document.xml and              However, the parser has a normal mode and a recovery mode,
ZIP64 EOCD are treated as a CDH comment field by set-                where the normal mode detects inconsistencies in the ZIP file
ting the comment length field in the last CDH. However,              but the recovery mode ignores errors and works in the stream-
the PapersOwl plagiarism checker will recognize the ZIP64            ing parsing mode. When the parser in the normal mode finds
EOCDR and read the word/document.xml without plagia-                 a document to be corrupted, it will use the recovery mode to
rism, as the left column in Fig. 5, so it will report no plagia-     display the document, but the signature validation still uses
rism in the document. In addition, the Grammarly plagiarism          the normal mode and the valid status remains unchanged.
checker works in the Streaming Parsing (C1) mode. It also               Case Study. Based on a signed document, the attacker
parses the document as the left column, but it reads the LFHs        modifies the original word/document.xml entry to change
one by one instead of relying on the ZIP64 or regular EOCDR.         its filename field in the LFH and adds a new entry with file-



440   34th USENIX Security Symposium                                                                          USENIX Association
name field word/document.xml in LFH to exploit the File-          7     Discussion
name Confusion (A3) ambiguity, as illustrated in Fig. 6. The
signature verifier will validate the signature against the file   7.1     Responsible Disclosure
with word/document.xml as CDH filename, but the docu-
ment displayer will show the file with word/document.xml          We have reported our findings to the affected vendors and
as LFH filename after entering the recovery mode.                 coordinated in addressing these issues. We received many
                                                                  acknowledgments and bounty awards, as summarized below.

6.4 Spring Boot Nested JAR Signature Forgery                      7.1.1   Email Services
This scenario targets parsing inconsistency between two JAR
                                                                      • Gmail: acknowledged our report, rated the vulnerability
parsers used by the NestedJarFile class in Spring Boot
                                                                        as medium severity with a bug bounty reward of $1337,
Loader. A custom ZIP parser ZipContent is implemented
                                                                        and deployed defense against the reported issues.
to read the content of a JAR file, which operates in the stan-
dard ZIP parsing mode. However, the JarInputStream class              • Coremail: acknowledged our report, rated the vulnera-
provided by Java is utilized to verify its signature, with the          bility as medium severity with a bug bounty reward of
Streaming Parsing (C1) mode. Therefore, with a legitimately             about $400, and arranged to fix the reported issues.
signed nested JAR file, the attacker can forge a new one with
arbitrary contents and pass the signature verification.               • Zoho: acknowledged our report, rated the vulnerability
                                                                        as medium severity with a bug bounty reward of $200
                                                                        and deployed defense against the reported issues.
6.5    VS Code Extension ID Impersonation                             • Outlook: acknowledged our report and rated the vulner-
This scenario targets parsing inconsistency between the VS              ability as low severity with an entry in the MSRC Online
Code extension Marketplace server and the VS Code client.               Services Acknowledgements. They also improved their
VS Code extension packages are ZIP files. The Marketplace               antivirus scanning logic according to our report.
ensures that authors can publish extensions only within their         • Proton Mail, Naver, mail.com, and mail.ru: our reports
own namespaces. The publisher and extension ID are recorded             were acknowledged but not eligible for bounty rewards.
in the extension.vsixmanifest file. The server and the
client are vulnerable to Filename Confusion (A3), allowing the        • iCloud: said they were still investigating our report.
attacker to construct an extension package such that the server
                                                                      • inbox.lv: has not responded to our report yet.
and the client read different extension.vsixmanifest files
and thus different publishers, and then the attacker will be
able to circumvent the namespace isolation rule.                  7.1.2   Office Applications
   Case Study. Suppose that the attacker owns the namespace
attacker and the target extension is bob.foo. The attacker            • LibreOffice: promptly acknowledged our reports on
can publish a malicious extension exploiting the Unicode                both content spoofing and signature forgery. They car-
path extra field such that the Marketplace server recognizes            ried out an in-depth conversation with us and inspired us
its ID as attacker.bar but the VS Code client reads its ID as           to develop some novel bypass techniques against their
bob.foo, as demonstrated in Fig. 7. Consequently, if a victim           proposed patches. They fixed these issues and assigned
user installs the malicious extension, it will impersonate the          CVE-2024-7788 for the signature forgery vulnerability.
target extension and replace the originally installed one.            • cnki.net: acknowledged our report on plagiarism scan-
                                                                        ning bypass and planned to fix the issue.


                                                                  7.1.3   ZIP Parsers

                                                                      • Go archive/zip: acknowledged our report, assigned
                                                                        CVE-2024-24789, and changed their implementation
                                                                        to reject truncated EOCDR comments.
                                                                      • libzip: acknowledged our report and changed their
                                                                        unique implementation of EOCDR selection to align
                                                                        with other parsers in the lax mode and report an error
  Figure 7: VS Code extension ID impersonation example                  in the strict mode. They have also implemented stricter
                                                                        consistency checks according to our suggestions.



USENIX Association                                                                     34th USENIX Security Symposium        441
7.1.4    Others                                                    amount of system resources to extract an archive multiple
                                                                   times. An alternative approach is to combine multiple parsing
   • Spring Boot: acknowledged our report, assigned CVE-           logics or try all possible choices in a single parser. For in-
     2024-38807, and fixed the vulnerability.                      stance, Gmail identifies all CDHs and the corresponding files,
   • Open VSX: acknowledged our report and implemented             even if they are overlapped or outside of the central directory.
     a check for malicious extension packages.                        Fix unique parsing behaviors. Parsing ambiguities can also
                                                                   be mitigated by making parsers behave consistently. Since the
                                                                   ZIP specification is vague and lacks many important details,
7.2     Mitigation                                                 there is no de facto standard, and it is usually infeasible to
We propose seven mitigation strategies with different con-         determine which parsers are correct when the implementa-
cerns and trade-offs. Developers can choose the most appro-        tions are inconsistent. It is challenging to collaboratively fix
priate mitigation according to the specific situation.             inconsistencies without the presence of a standard, but we
   Use the same parser. If all parsers used in a workflow          can address the outlier behaviors where a few parsers behave
are controlled by the same party, then the best solution is to     differently from the majority of other parsers.
use the same parser in all places. However, the parsers are           Better file format design. If we were able to redesign the
usually controlled by multiple parties, where no single party      ZIP file format or to design a new archive format, we could
can control the parsers used by others, so this simple solution    learn from the history and design a better file format:
has limited applications.                                             • Each part of a format must be unambiguously located. It
   On-access scanning. Antivirus software typically uses on-            is a bad idea to rely on fragile signature searching.
access scanning to compensate for the shortcomings of di-
rectly scanning archive files. This is not only a solution for        • Conflicting data resolution should be clearly defined,
antivirus, but the same concept also applies to other scenar-           ideally by avoiding redundant data in the first place.
ios, where a component can use the parsing result of another          • Leave room for backward-compatible feature extensions.
component instead of parsing the ZIP file again. It can be              Make it clear whether an extension is enabled or not.
regarded as a special way to enforce using the same parser.           • Fields that are allowed to be silently ignored should not
For example, a plagiarism checker may work directly inside              contain security-sensitive data. For example, the extra
an office suite, using the parsing result from the office suite.        fields in ZIP should not contain filenames and sizes.
   Normalize the ZIP file. To exploit ZIP parsing ambiguities,
the attacker usually needs to carefully manipulate the fields
                                                                   7.3    Limitation
of a ZIP file, which cannot be achieved by a regular ZIP
archiver. Most ambiguities will disappear if the ZIP file is       We chose blackbox fuzzing so that we can support more
first extracted and then repacked. Therefore, if we care about     parsers and programming languages to uncover more ambigu-
only the contents but not the integrity of the whole ZIP file,     ities. As a blackbox fuzzer, Z IP D IFF only receives the parsing
we can normalize the ZIP file by extracting and repacking it       outputs as feedback and does not utilize greybox feedback
before processing.                                                 like code coverage. It might generate more sophisticated test
   Identify ambiguous patterns in ZIP files. Malformed ZIP         samples with cross-language coverage-guided fuzzing.
files can be identified by special patterns, such as unused           Z IP D IFF instructs the parsers to extract ZIP archives onto
bytes and conflicting field values in CDH and LFH. For in-         the file system in order to unify the testing process and pro-
stance, libzip provides a CHECKCONS flag with intensive con-       vide easier parser integration. However, the output on the file
sistency checks, and LibreOffice warns users of malformed          system might not match the internal parsing result exactly.
document files. A service may reject or report all malformed       For example, duplicate files may be overwritten either in the
ZIP files without affecting legitimate users, as malformed files   internal state or when writing to the file on the disk. It may
are usually intentionally crafted. However, the identification     obtain more accurate results if the internal states are recorded.
of ambiguous patterns relies on existing knowledge, and pre-          Although we only identified vulnerabilities in five scenar-
viously unknown ambiguities are hard to detect. In addition,       ios, the ZIP file format is also used in other security-sensitive
malformed ZIP files also have legitimate use cases, such as        scenarios. Further research may extend our results to broader
self-extracting files with prepended executable code and APK       fields. For instance, the 3MF data format used in 3D printing
with signature data before the central directory.                  is based on ZIP and vulnerable to UI spoofing attacks [33].
   Incorporate different parsing logics. Instead of relying on     While we focus on plagiarism checkers for the office docu-
some pre-defined patterns, a service can identify ambiguous        ment content spoofing scenario, it is also interesting to see
ZIP files by incorporating multiple parsers to see if they pro-    whether this can be used for indirect prompt injection attacks
duce consistent outputs. This can potentially detect previously    against large language models.
unknown ambiguities. However, a large number of parsers are           Besides ZIP, other archive formats like TAR also suffer
needed to cover all ambiguities, and it may consume a large        from parsing ambiguities [19]. However, ZIP is structurally



442     34th USENIX Security Symposium                                                                       USENIX Association
more complex, consisting of LFHs, CDHs, and EOCDR. In                vulnerable to both attacks, including archive formats like ZIP
contrast, TAR uses a simpler linear header structure, supports       and other formats like ELF.
fewer extensions, and separates archiving from compression.             Panakkal [26] summarized several vulnerabilities on mal-
We focus on ZIP in this paper because its complexity makes           formed APK files, and constructed a ZIP file that can be rec-
it more prone to semantic gaps. Z IP D IFF could be extended         ognized as multiple container formats by mixing files related
to handle other archive formats by replacing the ZIP-level           to different formats.
mutations with other format-specific mutation strategies. We
leave this extension as future work.                                   Two more vulnerabilities are also caused by ZIP pars-
                                                                     ing ambiguities. One [16] exploits inconsistencies between
                                                                     parsers used in the Mozilla Firefox add-on review pipeline to
8     Related Work                                                   submit malicious add-on that appears benign at review time.
                                                                     The other [23] exploits a custom signature mechanism utiliz-
8.1    Semantic Gaps and Differential Testing                        ing the file comment field in the EOCDR to bypass signature
                                                                     verification in firmware updates.
There is a rich literature on semantic gaps in various as-
pects of network security, including TLS [8, 10, 13, 21, 37, 41],       In summary, there is a lack of systemantic research on ZIP
RPKI [24], QUIC [31], HTTP [11, 18, 35, 44, 50], CSP [46],           parsing ambiguities, with most previous studies focusing on
URL [5, 32, 36, 39, 45, 47], HTML [22], JSON [25], and               individual vulnerabilities. Our work provided the first system-
Email [12, 43, 49]. These works use various methods to ana-          atic synthesis of existing knowledge, developed a differential
lyze semantic gaps, ranging from manual, ad-hoc testing to           fuzzer, uncovered additional ambiguity classes, extended con-
blackbox and greybox differential fuzzing.                           struction techniques, delivered an up-to-date evaluation of
   Petsios et al. developed a domain-independent differential        50 parsers across 19 programming languages, and identified
testing framework called N EZHA [28] and demonstrated its            vulnerabilities in novel scenarios.
effectiveness by uncovering parsing discrepancies in ELF, XZ,          To the best of our knowledge, among the 14 ambiguity
PDF, and TLS. Our fuzzer Z IP D IFF determines interesting           types, ten of them are discovered or extended by us with
seeds by two metrics ok and incons, as illustrated in Algo-          novel variants and techniques to cause more inconsistencies
rithm 2. The ok metric is essentially the output δ-diversity         and bypass some checks. Details are listed in Table 2.
proposed by Petsios et al., if we only care about the success
status but not the output contents. Since ZIP parsers produce
                                                                           Table 2: Novelty of the ZIP ambiguity types
complex file trees as outputs, it is impractical to use the entire
                                                                      # New ambiguity discovered by us − Known ambiguity
output contents as the output diversity. To utilize the output
contents in fuzzing guidance, Z IP D IFF uses pairwise equality
as the incons metric.                                                  Type    Novel     New type, variant, or technique
   Zheng et al. [50] incorporated the UCT-Rand algorithm to             A1        −                    -
select grammar nodes in their generation-based fuzzer R E -             A2        #      Multiple ZIP64 & Fixing CRC32
QS M INER . In contrast, our mutation-based fuzzer Z IP D IFF           A3        #      Unicode path extra field techniques
utilizes UCB to guide mutation strategy selection. We use the                            Filename ending with backslash &
softmax function as a balance between the original argmax-              A4        #
                                                                                         Host system support in file attributes
based UCB and UCT-Rand.                                                                  CDH vs LFH inconsistency for the
                                                                        A5        #
                                                                                         “encrypted” general purpose flag
8.2    ZIP Parsing Ambiguities                                          B1        −                    -
                                                                                         Special characters besides null byte &
As early as 2008, Alvarez and Zoller presented a talk [34, 51]          B2        #
                                                                                         Affected by the host system field
on antivirus evasion based on parsing discrepancies of various          B3        #      The entire type is novel
archive formats, including ZIP, RAR, and CAB. They revis-               B4        −                    -
ited these issues in 2020 [52] and found that many antivirus                             Multiple construction techniques to
engines are still vulnerable. Vuksan et al. gave a similar talk         C1        #
                                                                                         bypass inconsistent ZIP file checking
in 2010 [42], revealing more bypass techniques. Coldwind                                 Coldwind [15] mistakenly stated
also presented talks [14, 15] that summarized attack surfaces                            that libzip selected the first EOCDR.
of the ZIP file format including parsing ambiguities.                   C2        #
                                                                                         We identified the real mechanism
   Jana and Shmatikov [19] proposed two types of an-                                     used by libzip and some other parsers.
tivirus bypass attacks based on file parsing ambiguities: the           C3        #      Total vs current disk CDH count
Chameleon attack exploits conflicting file type detection and
                                                                        C4        −                    -
the Werewolf attack exploits inconsistent parsing logic of the
                                                                        C5        #      The entire type is novel
same file type. Their work suggested that many file types are



USENIX Association                                                                       34th USENIX Security Symposium        443
8.3    Other ZIP Attacks                                            paper and the artifacts. This work is supported by the National
                                                                    Natural Science Foundation of China (grant #62272265).
Besides parsing ambiguities, the ZIP file format also suffers
from other attacks, such as ZIP bomb and ZIP Slip.
    The data amplification attack, known as ZIP bomb, exhausts      Ethics Considerations
remote servers’ resources by highly-compressed ZIP files.
Pellegrino and Balzarotti [27] investigated the use of data         We have responsibly disclosed the identified vulnerabilities
compression in network services and analyzed relevant pitfalls      to the affected vendors, as listed in Section 7.1.
and vulnerabilities. Canet et al. [9] focused on decompression         In the email product tests, we sent the emails with malicious
quines, archives that decompress to themselves, and their           attachments from our own server to our own email product
impact on antivirus engines. Fifield [17] constructed a ZIP         accounts. We did not send malicious emails to any other user
bomb that reaches a compression ratio of over 28 million by         or from these email products. We throttled the email-sending
overlapping entries in a ZIP file, without the need of nested       frequency to avoid excessive pressure on the products.
archives or uncommon compression algorithms. Their work                In the plagiarism checker tests, we uploaded the malicious
also highlighted the compatibility issues among ZIP parsers,        testing documents to the plagiarism detection services using
although from a perspective of finding universally working          our own account when an account was required. We did not
ZIP bombs rather than exploiting these inconsistencies.             send these malicious documents to other people.
    ZIP unarchivers are also vulnerable to path traversal at-          In the VS Code extension tests, we published the testing VS
tacks, where files with malicious paths (../) are extracted         Code extension on the marketplace with an explicit warning
outside of the target directory. The earliest instances of such     in the extension description that it is used for testing purposes
vulnerabilities on the CVE list are CVE-2001-1268 [1] and           only. It also does not contain any destructive functions. Only
CVE-2001-1269 [2]. Years later, the Synk security team iden-        a popup message is used to indicate that the modified version
tified many ZIP applications were vulnerable and branded the        of the extension is running.
vulnerability as ZIP Slip [38].
    Mitigation of path traversal can lead to inconsistencies
in Path Canonicalization (B3). For example, some parsers            Open Science
remove ../ in the file paths, while others resolve them and
                                                                    We share the artifacts on Zenodo [48] and GitHub2 for the
check whether the final result is inside the target directory.
                                                                    following components: the Z IP D IFF differential fuzzer (Sec-
A file path foo/../bar is transformed to foo/bar in the
                                                                    tion 4) along with ablation study options (Section 5.3), the
former, but bar in the latter.
                                                                    Docker images of the tested ZIP parsers (Table 3), construc-
                                                                    tion of ambiguous ZIP file samples (Section 5.2), and utility
9     Conclusion                                                    scripts to reproduce the results.

This paper presented the Z IP D IFF differential fuzzing tool and
evaluated it on 50 ZIP parsers across 19 languages. The result      References
revealed that almost all pairs of ZIP parsers are inconsistent.
We summarized ZIP parsing ambiguities as 14 distinct types           [1] CVE-2001-1268, 2001. https://nvd.nist.gov/vul
in three categories with different root-causes. These ambigui-           n/detail/CVE-2001-1268.
ties can be exploited in various real-world scenarios as ZIP
                                                                     [2] CVE-2001-1269, 2001. https://nvd.nist.gov/vul
is used in numerous applications. The vulnerabilities can be
                                                                         n/detail/CVE-2001-1269.
mitigated by incorporating suitable defense strategies.
   By examining ZIP parsing ambiguities as a specific in-            [3] CVE-2003-1154, 2003. https://nvd.nist.gov/vul
stance of the broader problem on semantic gaps, our work                 n/detail/CVE-2003-1154.
highlights the critical need for rigorously defined file formats
and consistent parser implementations. We hope this study            [4] ISO/IEC 21320-1:2015(E) Information Technology —
not only inspires the community to identify and reduce dis-              Document Container File — Part 1: Core, 2015.
crepancies between ZIP parsers and to address the relevant
vulnerabilities, but also raises general awareness of the secu-      [5] Dashmeet Kaur Ajmani, Igibek Koishybayev, and
rity implications of semantic gaps.                                      Alexandros Kapravelos. yoU aRe a Liar://A Unified
                                                                         Framework for Cross-Testing URL Parsers. In 2022
                                                                         IEEE Security and Privacy Workshops (SPW), pages 51–
Acknowledgments                                                          58, San Francisco, CA, USA, May 2022. IEEE. https:
                                                                         //doi.org/10.1109/SPW54247.2022.9833883.
We sincerely thank all anonymous reviewers for their insight-
ful and constructive feedback that greatly helped improve the          2 https://github.com/ouuan/ZipDiff




444    34th USENIX Security Symposium                                                                         USENIX Association
 [6] Abhishek Arya, Oliver Chang, Jonathan Metzman,            [15] Gynvael Coldwind. Ten thousand security pitfalls: The
     Kostya Serebryany, and Dongge Liu. OSS-Fuzz. https:            ZIP file format, 2018. https://gynvael.coldwind
     //github.com/google/oss-fuzz.                                  .pl/?id=682.

 [7] Peter Auer, Nicol O Cesa-Bianchi, and Paul Fischer.       [16] David Fifield. Ambiguous Zip Parsing Allows Hid-
     Finite-time Analysis of the Multiarmed Bandit Problem.         ing Add-on Files from Linter and Reviewers, April
     Machine Learning, 47:235–256, May 2002. https://               2019. https://www.bamsoftware.com/sec/mozill
     doi.org/10.1023/A:1013689704352.                               a/#1534483.

 [8] Chad Brubaker, Suman Jana, Baishakhi Ray, Sarfraz         [17] David Fifield. A better zip bomb. In 13th USENIX
     Khurshid, and Vitaly Shmatikov. Using Frankencerts for         Workshop on Offensive Technologies (WOOT 19),
     Automated Adversarial Testing of Certificate Validation        Santa Clara, CA, August 2019. USENIX Associa-
     in SSL/TLS Implementations. In 2014 IEEE Symposium             tion. https://www.usenix.org/conference/woot
     on Security and Privacy, pages 114–129, San Jose, CA,          19/presentation/fifield.
     May 2014. IEEE. https://doi.org/10.1109/SP.2
                                                               [18] Bahruz Jabiyev, Steven Sprecher, Kaan Onarlioglu, and
     014.15.
                                                                    Engin Kirda. T-Reqs: HTTP Request Smuggling with
 [9] Margaux Canet, Amrit Kumar, Cédric Lauradoux, Mary-            Differential Fuzzing. In Proceedings of the 2021 ACM
     Andréa Rakotomanga, and Reihaneh Safavi-Naini. De-             SIGSAC Conference on Computer and Communications
     compression Quines and Anti-Viruses. In Proceedings            Security, pages 1805–1820, Virtual Event Republic of
     of the Seventh ACM on Conference on Data and Appli-            Korea, November 2021. ACM. https://doi.org/10
     cation Security and Privacy, pages 23–34, Scottsdale           .1145/3460120.3485384.
     Arizona USA, March 2017. ACM. https://doi.org/            [19] Suman Jana and Vitaly Shmatikov. Abusing file pro-
     10.1145/3029806.3029818.                                       cessing in malware detectors for fun and profit. In
[10] Chu Chen, Pinghong Ren, Zhenhua Duan, Cong Tian,               2012 IEEE Symposium on Security and Privacy, pages
     Xu Lu, and Bin Yu. SBDT: Search-Based Differential             80–94, San Francisco, California, USA, 2012. IEEE.
     Testing of Certificate Parsers in SSL/TLS Implemen-            https://doi.org/10.1109/SP.2012.15.
     tations. In Proceedings of the 32nd ACM SIGSOFT           [20] Jay Freeman. Exploit (& Fix) Android "Master Key".
     International Symposium on Software Testing and Anal-          https://www.saurik.com/masterkey1.html.
     ysis, pages 967–979, Seattle WA USA, July 2023. ACM.
     https://doi.org/10.1145/3597926.3598110.                  [21] Dan Kaminsky, Meredith L Patterson, and Len Sas-
                                                                    saman. Pki layer cake: New collision attacks against the
[11] Jianjun Chen, Jian Jiang, Haixin Duan, Nicholas Weaver,        global x. 509 infrastructure. In International Conference
     Tao Wan, and Vern Paxson. Host of Troubles: Multi-             on Financial Cryptography and Data Security, pages
     ple Host Ambiguities in HTTP Implementations. In               289–303, Berlin, Heidelberg, 2010. Springer Berlin Hei-
     Proceedings of the 2016 ACM SIGSAC Conference on               delberg. https://doi.org/10.1007/978-3-642-14
     Computer and Communications Security, pages 1516–              577-3_22.
     1527, Vienna Austria, October 2016. ACM. https:
     //doi.org/10.1145/2976749.2978394.                        [22] David Klein and Martin Johns. Parse Me, Baby, One
                                                                    More Time: Bypassing HTML Sanitizer via Parsing
[12] Jianjun Chen, Vern Paxson, and Jian Jiang. Composition         Differentials. In 2024 IEEE Symposium on Security and
     Kills: A Case Study of Email Sender Authentication. In         Privacy (SP), pages 203–221, San Francisco, CA, USA,
     29th USENIX Security Symposium (USENIX Security                May 2024. IEEE. https://doi.org/10.1109/SP54
     20), pages 2183–2199. USENIX Association, August               263.2024.00177.
     2020. https://www.usenix.org/conference/usen
     ixsecurity20/presentation/chen-jianjun.                   [23] Daniel Komaromy and Lorant Szabo. UnZiploc: A bug
                                                                    hunter’s journey from 0- click to platform compromise,
[13] Yuting Chen and Zhendong Su. Guided differential               2022. https://labs.taszk.io/articles/post/un
     testing of certificate validation in SSL/TLS implemen-         ziploc/.
     tations. In Proceedings of the 2015 10th Joint Meet-
     ing on Foundations of Software Engineering, pages         [24] Donika Mirdita, Haya Shulman, Niklas Vogel, and
     793–804, Bergamo Italy, August 2015. ACM. https:               Michael Waidner. The CURE to Vulnerabilities in
     //doi.org/10.1145/2786805.2786835.                             RPKI Validation. In Proceedings 2024 Network and
                                                                    Distributed System Security Symposium, San Diego, CA,
[14] Gynvael Coldwind. Ten thousand traps: ZIP, RAR, etc.,          USA, 2024. Internet Society. https://doi.org/10.1
     2013. https://gynvael.coldwind.pl/?id=523.                     4722/ndss.2024.241093.



USENIX Association                                                                34th USENIX Security Symposium        445
[25] Jonas Möller, Felix Weißberg, Lukas Pirch, Thorsten            search in Attacks, Intrusions and Defenses, pages 179–
     Eisenhofer, and Konrad Rieck. Cross-Language Differ-           194, Hong Kong China, October 2023. ACM. https:
     ential Testing of JSON Parsers. In Proceedings of the          //doi.org/10.1145/3607199.3607216.
     19th ACM Asia Conference on Computer and Commu-
     nications Security, pages 1117–1127, Singapore Singa-     [34] Sergio Alvarez and Thierry Zoller. The Death of AV De-
     pore, July 2024. ACM. https://doi.org/10.1145/                 fense in Depth? - revisiting Anti-Virus Software, 2008.
     3634737.3657003.
                                                               [35] Kaiwen Shen, Jianyu Lu, Yaru Yang, Jianjun Chen,
[26] Gregory R Panakkal.    Leaving our zip undone:                 Mingming Zhang, Haixin Duan, Jia Zhang, and Xi-
     How to abuse zip to deliver malware apps, 2014.                aofeng Zheng. HDiff: A Semi-automatic Framework
     https://www.virusbulletin.com/virusbulleti                     for Discovering Semantic Gap Attack in HTTP Imple-
     n/2015/03/paper-leaving-our-zip-undone-how                     mentations. In 2022 52nd Annual IEEE/IFIP Interna-
    -abuse-zip-deliver-malware-apps.                                tional Conference on Dependable Systems and Networks
                                                                    (DSN), pages 1–13, Baltimore, MD, USA, June 2022.
[27] Giancarlo Pellegrino, Davide Balzarotti, Stefan Winter,        IEEE. https://doi.org/10.1109/DSN53405.2022.
     and Neeraj Suri. In the compression Hornet’s nest: A           00014.
     security study of data compression in network services.
     In 24th USENIX Security Symposium (USENIX Security        [36] Taiga Shirakura, Hirokazu Hasegawa, Yukiko Yam-
     15), pages 801–816, Washington, D.C., August 2015.             aguchi, and Hajime Shimada. Potential Security Risks
     USENIX Association. https://www.usenix.org/c                   of Internationalized Domain Name Processing for Hy-
     onference/usenixsecurity15/technical-sessi                     perlink. In 2021 IEEE 45th Annual Computers, Soft-
     ons/presentation/pellegrino.                                   ware, and Applications Conference (COMPSAC), pages
                                                                    1092–1098, Madrid, Spain, July 2021. IEEE. https:
[28] Theofilos Petsios, Adrian Tang, Salvatore Stolfo, An-          //doi.org/10.1109/COMPSAC51774.2021.00149.
     gelos D. Keromytis, and Suman Jana. NEZHA: Ef-
     ficient Domain-Independent Differential Testing. In       [37] Suphannee Sivakorn, George Argyros, Kexin Pei, An-
     2017 IEEE Symposium on Security and Privacy (SP),              gelos D. Keromytis, and Suman Jana. HVLearn: Auto-
     pages 615–632, San Jose, CA, USA, May 2017. IEEE.              mated Black-Box Analysis of Hostname Verification in
     https://doi.org/10.1109/SP.2017.27.                            SSL/TLS Implementations. In 2017 IEEE Symposium
                                                                    on Security and Privacy (SP), pages 521–538, San Jose,
[29] PKWARE Inc. APPNOTE.TXT - .ZIP File Format                     CA, USA, May 2017. IEEE. https://doi.org/10.1
     Specification, 2022. https://pkware.cachefly.ne                109/SP.2017.46.
     t/webdocs/casestudies/APPNOTE.TXT.
                                                               [38] Snyk. Zip Slip Vulnerability, 2018. https://securi
[30] Jon Postel. DoD standard Transmission Control Proto-           ty.snyk.io/research/zip-slip-vulnerability.
     col. RFC 761, January 1980. https://www.rfc-edit
     or.org/info/rfc761.                                       [39] Daniel Stenberg. My URL isn’t your URL, May
                                                                    2016. https://daniel.haxx.se/blog/2016/05/11
[31] Gaganjeet Singh Reen and Christian Rossow. DPIFuzz:            /my-url-isnt-your-url/.
     A Differential Fuzzing Framework to Detect DPI Elu-
     sion Strategies for QUIC. In Annual Computer Security     [40] Martin Stigge, Henryk Plötz, Wolf Müller, and Jens-
     Applications Conference, pages 332–344, Austin USA,            Peter Redlich. Reversing CRC – Theory and Practice,
     December 2020. ACM. https://doi.org/10.1145/                   2006.
     3427228.3427662.
                                                               [41] Cong Tian, Chu Chen, Zhenhua Duan, and Liang Zhao.
[32] Joshua Reynolds, Adam Bates, and Michael Bailey.               Differential Testing of Certificate Validation in SSL/TLS
     Equivocal URLs: Understanding the Fragmented Space             Implementations: An RFC-guided Approach. ACM
     of URL Parser Implementations. In Vijayalakshmi                Transactions on Software Engineering and Methodol-
     Atluri, Roberto Di Pietro, Christian D. Jensen, and            ogy, 28(4):1–37, October 2019. https://doi.org/10
     Weizhi Meng, editors, Computer Security – ESORICS              .1145/3355048.
     2022, volume 13556, pages 166–185, Cham, 2022.
     Springer Nature Switzerland. https://doi.org/10           [42] Mario Vuksan, Tomislav Pericin, and Brian Karney. Hid-
     .1007/978-3-031-17143-7_9.                                     ing in the Familiar: Steganography and Vulnerabilities
                                                                    in Popular Archives Formats, 2010.
[33] Jost Rossel, Vladislav Mladenov, and Juraj Somorovsky.
     Security Analysis of the 3MF Data Format. In Pro-         [43] Chuhan Wang, Yasuhiro Kuranaga, Yihang Wang, Ming-
     ceedings of the 26th International Symposium on Re-            ming Zhang, Linkai Zheng, Xiang Li, Jianjun Chen,



446   34th USENIX Security Symposium                                                                   USENIX Association
     Haixin Duan, Yanzhong Lin, and Qingfeng Pan. Break-              San Diego, CA, USA, 2024. Internet Society. https:
     SPF: How Shared Infrastructures Magnify SPF Vul-                 //doi.org/10.14722/ndss.2024.24031.
     nerabilities Across the Internet. In Proceedings 2024
     Network and Distributed System Security Symposium,          [51] Thierry Zoller. Anti-Virus archive bypasses explained,
     San Diego, CA, USA, 2024. Internet Society. https:               April 2009. https://blog.zoller.lu/2009/04/c
     //doi.org/10.14722/ndss.2024.23113.                              ase-for-av-bypassesevasions.html.
                                                                 [52] Thierry Zoller.       Advisories 2020, 2020.
[44] Qi Wang, Jianjun Chen, Zheyu Jiang, Run Guo, Xi-
                                                                      https://blog.zoller.lu/2020/01/a-new-b
     meng Liu, Chao Zhang, and Haixin Duan. Break the
                                                                      log-post-since-last-one-in-2013.html.
     Wall from Bottom: Automated Discovery of Protocol-
     Level Evasion Vulnerabilities in Web Application Fire-
     walls. In 2024 IEEE Symposium on Security and Pri-          A    Algorithms
     vacy (SP), pages 185–202, San Francisco, CA, USA,
     May 2024. IEEE. https://doi.org/10.1109/SP54                Pseudocode for the algorithms used in Section 4 are listed in
     263.2024.00129.                                             Algorithm 1, Algorithm 2, and Algorithm 3.

[45] Xianbo Wang, Wing Cheong Lau, Ronghai Yang, and             Algorithm 1 Directory Hash Computation
     Shangcheng Shi. Make Redirection Evil Again: URL
                                                                 Input: The path to the directory.
     Parser Issues in OAuth, 2019.
                                                                 Output: The hash value of the directory Hash(path).
[46] Seongil Wi, Trung Tin Nguyen, Jihwan Kim, Ben Stock,         1: H ← empty hasher
     and Sooel Son. DiffCSP: Finding Browser Bugs in Con-         2: if path is a symbolic link then
     tent Security Policy Enforcement through Differential        3:    Update H with ‘L’
     Testing. In Proceedings 2023 Network and Distributed         4:    Update H with the link target
     System Security Symposium, San Diego, CA, USA, 2023.         5: else if path is a regular file then
     Internet Society. https://doi.org/10.14722/ndss.             6:    Update H with ‘F’
     2023.24200.                                                  7:    Update H with the file content
                                                                  8: else if path is a directory then
[47] Qilang Yang, Dimitrios Damopoulos, and Georgios Por-         9:    Update H with ‘D’
     tokalidis. WYSISNWIV: What You Scan Is Not What             10:    C ← empty list
     I Visit. In Herbert Bos, Fabian Monrose, and Gre-           11:    for each entry in the directory do
     gory Blanc, editors, Research in Attacks, Intrusions, and   12:       digest ← Hash(entry)
     Defenses, volume 9404, pages 317–338, Cham, 2015.           13:       if digest is empty then
     Springer International Publishing. https://doi.org/         14:          Skip to the next entry          // empty directory
     10.1007/978-3-319-26362-5_15.                               15:       end if
[48] Yufan You, Jianjun Chen, Qi Wang, and Haixin Duan.          16:       He ← empty hasher
     Artifacts for "My ZIP isn’t your ZIP: Identifying and Ex-   17:       if entry has special characters in base name then
     ploiting Semantic Gaps Between ZIP Parsers" (USENIX         18:          // Ignore inconsistent special characters
     Security ’25), May 2025. https://doi.org/10.528             19:          Update He with ‘S’
     1/zenodo.15526863.                                          20:       else
                                                                 21:          Update He with ‘N’
[49] Jiahe Zhang, Jianjun Chen, Qi Wang, Hangyu Zhang,           22:          Update He with the base name of entry
     Chuhan Wang, Jianwei Zhuge, and Haixin Duan. In-            23:       end if
     box Invasion: Exploiting MIME Ambiguities to Evade          24:       Update He with digest
     Email Attachment Detectors. In Proceedings of the 2024      25:       Insert He . f inalize() into C
     on ACM SIGSAC Conference on Computer and Commu-             26:    end for
     nications Security, pages 467–481, Salt Lake City UT        27:    if C is empty then
     USA, December 2024. ACM. https://doi.org/10                 28:       return empty
     .1145/3658644.3670386.                                      29:    end if
                                                                 30:    Sort C alphabetically // entry order does not matter
[50] Linkai Zheng, Xiang Li, Chuhan Wang, Run Guo,
                                                                 31:    for each digest in C do
     Haixin Duan, Jianjun Chen, Chao Zhang, and Kaiwen
                                                                 32:       Update H with digest
     Shen. ReqsMiner: Automated Discovery of CDN
                                                                 33:    end for
     Forwarding Request Inconsistencies and DoS Attacks
                                                                 34: end if
     with Grammar-based Fuzzing. In Proceedings 2024
                                                                 35: return H. f inalize()
     Network and Distributed System Security Symposium,



USENIX Association                                                                   34th USENIX Security Symposium        447
Algorithm 2 Interesting Sample Detection                         Algorithm 3 Fuzzing With UCB-Based Mutation Selection
Input: Parser outputs O corresponding to the input sample.       Input: K mutation strategies, batch size B, UCB weight de-
Output: Whether the sample is interesting. The sample is             caying rate α, softmax temperature β.
    inserted into the corpus if it is interesting. Old samples   Output: A corpus of interesting ZIP file samples.
    covered by the new sample are removed from the corpus.        1: Initialize R and N as arrays of K zeros // reward & count
 1: ok ← {parser | O(parser) is not failure}                      2: loop
 2: incons ← {(p, q) ∈ ok2 | Hash(O(p)) ̸= Hash(O(q))}            3:    for i ← 1 to K do
 3: for each s in the corpus do                                   4:       R(i) ← α · R(i)                      // decay weights
 4:    if ok ⊆ s.ok and incons ⊆ s.incons then                    5:       N(i) ← α · N(i)
 5:       return false                                            6:    end for
                                                                        n ← max ∑Ki=1 N(i), 1
                                                                                               
 6:    end if                                                     7:                                    // max(·, 1) to avoid ln 0
       if ok ⊇ s.ok and incons ⊇ s.incons then
                                                                                           q
 7:                                                                               R(i)           2 ln n
                                                                  8:    wi ← max(N(i),1) + max(N(i),1)          // avoid div by 0
 8:       Remove s from the corpus
                                                                                     eβwi
 9:    end if                                                     9:    σ(w)i ←          βw           // apply softmax to UCB
                                                                                  ∑Kj=1 e j
10: end for
                                                                 10:   I ← empty list
11: Insert the sample and (ok, incons) into the corpus
                                                                 11:   for i ← 1 to B do
12: return true
                                                                 12:      Select a seed s from the corpus
                                                                 13:      M ← empty list
                                                                 14:      loop
                                                                 15:         m ← a random mutation with weights σ(w)
                                                                 16:         s ← mutate s by strategy m
                                                                 17:         Insert m into M
                                                                 18:         Break loop with 50% probability
                                                                 19:      end loop
                                                                 20:      Insert (s, M) into I
                                                                 21:   end for
                                                                 22:   Test all inputs I against every parser in parallel
                                                                 23:   for each (s, M) in I do
                                                                 24:      for each m in M do
                                                                 25:         if sample s is detected as interesting then
                                                                                                   1
                                                                 26:            R(m) ← R(m) + |M|
                                                                 27:         end if
                                                                                                 1
                                                                 28:         N(m) ← N(m) + |M|
                                                                 29:      end for
                                                                 30:   end for
                                                                 31: end loop



                                                                 B     Tested Parsers
                                                                 We tested the ZIP parsers listed in Table 3. Asterisks are used
                                                                 to mark parsers that are provided as a built-in feature of the
                                                                 programming language, such as standard libraries.

                                                                 C     Parser Inconsistency Table
                                                                 Table 4 provides the number of inconsistency types between
                                                                 ZIP parser pairs. The numbers could be inaccurate when com-
                                                                 paring a standard mode parser with a streaming mode parser,
                                                                 because test samples for other ambiguity types, especially
                                                                 those in the ZIP structure positioning category, might cause
                                                                 inconsistencies due to different parsing modes. The complete
                                                                 list of inconsistency types can be found in the artifacts.



448   34th USENIX Security Symposium                                                                       USENIX Association
                Table 3: Tested ZIP parsers. GitHub stargazer counts were retrieved on June 12, 2025.

                  #   Name (API)                      Language (*built-in)   Version    GitHub Star
                  1   Info-ZIP                        C                      6.0        -
                  2   7-Zip                           C++                    24.08      1.5k
                  3   p7zip                           C++                    16.02      -
                  4   WinRAR                          C++                    7.01       -
                  5   Zip-Ada                         Ada                    59         28
                  6   go-unarr                        C                      0.2.4      292
                  7   libarchive                      C                      3.7.7      3.2k
                  8   libzip                          C                      1.10.1     918
                  9   minizip                         C                      1.3.1      6.2k
                 10   minizip-ng                      C                      4.0.8      1.3k
                 11   zip                             C                      0.3.2      1.5k
                 12   zziplib                         C                      0.13.78    68
                 13   DotNetZip                       C#                     1.16.0     550
                 14   SharpCompress                   C#                     0.38.0     2.4k
                 15   SharpZipLib                     C#                     1.4.2      3.8k
                 16   System.IO.Compression           C#*                    9.0.0      -
                 17   Android libziparchive           C++                    34.0.5     -
                 18   POCO                            C++                    1.13.3     9k
                 19   std.zip                         D*                     2.109.1    -
                 20   archive                         Dart                   3.6.1      445
                 21   zip                             Erlang*                27.1.2.0   -
                 22   archive/zip                     Go*                    1.22.3     -
                 23   zip                             Haskell                2.1.0      84
                 24   zip-archive                     Haskell                0.4.3.2    46
                 25   Commons Compress (stream)       Java                   1.27.1     365
                 26   Commons Compress (ZipFile)      Java                   1.27.1     365
                 27   java.util.zip.ZipFile           Java*                  21.0.5     -
                 28   java.util.zip.ZipInputStream    Java*                  21.0.5     -
                 29   zip4j (ZipFile)                 Java                   2.11.5     2.2k
                 30   zip4j (ZipInputStream)          Java                   2.11.5     2.2k
                 31   @ronomon/zip                    JavaScript             1.12.0     262
                 32   adm-zip                         JavaScript             0.5.16     2.1k
                 33   decompress-zip                  JavaScript             0.3.3      102
                 34   jszip                           JavaScript             3.10.1     10k
                 35   node-stream-zip                 JavaScript             1.15.0     462
                 36   unzipper (Extract)              JavaScript             0.12.3     458
                 37   unzipper (Open)                 JavaScript             0.12.3     458
                 38   yauzl                           JavaScript             2.10.0     766
                 39   yauzl                           JavaScript             3.2.0      766
                 40   zip.js                          JavaScript             2.7.53     3.6k
                 41   PharData                        PHP*                   8.3.13     -
                 42   phpzip                          PHP                    4.0.2      495
                 43   paszlib                         Pascal*                3.2.2      -
                 44   Archive::Zip                    Perl                   1.68       16
                 45   zipfile                         Python*                3.13.0     -
                 46   file/unzip                      Racket*                8.15       -
                 47   rubyzip (File)                  Ruby                   2.3.2      1.4k
                 48   rubyzip (InputStream)           Ruby                   2.3.2      1.4k
                 49   zip                             Rust                   2.2.0      725
                 50   ZIP Foundation                  Swift                  0.9.19     2.5k



USENIX Association                                                              34th USENIX Security Symposium   449
Table 4: Number of inconsistency types between ZIP parser pairs. The row and column headers correspond to the parser
numbers in Table 3. The internal cells are the numbers of inconsistency types between parser pairs.

   1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526272829303132333435363738394041424344454647484950
1 - 5 6 6 4 6 5 6 7 4 7 6 3 6 5 4 4 7 6 6 4 4 8 6 5 5 4 5 6 6 1 7 5 5 5 7 5 6 7 6 7 6 7 6 4 5 5 6 4 5
2 5 - 2 8 6 8 7 7 9 6 8 9 7 6 8 7 6 4 6 6 7 6 8 5 5 7 4 3 8 6 1 10 7 7 8 7 8 8 8 7 9 9 8 7 7 4 8 6 7 6
3 6 2 - 7 6 8 7 8 7 7 8 8 7 6 9 7 7 4 6 7 7 5 9 5 6 8 5 4 9 5 1 10 7 6 7 7 8 7 8 8 8 8 7 6 5 4 8 6 7 6
4 6 8 7 - 8 10 8 10 8 8 9 10 8 11 7 9 9 10101110 9 111010 8 8 11 9 10 3 9 9 8 8 1010 9 9 1011 9 11 9 7 11 9 10 9 9
5 4 6 6 8 - 11 8 11 7 8 9 8 8 9 5 8 6 6 9 10 7 7 13 6 9 8 6 7 8 6 2 8 9 8 7 7 9 1010 9 10 8 7 9 6 6 7 8 7 8
6 6 8 8 1011 - 8 1010 6 5 9 6 12 7 8 7 11 8 8 9 8 11 8 12 9 9 12 4 12 2 8 9 9 8 12 7 5 5 9 8 7 1010 9 12 8 10 9 8
7 5 7 7 8 8 8 - 9 7 4 6 9 7 9 6 6 8 8 6 6 9 7 10 8 9 5 4 9 7 9 1 9 8 5 6 10 8 5 5 8 10 7 10 9 5 9 8 8 8 9
8 6 7 8 101110 9 - 1110 7 9 8 10 8 8 8 10 5 9 8 7 7 7 1110 7 9 9 10 2 9 9 9 9 10 8 8 6 9 8 6 9 10 8 9 9 10 8 8
9 7 9 7 8 7 10 7 11 - 8 9 9 7 11 4 9 7 9 8 10 9 9 12 7 10 8 7 10 7 9 2 9 9 9 8 10 9 10101010 9 10 9 8 10 8 10 9 9
10 4 6 7 8 8 6 4 10 8 - 4 6 5 9 5 5 6 8 7 7 8 4 8 7 8 5 3 8 4 8 2 7 6 6 6 9 6 4 4 7 7 7 10 7 6 8 8 8 7 7
11 7 8 8 9 9 5 6 7 9 4 - 6 5 11 4 4 5 9 5 7 7 6 7 8 10 7 6 10 3 10 2 6 6 6 6 10 5 4 3 5 7 5 8 7 7 10 7 10 6 5
12 6 9 8 10 8 9 9 9 9 6 6 - 4 10 6 5 3 7 7 10 8 6 9 6 11 9 5 9 7 10 2 5 6 9 5 10 6 7 8 6 3 5 9 8 7 8 8 10 6 5
13 3 7 7 8 8 6 7 8 7 5 5 4 - 7 5 3 5 5 6 7 6 4 7 5 9 8 3 6 6 8 1 6 4 6 4 7 5 6 6 6 4 6 7 6 6 6 6 7 7 4
14 6 6 6 11 9 12 9 1011 9 1110 7 - 8 7 8 5 1011 8 9 12 2 8 11 7 5 10 7 1 12 8 8 7 4 8 111110 9 10 9 11 9 5 9 7 10 9
15 5 8 9 7 5 7 6 8 4 5 4 6 5 8 - 4 6 6 5 6 7 5 7 5 9 5 3 7 7 7 1 6 6 7 3 7 4 8 7 7 6 5 5 5 6 6 7 8 4 5
16 4 7 7 9 8 8 6 8 9 5 4 5 3 7 4 - 3 7 6 9 6 4 8 4 10 8 3 7 5 9 1 6 4 5 4 9 1 4 5 5 4 5 8 6 6 8 6 9 6 5
17 4 6 7 9 6 7 8 8 7 6 5 3 5 8 6 3 - 7 3 8 3 3 7 6 9 8 5 6 4 7 1 6 4 6 5 8 3 5 5 6 3 3 5 7 6 7 4 8 6 2
18 7 4 4 10 6 11 8 10 9 8 9 7 5 5 6 7 7 - 8 11 6 6 12 4 5 10 7 2 8 2 2 9 8 8 8 4 8 1010 9 7 8 6 8 6 2 7 3 7 7
19 6 6 6 10 9 8 6 5 8 7 5 7 6 10 5 6 3 8 - 5 4 5 5 5 10 8 4 8 5 9 2 8 7 9 6 9 6 7 5 9 4 5 6 8 6 8 6 10 7 5
20 6 6 7 1110 8 6 9 10 7 7 10 7 11 6 9 8 11 5 - 10 9 9 9 10 9 8 11 5 11 0 9 8 10 5 11 9 8 7 10111010101012 8 1010 8
21 4 7 7 10 7 9 9 8 9 8 7 8 6 8 7 6 3 6 4 10 - 7 9 6 1010 8 7 6 8 1 9 9 10 6 8 7 7 7 8 6 5 6 10 7 6 5 8 6 5
22 4 6 5 9 7 8 7 7 9 4 6 6 4 9 5 4 3 6 5 9 7 - 8 5 9 8 3 7 6 7 2 7 6 6 7 10 5 5 6 7 5 6 7 5 6 7 8 10 3 3
23 8 8 9 11131110 7 12 8 7 9 7 12 7 8 7 12 5 9 9 8 - 8 13 9 6 12 9 13 3 9 8 9 1012 7 8 7 9 7 7 1210 8 121112 8 8
24 6 5 5 10 6 8 8 7 7 7 8 6 5 2 5 4 6 4 5 9 6 5 8 - 5 9 4 3 8 4 1 9 5 6 5 5 4 9 9 7 5 7 7 6 6 2 6 5 7 5
25 5 5 6 10 9 12 9 1110 8 1011 9 8 9 10 9 5 101010 9 13 5 - 9 10 4 9 3 1 101010 8 7 1110101111101012 9 5 9 3 9 11
26 5 7 8 8 8 9 5 10 8 5 7 9 8 11 5 8 8 10 8 9 10 8 9 9 9 - 5 11 7 10 1 8 8 6 8 9 8 7 6 8 10 7 11 8 6 1110 9 7 10
27 4 4 5 8 6 9 4 7 7 3 6 5 3 7 3 3 5 7 4 8 8 3 6 4 10 5 - 7 7 8 0 8 3 4 6 10 4 7 7 7 5 5 8 4 3 7 8 9 5 5
28 5 3 4 11 7 12 9 9 10 8 10 9 6 5 7 7 6 2 8 11 7 7 12 3 4 11 7 - 9 1 0 11 8 9 7 7 8 111110 8 8 7 10 6 1 8 2 8 8
29 6 8 9 9 8 4 7 9 7 4 3 7 6 10 7 5 4 8 5 5 6 6 9 8 9 7 7 9 - 9 2 7 6 8 5 8 5 4 2 7 7 5 6 8 8 9 5 8 8 5
30 6 6 5 10 6 12 9 10 9 8 1010 8 7 7 9 7 2 9 11 8 7 13 4 3 10 8 1 9 - 2 10 9 10 8 7 1011111110 9 7 10 8 2 8 2 7 9
31 1 1 1 3 2 2 1 2 2 2 2 2 1 1 1 1 1 2 2 0 1 2 3 1 1 1 0 0 2 2 - 3 1 1 1 2 1 2 2 0 2 2 3 1 1 1 1 1 1 1
32 7 1010 9 8 8 9 9 9 7 6 5 6 12 6 6 6 9 8 9 9 7 9 9 10 8 8 11 7 10 3 - 7 8 5 9 7 7 7 7 6 6 10 8 9 11 9 11 7 6
33 5 7 7 9 9 9 8 9 9 6 6 6 4 8 6 4 4 8 7 8 9 6 8 5 10 8 3 8 6 9 1 7 - 6 6 10 4 7 7 6 6 7 9 7 7 9 8 10 7 6
34 5 7 6 8 8 9 5 9 9 6 6 9 6 8 7 5 6 8 9 1010 6 9 6 10 6 4 9 8 10 1 8 6 - 8 11 7 7 7 7 10 7 10 7 5 9 1010 7 8
35 5 8 7 8 7 8 6 9 8 6 6 5 4 7 3 4 5 8 6 5 6 7 10 5 8 8 6 7 5 8 1 5 6 8 - 7 5 8 8 7 7 6 7 9 7 7 5 8 6 5
36 7 7 7 10 7 12101010 9 1010 7 4 7 9 8 4 9 11 8 1012 5 7 9 10 7 8 7 2 9 1011 7 - 9 10101110 9 9 11 9 6 10 7 9 10
37 5 8 8 10 9 7 8 8 9 6 5 6 5 8 4 1 3 8 6 9 7 5 7 4 11 8 4 8 5 10 1 7 4 7 5 9 - 5 6 7 5 5 7 5 7 8 7 10 6 4
38 6 8 7 9 10 5 5 8 10 4 4 7 6 11 8 4 5 10 7 8 7 5 8 9 10 7 7 11 4 11 2 7 7 7 8 10 5 - 1 7 6 5 8 8 7 11 8 9 6 7
39 7 8 8 9 10 5 5 6 10 4 3 8 6 11 7 5 5 10 5 7 7 6 7 9 10 6 7 11 2 11 2 7 7 7 8 10 6 1 - 6 7 4 7 7 7 11 8 9 6 6
40 6 7 8 10 9 9 8 9 10 7 5 6 6 10 7 5 6 9 9 10 8 7 9 7 11 8 7 10 7 11 0 7 6 7 7 11 7 7 6 - 8 6 9 8 8 10 8 11 6 7
41 7 9 8 1110 8 10 8 10 7 7 3 4 9 6 4 3 7 4 11 6 5 7 5 1110 5 8 7 10 2 6 6 10 7 10 5 6 7 8 - 6 9 7 8 8 8 10 5 3
42 6 9 8 9 8 7 7 6 9 7 5 5 6 10 5 5 3 8 5 10 5 6 7 7 10 7 5 8 5 9 2 6 7 7 6 9 5 5 4 6 6 - 7 6 5 8 7 10 6 4
43 7 8 7 11 7 1010 9 1010 8 9 7 9 5 8 5 6 6 10 6 7 12 7 1011 8 7 6 7 3 10 9 10 7 9 7 8 7 9 9 7 - 9 10 7 7 9 6 5
44 6 7 6 9 9 10 9 10 9 7 7 8 6 11 5 6 7 8 8 1010 5 10 6 12 8 4 10 8 10 1 8 7 7 9 11 5 8 7 8 7 6 9 - 5 10 9 11 6 6
45 4 7 5 7 6 9 5 8 8 6 7 7 6 9 6 6 6 6 6 10 7 6 8 6 9 6 3 6 8 8 1 9 7 5 7 9 7 7 7 8 8 5 10 5 - 6 9 9 8 6
46 5 4 4 11 6 12 9 9 10 8 10 8 6 5 6 8 7 2 8 12 6 7 12 2 5 11 7 1 9 2 1 11 9 9 7 6 8 111110 8 8 7 10 6 - 8 3 8 8
47 5 8 8 9 7 8 8 9 8 8 7 8 6 9 7 6 4 7 6 8 5 8 11 6 9 10 8 8 5 8 1 9 8 10 5 10 7 8 8 8 8 7 7 9 9 8 - 10 8 4
48 6 6 6 10 8 10 8 1010 8 1010 7 7 8 9 8 3 1010 8 1012 5 3 9 9 2 8 2 1 111010 8 7 10 9 9 111010 9 11 9 3 10 - 1010
49 4 7 7 9 7 9 8 8 9 7 6 6 7 10 4 6 6 7 7 10 6 3 8 7 9 7 5 8 8 7 1 7 7 7 6 9 6 6 6 6 5 6 6 6 8 8 8 10 - 5
50 5 6 6 9 8 8 9 8 9 7 5 5 4 9 5 5 2 7 5 8 5 3 8 5 1110 5 8 5 9 1 6 6 8 5 10 4 7 6 7 3 4 5 6 6 8 4 10 5 -




450   34th USENIX Security Symposium                                                             USENIX Association
