edge-control: deregister leaks project existence via differing error messages #1111
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#1111
Loading…
Add table
Add a link
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
Follow-up to #832.
register.sh:251-254returns{"error":"project not found"}before the pubkey ownership check at:259-262:This lets anyone with
disinto-registerSSH access enumerate registered project names by attemptingderegister <name> dummy-pubkey—project not foundvspubkey mismatchcleanly distinguishes the two cases.Severity is low —
listalready exposes the same information to the same audience — but the inconsistency is gratuitous and the fix is one block reordering.Proposal
Return a single generic error for both cases:
Or keep distinct messages internally for logging but return the same JSON. Either way the caller cannot distinguish nonexistence from ownership failure.
Acceptance
deregister nonexistent-project <any-pubkey>andderegister real-project <wrong-pubkey>return identical JSON.Ported from Codeberg https://codeberg.org/johba/disinto/issues/842. Any
#NNNreferences in the body above point to Codeberg issue numbers, not internal Forgejo numbers.Blocked — issue #1111
ci_timeout2026-04-21T13:28:25Z