🇰🇷 한글 설명
Pterodactyl 패널 1.12.3 이전 버전과 Wings 1.12.2 이전 버전에서 Wings의 /upload/file 엔드포인트가 토큰의 용도(purpose)를 확인하지 않고 server_uuid, user_uuid, unique_id 클레임을 가진 유효한 패널 서명 JWT를 모두 허용합니다. 이로 인해 웹소켓 연결용 등 하위 권한 토큰을 가진 서브유저가 해당 토큰을 재사용하여 file.create 권한 없이도 같은 서버에 임의의 파일을 쓸 수 있습니다.
💡 쉬운 설명
게임 서버 관리 패널에서 낮은 권한의 사용자가 원래 파일 쓰기 권한이 없어도 다른 용도로 받은 인증 토큰을 재사용해 서버에 파일을 업로드할 수 있는 문제입니다. 패널 1.12.3 및 Wings 1.12.2 이상으로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
Pterodactyl is a free, open-source game server management panel. Prior to Panel version 1.12.3 and Wings version 1.12.2, the Wings /upload/file endpoint accepted any valid panel-signed JWT that contained server_uuid, user_uuid, and unique_id claims without checking the token's intended purpose; because the Panel issues JWTs carrying those same claims for lower-privilege operations such as WebSocket authentication and file-download links, an authenticated subuser could reuse one of those tokens (for example a WebSocket token obtained with only the websocket.connect permission) by replaying it against /upload/file to write arbitrary files to the same server, despite never being granted the file.create permission. This issue is fixed in Panel version 1.12.3 and Wings version 1.12.2.
📍 영향받는 시스템
Pterodactyl Panel 1.12.3 미만 및 Wings 1.12.2 미만 버전
⚔️ 공격 벡터
웹소켓 등 낮은 권한으로 발급된 JWT를 획득한 서브유저가 이를 Wings의 /upload/file 엔드포인트에 재전송하여 임의 파일을 서버에 기록
🛡️ 대응 방법
Pterodactyl Panel을 1.12.3 이상, Wings를 1.12.2 이상으로 업데이트
🔧 검증 코드
출력된 Wings 버전이 1.12.2 미만이면 취약하므로 업데이트가 필요하고, 1.12.2 이상이면 패치가 적용된 것입니다.
wings version 2>/dev/null || /usr/local/bin/wings version 2>/dev/null | grep -i version
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
💻 영향받는 소프트웨어
Multi-Domain Security Management Server