Audit — v0.1.0

Source-level audit for the first tagged release. Vendor: axboe/fio @ fio-3.41 (commit ed675d3, March 2025).

Date: 2026-07-15 · Auditor: Li Junhao (ljh-sh)

Severity scale

LevelDefinition
HIGHLocal root / RCE / data loss reachable from default config without auth
MEDIUMRequires local user OR untrusted input; bounded blast radius
LOWHardening / hardening-adjacent; no realistic exploit
INFODocumented trade-off, vendor stance, or positive finding

Vendor integrity

The vendored tree at upstream/fio/ is a byte-for-byte copy of axboe/fio @ tag fio-3.41 (commit ed675d3), verified by:

$ git subtree add --prefix=upstream/fio axboe-fio fio-3.41 --squash
Added dir 'upstream/fio'    # 153 files, 12 MB

To re-verify against upstream HEAD on a fresh checkout:

cd ljh-sh/fio
git remote add axboe-fio https://github.com/axboe/fio.git    # if not present
git fetch --depth=1 axboe-fio tag fio-3.41
diff -rq upstream/fio <(git archive axboe-fio/fio-3.41 | tar -x -C /tmp/ref)
# (silence = byte-for-byte match)

Findings

Severity is per the table above. See the raw AUDIT file in the source repo for the full audit with rationale.

#LevelFinding
#1INFOVendor stability (Jens Axboe, 20+ years, kernel maintainer)
#2INFOSelf-contained static binaries (zero system library surface)
#3INFO--build-static rule carve-out (fio's configure has no --disable-shared)
#4INFO--disable-shm (we set this)
#5INFO12 optional engines disabled (libaio, libpmem, librbd, etc.)
#6LOW--output path is operator-chosen, no canonicalization
#7LOWJob files can reference any filesystem path the operator has
#8INFOposixaio needs -lrt on glibc<2.34 (no impact on our musl build)
#9INFOBuild determinism caveat (same toolchain major = byte-identical)
#10INFOEngine registration via ELF constructors (relies on vendored source trust)

Summary.

  • 0 HIGH findings for our build/packaging layer.
  • 0 MEDIUM findings for our build/packaging layer.
  • 2 LOW findings (#6, #7) — both standard benchmark-tool caveats documented for operator awareness.
  • 8 INFO findings — vendor stability + carve-outs + design trade-offs documented above.

This audit covers the wrapper layer (scripts/, .github/, docs, NOTICE, LICENSE) and the static-build configuration. It does not re-audit fio itself — that's the upstream maintainers' job, and we inherit their security posture by pinning fio-3.41 and refusing to modify the vendored source.

Audit history

DateReleaseVendored commitHIGHMEDIUMLOWINFO
2026-07-15v0.1.0ed675d3 (fio-3.41)0028