|
2 | 2 |
|
3 | 3 | All notable changes to this project will be documented in this file. |
4 | 4 |
|
| 5 | +--- |
| 6 | + |
| 7 | +## Status — Security hardening track CLOSED at build 629 (2026-04-29) |
| 8 | + |
| 9 | +After 9 progressive rounds (builds 552 → 629), the security-hardening |
| 10 | +backlog is closed. Round 9 found zero new bugs and shipped no runtime |
| 11 | +changes — first round in the series with no `app.conf [install] build` |
| 12 | +bump, the natural signal that we're at diminishing returns. |
| 13 | + |
| 14 | +The defense system is now self-sustaining without further hardening |
| 15 | +rounds: |
| 16 | + |
| 17 | +- **CI gates** — 4 Semgrep rules (SSRF, command injection, path |
| 18 | + traversal, `_from_*` payload bypass), doc-drift pre-commit + CI |
| 19 | + hook, quarterly `pip-audit` cron, unit-test suite on every PR |
| 20 | +- **Live monitoring** — `wl_fim.py` (15 s hash sweep) + |
| 21 | + `wl_fim_watch.py` (~2 s stat-based) + `_recovery_log.jsonl` |
| 22 | + append-only watch + dual-store FIM baseline (file + KV) |
| 23 | +- **Recurring audits** — Q3 2026 version-pinning routine |
| 24 | + (`run_once_at: 2026-07-18T07:00:00Z`) auto-fires and opens a PR |
| 25 | +- **First-release verification** — Section 8 of |
| 26 | + `docs/RELEASE_CHECKLIST.md` enumerates the Sigstore end-to-end |
| 27 | + test for the first signed tag (legitimate verify + tamper test + |
| 28 | + Rekor confirmation + customer-doc publication) |
| 29 | +- **Per-release artifacts** — Sigstore keyless signing of `.spl` + |
| 30 | + CycloneDX 1.5 SBOM, both signed via the workflow's OIDC token |
| 31 | + through Fulcio + recorded in Rekor |
| 32 | + |
| 33 | +### Re-opening criteria |
| 34 | + |
| 35 | +The track is closed but not frozen. Re-open with a new round when ANY |
| 36 | +of these signals fires: |
| 37 | + |
| 38 | +- A CVE that affects this codebase or a Splunk-bundled dependency we |
| 39 | + rely on (jQuery, Underscore, the bundled Python stdlib, Splunk |
| 40 | + Enterprise itself) |
| 41 | +- A production incident traceable to a security control failure |
| 42 | +- An external audit finding (formal pentest, customer-side review, |
| 43 | + red-team exercise) |
| 44 | +- The Q3 2026 version-pinning routine surfaces a Splunk major-version |
| 45 | + change requiring compatibility work |
| 46 | +- Methodology shift — fuzz coverage extended to a new code surface |
| 47 | + (e.g., the diff engine's pairing logic, version manifest math) |
| 48 | + |
| 49 | +Future inbound work that does NOT meet these criteria is feature work |
| 50 | +or bug-fix work, not hardening work. Don't queue another "round N" |
| 51 | +unless one of the signals above fires. |
| 52 | + |
| 53 | +### Per-round summary |
| 54 | + |
| 55 | +| Round | Builds | Theme | |
| 56 | +|-------|--------|-------| |
| 57 | +| 1-5 | 552 → 622 | Primary hardening — KV cooldowns, runtime HMAC + TTL, FIM dual-store, deploy windows, schema versioning, strict content-hash, CSV integrity monitoring, ASCII-only validation, TOCTOU + insider-threat hardening | |
| 58 | +| 6 | 625 | LOW items — CI pipeline, recovery-script FIM coverage, preliminary Splunk version audit | |
| 59 | +| 7 | 626-628 | A items: residue cleanup + 2 fuzz-discovered bugs (newline-injection bypass via `$` vs `\Z`, `read_expected_hashes` UnicodeDecodeError fail-open). B items: supply-chain (`package.sh` FIM, per-job CI permissions, SECURITY.md disclosure policy, pip-audit one-off, audit-volume forecast). C items: SBOM + backup/restore + `.html()` audit | |
| 60 | +| 8 | 629 | Sigstore keyless signing, recurring pip-audit cron, per-release SBOM generation, `coldToFrozenScript` archival guidance, `.append()` audit, Q3 audit scheduled | |
| 61 | +| 9 | 629 (no bump) | Housekeeping — `fim_code_modified` doc drift, stale `dist/` artifacts, root-PNG `.gitignore`, PR-time Semgrep rule for `_from_*` anti-pattern | |
| 62 | + |
| 63 | +Detailed per-round entries below. |
| 64 | + |
| 65 | +--- |
| 66 | + |
5 | 67 | ## Unreleased — 2026-04-29 (build 629, no app changes) |
6 | 68 |
|
7 | 69 | ### Round 9: housekeeping — doc-drift, dead artifacts, PR-time anti-pattern gating |
|
0 commit comments