Skip to content

fix(web): enforce GitHub installation admin proof - #5477

Merged
RSO merged 1 commit into
mainfrom
arbitrary-id-github-callb
Aug 25, 2026
Merged

fix(web): enforce GitHub installation admin proof#5477
RSO merged 1 commit into
mainfrom
arbitrary-id-github-callb

Conversation

@RSO

@RSO RSO commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • require a GitHub OAuth authorization code for installation and update callbacks
  • verify the OAuth-authorized GitHub user administers the supplied installation before app-authenticated lookup or persistence
  • fail closed with not_installation_admin when the code is missing, the user is not an administrator, or OAuth/GitHub verification fails
  • preserve existing app-initiated and organization-aware error redirects

Security impact

Previously, administrator proof ran in report-only mode. A callback could continue using GitHub App credentials and bind an installation even when no OAuth code was present, the authenticated GitHub user did not administer the installation, or verification failed. Rejected callbacks now stop before app authentication, installation lookup, repository access, and database persistence.

@RSO
RSO marked this pull request as ready for review August 25, 2026 11:35
@kilo-code-bot

kilo-code-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (2 files)
  • apps/web/src/app/api/integrations/github/callback/route.ts
  • apps/web/src/app/api/integrations/github/callback/route.test.ts

Reviewed by grok-4.6 · Input: 130.4K · Output: 10.9K · Cached: 307.6K

Review guidance: REVIEW.md from base branch main

@RSO
RSO merged commit d289d6d into main Aug 25, 2026
13 checks passed
@RSO
RSO deleted the arbitrary-id-github-callb branch August 25, 2026 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants