|
| 1 | +// SPDX-License-Identifier: PMPL-1.0-or-later |
| 2 | +// (MPL-2.0 is automatic legal fallback until PMPL is formally recognised) |
| 3 | +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 4 | + |
| 5 | += Security advisories — triage log |
| 6 | +:toc: |
| 7 | +:toclevels: 2 |
| 8 | + |
| 9 | +Triaged record of open / deferred / closed Dependabot advisories against |
| 10 | +`hyperpolymath/standards`. Updated whenever an advisory is resolved or a |
| 11 | +deferral is re-evaluated. |
| 12 | + |
| 13 | +== Closed |
| 14 | + |
| 15 | +=== GHSA-xgp8-3hg3-c2mh + GHSA-965h-392x-2mh5 (rustls-webpki, low, 2026-04-18) |
| 16 | + |
| 17 | +`rustls-webpki` 0.103.10 → 0.103.12 in |
| 18 | +`rhodium-standard-repositories/satellites/rsr-certifier/Cargo.lock`. |
| 19 | +Transitive dep, Cargo.lock-only bump. Both advisories closed by the |
| 20 | +same upstream patch level. |
| 21 | + |
| 22 | +== Deferred (with reason) |
| 23 | + |
| 24 | +=== GHSA-cq8v-f236-94qc — `rand` < 0.9.3 (3 locations, low, triaged 2026-04-18) |
| 25 | + |
| 26 | +*Advisory:* `rand::rng()` is unsound when a custom global logger |
| 27 | +invokes the default RNG from inside its logging hook. First patched |
| 28 | +version: `rand` 0.9.3. Severity: low. |
| 29 | + |
| 30 | +*Affected manifests, and exposure assessment:* |
| 31 | + |
| 32 | +[cols="1,2,1,3"] |
| 33 | +|=== |
| 34 | +|Manifest |Path to `rand` |Exposure |Blocker |
| 35 | + |
| 36 | +|`k9-svc/k9-sign/Cargo.toml` |
| 37 | +|Direct declaration (`rand = "0.8"`) + `ed25519-dalek` 2.2 for Ed25519 keygen. |
| 38 | +|Production. Uses `rand::rngs::OsRng` as the CSPRNG for signing-key generation — never invokes the global `rand::rng()` path that the advisory targets. |
| 39 | +|`ed25519-dalek` 2.x requires `rand_core` 0.6; only `ed25519-dalek` 3.0 (currently pre-release `3.0.0-pre.6`) uses `rand_core` 0.9. Stable-track upgrade blocked until `ed25519-dalek` 3.x stabilises upstream. |
| 40 | + |
| 41 | +|`k9-svc/tools/src/k9-init/Cargo.lock` |
| 42 | +|Transitive via `tera` 1.20 → `rand` 0.8.5; also `phf_generator` → `chrono-tz-build` (build-dep only). |
| 43 | +|Build-time / template-render only. `k9-init` does not install a custom global logger. |
| 44 | +|`tera` 1.x still pins `rand` 0.8. Fix requires upstream `tera` 2.x migration (or a replacement template engine). |
| 45 | + |
| 46 | +|`rhodium-standard-repositories/examples/enterprise-service/Cargo.lock` |
| 47 | +|Dev-dependency via `axum-test` → `rust-multipart-rfc7578_2`. |
| 48 | +|Test-time only. `enterprise-service` does not ship any binary that embeds `axum-test`. |
| 49 | +|`rust-multipart-rfc7578_2` still depends on `rand` 0.8. Fix requires upstream (or replacing `axum-test` in dev-deps). |
| 50 | +|=== |
| 51 | + |
| 52 | +*Re-evaluate trigger:* once `ed25519-dalek` 3.0 goes stable OR |
| 53 | +`tera` / `axum-test` upstream publish a release that uses `rand` 0.9+, |
| 54 | +re-run the triage and either bump or re-defer. |
| 55 | + |
| 56 | +*Decision:* Deferred. All three exposures are either non-reachable |
| 57 | +(none of the three codebases installs a custom global logger that |
| 58 | +re-enters the RNG) or non-production (dev-dep / build-dep only). Low |
| 59 | +severity is consistent with that residual-risk picture. |
0 commit comments