security-assessment-2026-09-01-todo.md
2026-09-01 Security Assessment Remediation Queue
Priority supersedes the unfinished PIN hardware-validation queue; that queue remains preserved in
tasks/plan.md and tasks/todo.md for follow-up.
- [ ] PB-26-025 - Remove plaintext signing secrets; complete exposure and rotation decision.
- [x] v2.14.90 no longer reads release credentials from
local.properties; protected environment injection is mandatory and release tasks fail closed. - [x]
local.propertiesis excluded by both.kohignoreand.gitignore. - [x] Remove the four obsolete secret entries from the ignored local file; only
sdk.dirremains. - [x] Formally retain the existing signer:
local.propertiesappears in zero local Koh manifests and zero of 812 remote manifests; the 0600 keystore remains under~/.peach-release, and live v2.14.79 plus local v2.14.96 share certificatee10b…7668. Rotate only if separate compromise/backup exposure evidence emerges. - [ ] Produce and verify a signed release from a fresh protected environment.
- [x] v2.14.90 no longer reads release credentials from
- [ ] PB-26-026 - Enable and validate release shrinking.
- [x] v2.14.91 enables R8 minification and resource shrinking with a reviewed minimal project rules file.
- [x] Full JVM/lint/release build passes; both signed split APKs are approximately 7.5-7.7 MiB and R8 mapping/usage/configuration artifacts exist.
- [ ] Run the release device smoke matrix for unlock, autofill, passkeys, updates, import/crypto, and sync/pairing when a device is attached.
- [x] PB-26-027 - Restrict external URL dispatch to canonical HTTPS (v2.14.92, focused abuse-case tests plus full JVM/lint/shrunk-release gate).
- [ ] PB-26-028 - Require independently signed update metadata.
- [x] Trust-path discovery: Peach currently parses Kepr JSON directly; Kepr emits unsigned release rows; Koh has a verifier schema but no production metadata-signing producer.
- [x] Choose the personal Peach vault as custodian; Koh reads only a one-shot protected environment value and Kepr never receives the seed.
- [x] Checkpoint and implement the publication path: production Koh v2.1.1 signs the canonical per-platform envelope and Kepr v2.0.19 stores/serves it byte-for-byte. The earlier compatibility-port implementation remains supplemental, not the production publisher.
- [x] Pin the production public key in Peach v2.14.97; unsigned, unknown-key, malformed, and alternate-URL metadata are rejected before download.
- [ ] Confirm the generated seed was copied into the personal Peach vault. The temporary 0600 file is already absent; custody remains UNCONFIRMED rather than inferred.
- [x] Deploy Kepr v2.0.19; install the signed-metadata-aware production Koh v2.1.1 locally. Functional deploy checks and both live release JSON parsers pass; the upload gate decodes real 64-byte Ed25519 signatures, while three pre-existing latency thresholds remain over budget.
- [ ] Publish a fresh signed Peach release after the metadata seed and four APK-signing values are injected directly into the release shell.
- [x] Verify local stale/rollback behavior: signed-manifest tests and version-order tests pass; equal and older versions are not offered as updates.
- [ ] Verify one end-to-end signed publication without exposing private key material.
- [x] PB-26-029 - Remove demo credential literals from production source and release artifacts (v2.14.93; source path removed and both shrunk split APKs/R8 outputs scanned clean).
- [x] PB-26-030 - Require informed consent for DuckDuckGo favicon inventory disclosure (pre-existing v2.14.74 resolution independently revalidated against v2.14.94).
- [x] PB-26-031 - Restrict release logging to redacted opaque events (v2.14.95; all sync logging centralized, fixed release vocabulary tested, full JVM/lint/shrunk-release gate).
- [x] PB-26-032 - Pin Rust toolchain and native artifact provenance (v2.14.96; exact compiler/Cargo enforcement, locked host/NDK builds, generated provenance, byte-identical four-target rebuild).
- [x] PB-26-033 - Validate favicon hosts and contain cache paths at the helper boundary (v2.14.94; RED/GREEN traversal and canonical-host tests plus full JVM/lint/shrunk-release gate).
Checkpoints
- [ ] Release-root blockers PB-26-025 through PB-26-027 verified and saved atomically.
- [ ] Integrity/privacy findings PB-26-028 through PB-26-031 verified and saved atomically.
- [ ] Supply-chain/helper findings PB-26-032 and PB-26-033 verified and saved atomically.
- [ ] Full final gate and finding-to-save evidence matrix complete.