Do not report vulnerabilities in a public issue.
Use GitHub private vulnerability reporting. Include:
- affected crate and version or commit;
- minimal reproducer;
- observed impact.
In scope:
- panics, crashes, hangs, or excessive resource use from crafted input;
- writes outside the extraction destination;
- output-limit bypasses;
- unchecked allocation or indexing from archive metadata;
- safety-relevant decoding errors.
Out of scope:
- documented limits selected by the caller;
- misuse confined to trusted inputs;
- weaknesses inherent to an archive format or cipher.
WinZip AES AE-2 requires PBKDF2-HMAC-SHA1 and HMAC-SHA1 for format compatibility.
- all project-owned published crates use
#![forbid(unsafe_code)]; libarchive_oxide-coreis zero-dependency safe Rust; the defaultportable-codecsnormal/build graph excludes codec C/FFI packages, while additivenative-codecsexplicitly enables system backends. Portable, native, and combined builds run the same bounded conformance, malformed, and fuzz corpus;- every decoder, encoder, filter pipeline, spool, and extractor receives finite-by-default resource limits;
- session planning validates every destination before apply starts; the shared driver binds replayed entries to that plan and passes only relative normalized operations to a compile-time filesystem adapter. Windows additionally rejects trailing-dot/space, reserved-device, ADS, case, and Unicode-normalization aliases while Unix retains byte-exact case-sensitive identity;
- the built-in
cap-stdadapter resolves every parent one component at a time without following links, then creates and atomically commits relative to that stable directory capability; replacing an ancestor after preparation cannot redirect a write, and commit failure leaves the destination unpublished; - safe extraction rejects traversal, duplicate destination identities,
pre-existing destinations, links, and special files; applied, unsupported,
refused, partial, and OS-error filesystem outcomes remain typed in
ApplyReport; oxarchive createrejects unsafe derived archive names and stages file output in a unique sibling; input or writer failure removes the sibling and existing destinations are never replaced;- bounded inspection emits one flushed event record at a time and requires an explicit completion record; stdout archive creation is binary-only and its documented partial-stream risk is signaled by exit 1;
- decoded output and CLI processing are capped at 4 GiB by default;
- header-derived offsets and sizes use checked conversions and arithmetic;
- fuzz targets run in CI;
- CodeQL and dependency review run on repository changes.
Before 1.0, security fixes target the latest main.
| Version | Supported |
|---|---|
latest main |
yes |
| older commits | no |