A02/A07: harden the first-boot setup window #9
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app#9
Loading…
Reference in a new issue
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?
While zero users exist,
UserService/CreateandSystemService/ImportDataaccept anonymous callers. TheX-Initial-Admin-Tokengate only applies whenEAG_INITIAL_ADMIN_TOKENis set, and every shipped default leaves it empty (deploy/timoni/eagraiclainne/values.cue:48-51, TrueNAS compose has it commented out).SetupStatusadvertisessetup_token_required=false, so an attacker knows the window is open. The first caller to reach a fresh install becomes founding admin, or imports an archive that carries their own admin accounts andjwt_secret.Three related defects:
Create(internal/services/user/create.go:44-59): the user-count check runs outside a transaction, so two racing anonymous Creates can both become founding admin.ImportDatare-checks inside its transaction (import.go:70-77) — giveCreatethe same fix.create.go:69,import.go:181):!=on a secret. Usecrypto/subtle.ConstantTimeCompare.Context: ADR-0018 and ADR-0023 accept parts of this trade-off. The live install was recreated empty on 2026-08-12, so the window is a real exposure, not a theoretical one.
Source: OWASP Top 10 (2025) audit of
v1.1.0, 2026-08-13. File references point at thev1.1.0tree.