Servers and applications
GHSA-fj57-g9cq-fwvq
Incomplete Fix: Cross-Organization GitHub Provider Reassignment Exposes Stored Credentials
- Severity
- High 8.4
- Published
- 12 Nov 2026
- Last changed
- 12 Nov 2026
- Added to UpHeron
- 12 Nov 2026
- Fixed in
- 0.31.1
- Weakness
- Information exposure (CWE-200)Authorization bypass through a user-controlled key (IDOR) (CWE-639)Missing authorization (CWE-862)
- Attack
- Over the network · Only under certain conditions · Needs a user account · No user action needed
- Attacker can
- Read data · Change data · Slow it down
- CVSS vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:L- Sources
- Project advisories (GitHub)
Description
Dokploy v0.30.2 added organization/access checks to the GitHub-provider read route, but the sibling github.update mutation does not authorize either caller-controlled identifier. An authenticated administrator in Organization A can supply Organization B's gitProviderId and githubId. The mutation updates the victim parent provider by global ID and sets its organizationId to the attacker's active organization, while the credential-bearing GitHub row remains attached to that parent.
After this reassignment, the existing guarded github.one route treats the victim provider as belonging to Organization A and returns the stored GitHub client secret, private key, installation ID, and webhook secret to the attacker. The victim simultaneously loses access to the provider.
I reproduced the full HTTP state transition against the published dokploy/dokploy:v0.30.2 image. Before the mutation, the victim read returned HTTP 200 and the attacker's read returned HTTP 404.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-fj57-g9cq-fwvq
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-fj57-g9cq-fwvq