[SECURITY] Task router: add author whitelist #132

Closed
opened 2026-03-31 01:40:15 +00:00 by Timmy · 0 comments
Owner

From Audit #131 — Severity: CRITICAL

The task router (uni-wizard/daemons/task_router.py) processes ALL issues assigned to Timmy regardless of who created them. Anyone with Gitea write access can inject tasks.

Fix

Add author validation in _process_issue():

ALLOWED_AUTHORS = {"Rockachopa", "Timmy", "ezra", "allegro"}

def _process_issue(self, issue):
    author = issue.get("user", {}).get("login", "")
    if author not in ALLOWED_AUTHORS:
        self._log_event("rejected", {"number": issue["number"], "author": author, "reason": "not in whitelist"})
        return
    # ... rest of processing

Acceptance Criteria

  • Only issues from whitelisted authors are processed
  • Rejected issues are logged with author and reason
  • Whitelist is configurable (not hardcoded deep in the function)
## From Audit #131 — Severity: CRITICAL The task router (`uni-wizard/daemons/task_router.py`) processes ALL issues assigned to Timmy regardless of who created them. Anyone with Gitea write access can inject tasks. ## Fix Add author validation in `_process_issue()`: ```python ALLOWED_AUTHORS = {"Rockachopa", "Timmy", "ezra", "allegro"} def _process_issue(self, issue): author = issue.get("user", {}).get("login", "") if author not in ALLOWED_AUTHORS: self._log_event("rejected", {"number": issue["number"], "author": author, "reason": "not in whitelist"}) return # ... rest of processing ``` ## Acceptance Criteria - [ ] Only issues from whitelisted authors are processed - [ ] Rejected issues are logged with author and reason - [ ] Whitelist is configurable (not hardcoded deep in the function)
allegro was assigned by Timmy 2026-03-31 01:40:15 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/timmy-home#132