Upgrade to upstream v1.13.2 (token revocation hardening) - #8
Merged
Conversation
Rebase the baseline onto upstream v1.13.2 (28af6dd) and record what that release brought in, so the next upgrade does not mistake it for fork code: - the shared isDenylisted() helper and the new Denylisted()/user_uuid on the file, backup and upload payloads, plus their three call-site guards - router/tokens/denylist_test.go as an upstream suite, not one of ours - the fail-closed Panel coupling: without a user_uuid claim, backup/file downloads and uploads now 404 Also document the archive_test.go / archive_stream_test.go layout split, which silently routes upstream edits into the wrong file on merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the fork up to upstream pterodactyl/wings v1.13.2 (
28af6dd).Upstream v1.13.2
v1.13.2 is a single functional upstream commit —
28af6dd"update token validation" — sitting directly on top of v1.13.1. The release branch'sef2280b"ci(release): bump version" was deliberately not merged: the fork injectssystem.Versionvia ldflags andsystem/const.gostaysdevelop(same as the v1.13.1 merge).It is a security fix for the one-time JWTs:
WebsocketPayload.Denylisted()into a sharedisDenylisted()helper and is now applied to the backup-download, file-download and file-upload tokens as well. Previously those three only checkedIsUniqueRequest()+ scope, so revoking a user's access to a server did not invalidate already-issued download/upload tokens.user_uuidclaim onFilePayload,BackupPayloadandUploadPayload.Before(t)to!After(t)— a token issued in the same second as the revocation is now denied.router/tokens/denylist_test.go(6 tests).Merged without a single conflict. Unusual for this fork, but the commit only touches
router/tokens/**plus three one-line guards inrouter_download.go/router_server_files.go, and our edits to those two files (module rename, activity logging) sit elsewhere.git diff --name-status 28af6dd HEADconfirmswebsocket.go,file.go,backup.go,upload.goanddenylist_test.goare byte-identical to upstream.Deployment order: Panel before Wings
isDenylisted()fails closed — a token missingiat,server_uuidoruser_uuidis rejected outright.user_uuidis new in v1.13.2, so backup downloads, file downloads and file uploads only work against a Panel that puts that claim into the JWT. Against an older Panel every such request returns404 "The requested resource was not found on this server."FORK_CHANGES.md
28af6dd), last-reviewed date updated.server/filesystem/archive_test.gowas replaced wholesale with tests for the fork-onlyarchive_restore.go, and upstream'sTestArchive_Streamlives inarchive_stream_test.go. Upstream edits toarchive_test.gotherefore land in the wrong file on merge without any conflict to warn us.Verification
Go is not installed on the dev host, so build and tests were run in a
golang:1.24container against the working tree:go build ./...— clean.go test ./... -count=1— all packages pass, no failures.go test ./router/tokens/ -v— all 6 new denylist tests pass.go vet ./...— 4 pre-existing findings (unreachable code,copies lock value) in files this merge does not touch; nothing new introduced.CI (
go test -race) is the final gate.