Epic: Security & Data-Integrity Hardening #50

Closed
opened 2026-06-11 14:06:43 +00:00 by sickday · 0 comments
Owner

Umbrella for data-corruption, data-loss, and account-compromise hardening. Each item is a child issue tagged epic:security-hardening. The task-list below tracks progress.

Children

  • Duplicate-session guard — one profile, one world login, ever (Game.World.SessionGuard atomic claim + entry pre-check + persistence firewall + boot audit; failed-login no longer strands a zombie; Agent.contexts self-cleans; correct 0x05 "already logged in" login response). Shipped.
  • #44 Stale autosave can overwrite a logout/admin save (cross-channel write race) — priority:high
  • #45 Wrap logout save_all in a transaction (torn multi-table snapshot)
  • #46 Item-duplication audit: bank, drop/pickup, equip, death-drop, Make-X
  • #47 Clamp all Container stack amounts to 0..2^31-1
  • #48 Sweep value || default truthy-empty-struct traps over DB-loaded values
  • #49 Reserve/namespace bot names vs player signatures

Verified solid this round (no action needed)

  • Authentication — bcrypt verify_pass is enforced in the live login path (Contract.Session.validateProfile.authenticate/2, before any session is created). No account-takeover-by-username.
  • Async save pipeline — partitioned per profile_id, FIFO, deduped by {kind, profile_id}.

Notes

Forgejo has no native Epic type; this is the tracking-issue + epic:security-hardening label pattern. Severity/priority carried by the per-child labels.

Umbrella for data-corruption, data-loss, and account-compromise hardening. Each item is a child issue tagged `epic:security-hardening`. The task-list below tracks progress. ## Children - [x] Duplicate-session guard — one profile, one world login, ever (`Game.World.SessionGuard` atomic claim + entry pre-check + persistence firewall + boot audit; failed-login no longer strands a zombie; `Agent.contexts` self-cleans; correct `0x05` "already logged in" login response). **Shipped.** - [x] #44 Stale autosave can overwrite a logout/admin save (cross-channel write race) — `priority:high` - [x] #45 Wrap logout `save_all` in a transaction (torn multi-table snapshot) - [x] #46 Item-duplication audit: bank, drop/pickup, equip, death-drop, Make-X - [x] #47 Clamp all Container stack amounts to `0..2^31-1` - [x] #48 Sweep `value || default` truthy-empty-struct traps over DB-loaded values - [x] #49 Reserve/namespace bot names vs player signatures ## Verified solid this round (no action needed) - **Authentication** — bcrypt `verify_pass` is enforced in the live login path (`Contract.Session.validate` → `Profile.authenticate/2`, before any session is created). No account-takeover-by-username. - **Async save pipeline** — partitioned per `profile_id`, FIFO, deduped by `{kind, profile_id}`. ## Notes Forgejo has no native Epic type; this is the tracking-issue + `epic:security-hardening` label pattern. Severity/priority carried by the per-child labels.
sickday self-assigned this 2026-06-11 14:09:49 +00:00
sickday added this to the v1 milestone 2026-06-11 14:11:00 +00:00
sickday removed their assignment 2026-06-11 14:11:26 +00:00
sickday self-assigned this 2026-06-11 14:11:33 +00:00
sickday added this to the v1 project 2026-06-11 14:11:39 +00:00
Sign in to join this conversation.
No milestone
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
BlackLobster/Server#50
No description provided.