security: WorkspaceInvitation::findByToken has O(n) timing attack surface #9
Labels
No labels
P1
P2
P3
PHP
agent-ready
bug
clotho
discovery
docs
epic
refactor
review
security
testing
athena
athena-gemini
audit
clotho
clotho-gemini
codex
darbs-claude
security
wiki
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: core/php-tenant#9
Loading…
Add table
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?
Problem
Models/WorkspaceInvitation.php::findByToken()(lines 139-154) loads up to 1000 invitation records and performs aHash::check()(bcrypt) comparison against each one sequentially:Impact
Recommended Fix
Store a HMAC-SHA256 hash (fast, not bcrypt) alongside the bcrypt hash, indexed for direct lookup:
Acceptance Criteria
token_hashcolumn (indexed) to theworkspace_invitationstablefindByToken()andfindPendingByToken()to use indexed lookupDiscovered during automated scan (issue #3)