[VS-NfD] Add a plugin allowlist with SHA-256 hash pinning #232
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#232
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan reference:
20-massnahmenplan.md-> Phase 4ADR: ADR 0025
Effort: L (8–10 AT)
Depends on: #200
Context
Hash pinning is the right answer to plugin trust; it is not the most urgent
one, because #200's hard off-switch already closes the risk for the offer
stage. Real code signing is unavailable without a legal entity to hold a
signing identity (ADR 0025).
Current state
manifest.json(e.g.
packages/plugins/drawio/manifest.json:id,version,apiVersion,kind,extensionPoints,permissions,fallback) —there is no hash or signature field.
(
packages/plugins/drawio/dist/drawio-1.0.0.zip); loading is gated bythe sandbox (ADR 0008) and per-pond enablement, not by identity.
instance_settingsis the place for the allowlist(
apps/api/prisma/schema.prisma:17–23).Acceptance criteria
on install and on every load, failing closed with a clear error.
instance_settingsnames permitted plugin ids withtheir pinned hashes; a plugin outside it does not load even if
installed.
the one pinned.
version bump requires an explicit re-pin.
docs/architecture/plugin-architecture.mdand #227 document themodel.
Out of scope
Code signing with a certificate, a plugin marketplace, and network
allowlisting for plugins (deliberately unscheduled).
Vier Befunde, die
10-ist-aufnahme.mdzusätzlich zum Plan gefunden hat.Drei betreffen unbefristete Inhaltskopien, einer die Reproduzierbarkeit.
Done via PR #298 (merged, CI run 646 green, CD 645 deployed Test+Int, readyz fully green on both). M31 complete — with it, every planned VS-NfD milestone (M24-M32) is done.
All acceptance criteria met:
plugins.bundle_hash); verified on install AND on every load, failing closed with stable codes (plugin_not_pinned/plugin_hash_mismatch).plugins.allowlistininstance_settings: empty = not enforced (backward compatible); non-empty = a plugin outside it does not load even if installed (absent from mount lists, frame/assets 404).plugin.rejected, audit catalogue v1.5.plugin-architecture.md(trust section, scope stated honestly per ADR 0019) and the hardening guide; residual risk R-03 resolved.Out of scope stayed out: no code signing (no signing identity, ADR 0025), no marketplace, no network allowlisting.