Since the '26 cycle, USENIX Security has made openness a structural requirement: every submission carries an Open Science appendix stating where the artifacts behind the paper live, and acceptance is later conditioned on that availability verifying (Phase-1 AE). This skill covers the appendix itself and the underlying engineering that makes the statement true. Policy text is per-cycle — reread the current CFP section before relying on wording.
Reviewers read it during evaluation; the AEC enforces it after acceptance. It should answer, concretely:
\section*{Open Science}
All scanner source code, the analysis pipeline, and the aggregated measurement
tables (Sections 4--6) are available at \url{<anonymized-archive>} and will be
deposited with a DOI upon publication. The raw scan captures contain
per-endpoint identifying data for still-unpatched hosts and are withheld;
Appendix~B documents the aggregation procedure so the tables can be
regenerated from an independent scan. The 214 disclosure emails are withheld
as human-subjects correspondence; templates are included.
| Material | Default posture | Acceptable justification pattern |
|---|---|---|
| Attack/PoC code | Share, targeted at a bundled testbed | Weaponizable against unpatched population → share after patch window, state the date |
| Vulnerability details | Share post-disclosure | Coordinated disclosure incomplete → embargo with timeline in the Ethical Considerations appendix |
| Scan/measurement raw data | Share aggregated | Raw data identifies vulnerable hosts or users → aggregate + publish the aggregation code |
| User-study transcripts | Withhold; share instruments | IRB/consent scope → release codebooks, surveys, and quantitative summaries |
| Malware corpora | Hashes + provenance | Redistribution illegal or dangerous → document acquisition path others can follow |
| Vendor-provided datasets | As NDA allows | Contract limits → say so and provide synthetic or public-subset substitutes |
Two disciplines make these defensible: decide them at experiment time (retrofit justifications read as excuses), and always ship the procedure even when the data stays closed — an independent team with their own vantage point should be able to re-derive your tables.
Security results are unusually time- and environment-coupled. Pin what you can and timestamp what you cannot:
# Capture the environment fingerprint alongside every experiment run
{ date -u +%FT%TZ; uname -srmo; git rev-parse HEAD;
sha256sum targets.txt config.yaml; pip freeze | sort; } > runs/$(date +%s).env
usenixsec-artifact-evaluation) is the index.[Inventory] artifacts enumerated: code / data / configs / instruments
[Open items] each withheld artifact + justification + procedure substitute
[Determinism] seeds, environment fingerprints, time-coupling documented
[Trace] headline claims ↔ regeneration scripts: n/m covered
[Appendix draft] Open Science text ready: yes / gaps listed