access: open enrollment lets any /scan/ NDEF tag through the gate #91

Open
opened 2026-09-20 13:16:51 +00:00 by padreug · 0 comments
Owner

With openEnrollment on (the posture on every gated machine today), entry parses the tapped lnurlw locally and admits any external_id. No server call is made, by design, so the single-use SUN p/c survive until Complete. The consequence: any NDEF tag whose URL contains /scan/<anything> unlocks the terminal. Money still only moves on a valid SUN, so the gate is a convenience, not a security boundary.

Options when we want it to be one:

  1. Provisioned allow-list (already supported by authorize(); needs an enrollment flow and the hashId(external_id, salt) tooling in provision-access.sh)
  2. Verify-at-entry: spend the entry tap on a /scan GET to prove SUN validity, then require a second tap at Complete. Costs the one-tap UX #86 was built for.
  3. A boltcards endpoint that verifies p/c without consuming the counter is not possible with the SUN design; discard.

Recorded in the 2026-09-20 amendment of ADR-003. Decide before enabling the gate on a machine where it is meant to keep people out rather than tidy the menu.

With `openEnrollment` on (the posture on every gated machine today), entry parses the tapped lnurlw locally and admits any external_id. No server call is made, by design, so the single-use SUN p/c survive until Complete. The consequence: any NDEF tag whose URL contains `/scan/<anything>` unlocks the terminal. Money still only moves on a valid SUN, so the gate is a convenience, not a security boundary. Options when we want it to be one: 1. Provisioned allow-list (already supported by authorize(); needs an enrollment flow and the hashId(external_id, salt) tooling in provision-access.sh) 2. Verify-at-entry: spend the entry tap on a `/scan` GET to prove SUN validity, then require a second tap at Complete. Costs the one-tap UX #86 was built for. 3. A boltcards endpoint that verifies p/c without consuming the counter is not possible with the SUN design; discard. Recorded in the 2026-09-20 amendment of ADR-003. Decide before enabling the gate on a machine where it is meant to keep people out rather than tidy the menu.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/bitspire#91
No description provided.