|
2 | 2 |
|
3 | 3 | All notable changes to this project will be documented in this file. |
4 | 4 |
|
5 | | -## Unreleased — 2026-04-29 (build 628) |
| 5 | +## Unreleased — 2026-04-29 (build 629) |
| 6 | + |
| 7 | +### Round 8: residue + recurring guards + supply-chain hardening |
| 8 | + |
| 9 | +#### Verified |
| 10 | + |
| 11 | +- **FIM coverage live-tested**. Wrote a probe line to a `WATCH_CODE` |
| 12 | + file (`default/savedsearches.conf`) inside the container; both the |
| 13 | + ~2 s stat-based watcher (`wl_fim_watch.py`, action |
| 14 | + `fim_watch_file_modified`) and the 15 s hash-sweep |
| 15 | + (`wl_fim.py`, action `fim_file_modified`) emitted audit events |
| 16 | + with the correct `monitored_path`. Confirms round 6/7 FIM |
| 17 | + additions (recovery scripts, `scripts/package.sh`, append-only |
| 18 | + `_recovery_log.jsonl`) fire end-to-end, not just look right |
| 19 | + in static review. |
| 20 | +- **Documentation cleanup**: prior commit messages and parts of |
| 21 | + CLAUDE.md called the modify-event `fim_code_modified`. The |
| 22 | + actual wire-level `action=` field is `fim_file_modified`. The |
| 23 | + inconsistency surfaced during the live FIM probe — a search for |
| 24 | + `fim_code_modified` returned no rows. The code is unchanged; |
| 25 | + only the prose was wrong. Future searches should use |
| 26 | + `fim_file_modified` (regular file changes) and |
| 27 | + `fim_watch_file_modified` (stat-watcher events). |
| 28 | + |
| 29 | +#### Added |
| 30 | + |
| 31 | +- **Sigstore keyless signing of the .spl + per-release SBOM** in |
| 32 | + `.github/workflows/release.yml`. Uses the workflow's OIDC token |
| 33 | + to mint short-lived ephemeral signing keys via Fulcio, records |
| 34 | + the signature in the public Rekor transparency log, and |
| 35 | + produces `<artifact>.sig` + `<artifact>.crt` for each .spl and |
| 36 | + each .cdx.json. Closes the previously-documented gap in |
| 37 | + `docs/SBOM.md` where the .sha256 + .spl shared a single channel |
| 38 | + (GitHub Releases) and a Releases takeover defeated both. |
| 39 | + Verifier command included in workflow comments. |
| 40 | +- **Quarterly `pip-audit` CI workflow** |
| 41 | + (`.github/workflows/pip-audit.yml`) — fires Jan 1 / Apr 1 / Jul |
| 42 | + 1 / Oct 1 at 09:00 UTC and on `workflow_dispatch`. Fails the |
| 43 | + workflow on any vulnerability, surfacing via GitHub's existing |
| 44 | + notification settings. Origin: round 7 B4 was a one-off run; |
| 45 | + without recurrence we'd forget to re-audit. |
| 46 | +- **Per-release SBOM generation** (`scripts/generate_sbom.py`) — |
| 47 | + extracts the .spl tarball, hashes every bundled file, and emits |
| 48 | + a CycloneDX 1.5 JSON document with one `application:wl_manager` |
| 49 | + envelope and per-file `component` entries. `scripts/package.sh` |
| 50 | + now calls it as step 6/6, producing `<artifact>.cdx.json` |
| 51 | + alongside `<artifact>.spl.sha256`. Replaces the static |
| 52 | + `sbom.cdx.json` baseline (round 7 C1) with a per-release |
| 53 | + artifact that matches the .spl byte-for-byte. |
| 54 | +- **`wl_audit` long-term archival guidance** in |
| 55 | + `default/indexes.conf` — documents two options for going past |
| 56 | + the default 3-year retention (extend online vs. archive on |
| 57 | + freeze via `coldToFrozenScript`), with example config blocks |
| 58 | + and pointers to Splunk's official docs. No default changed — |
| 59 | + guidance only. |
| 60 | +- **`.append()` / `$(htmlString)` audit extension** appended to |
| 61 | + `docs/HTML_INJECTION_AUDIT.md`. 62 jQuery DOM-injection sinks |
| 62 | + beyond `.html()` audited (40 append + 3 prepend + 3 before + 1 |
| 63 | + after + 5 replaceWith + 10 factory). Result: zero XSS bugs — |
| 64 | + every string-arg site already escapes user-controlled |
| 65 | + substrings. Same project-wide convention as round 7 C3 found. |
| 66 | + |
| 67 | +#### Operational |
| 68 | + |
| 69 | +- **Q3 2026 Splunk version-pinning audit scheduled** |
| 70 | + (`run_once_at: 2026-07-18T07:00:00Z` = 09:00 Europe/Warsaw). |
| 71 | + Remote routine `trig_01QE78KzCtSTuwFv2LjrUQqC` will re-run |
| 72 | + pip-audit, probe Splunk's supported-versions list, scan for new |
| 73 | + 9.3.x CVEs, assess 10.x compat against the 7 risk areas listed |
| 74 | + in CLAUDE.md, run the pure-Python test suite, and open a PR |
| 75 | + with findings. One-shot rather than recurring because each |
| 76 | + audit's findings shape the next prompt. |
| 77 | + |
| 78 | +## Released — 2026-04-29 (build 628) |
6 | 79 |
|
7 | 80 | ### Round 7 C items: SBOM + backup/restore + .html() audit |
8 | 81 |
|
|
0 commit comments