Repository navigation
Releases: 0then0/unpackproof
Release list
UnpackProof v0.1.1
Patch release focused on verdict correctness and installation, retaining the small synthetic TAR corpus and disposable Docker scope.
Fixes
- Completed targets that remove the required destination or protected root now produce
FAILwithmissing-destination-rootormissing-protected-root. Absence is accepted only after structured observation and fixture availability/identity checks. - Observer errors, unavailable or replaced fixture mounts, Docker failures and incomplete observation are not treated as target violations. Timeout, interruption and OOM classifications are preserved.
- The Go module and imports now use
github.com/0then0/unpackproof. Published v0.1.0 is unchanged.
Evidence and compatibility
Report schemas remain v1 with additive snapshot fields: root_missing and fixture_root. Proven absence uses root: null, objects: [] and complete: true, distinct from an observed empty directory. Strict readers must accept the new fields. Update the host CLI and Linux guest together. Evidence is saved before destructive cleanup.
New configurations run ordinary GNU tar and the stock Python CLI directly, without policy adapters, on the default allow/replace corpus:
tar -xf {archive} -C {destination}python3 -m tarfile -e {archive} {destination}
Measured GNU tar 1.34 and Python 3.14.0 passed all 10 cases on Linux arm64 using the existing unpackproof/python-tarfile:0.1 image, ID/repo digest sha256:b75246ced3181e6e5ce9ae355251caada3436193b41b1853ad7a715b77970371. The truncated case correctly exited 2 and 1 respectively; its PASS means an expected extraction error was detected. Versions and image identities are recorded per run.
Installation and validation
go install github.com/0then0/unpackproof/cmd/unpackproof@v0.1.1This exact tagged installation was verified outside the checkout without a local replace; the installed host CLI ran cases and schema successfully on macOS arm64. Build a Linux guest matching your Docker architecture and prepare the example images using the README. This is a source release without prebuilt binaries or container images.
Unit tests, race checks, vet, installation smoke and the full Docker regression/compatibility suite passed in CI for the released commit. Additional local Docker regressions passed with the race detector.
Scope
Final snapshots can miss transient mutations. PASS on this small synthetic corpus is not proof of full TAR conformance or extractor safety. No archive formats, policies or dependencies were added.
UnpackProof v0.1.0
First public release of UnpackProof, a small CLI for regression testing TAR extraction commands on synthetic fixtures in disposable Docker containers.
Included
- Deterministic TAR cases for ordinary, nested, empty, Unicode and PAX paths; duplicate members; existing files; internal symlinks and hardlinks; denied links; and truncated input.
- Explicit link and overwrite policies, with an obligatory positive extraction control.
- Independent bounded filesystem snapshots checking names, bytes, declared permissions, link identity and protected fixture preservation.
- Non-root target execution with no network, a read-only root filesystem, dropped capabilities and runtime, memory, CPU, process, storage and captured-output limits.
- Human and JSON reports with image identity, target version, execution disposition, findings, observation completeness and separate cleanup status.
- Evidence saved before destructive cleanup, with recovery checkpoints for report-storage failures and bounded interruption handling.
- Python
tarfileand Node.jstarexample adapters, controlled incorrect adapters and Linux Docker integration tests.
Installation and validation
This is a source release; prebuilt binaries and container images are not included. Build the host CLI and a Linux guest binary matching your Docker architecture, then prepare the example adapter images using the README. The project pins Go 1.27.1 and adapter dependencies.
Unit tests, race checks, vet and Docker integration tests passed. CI for the released commit passed without annotations.
Scope and limitations
v0.1 covers TAR and Linux filesystem semantics inside Docker. The oracle observes final snapshots; transient changes reverted before observation can remain undetected. Captured output is bounded and may be truncated. If all report storage is unavailable, destructive cleanup is deferred and retained tmpfs contents remain available only until the keeper deadline.
UnpackProof is not a security scanner or a proof of extractor safety. ZIP/RAR/7z, Windows semantics, hostile payloads, archive bombs and fuzzing are outside this release.
License: Apache-2.0.