Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-52856

CVE-2026-52856: Pterodactyl Wings SFTP DoS Vulnerability

CVE-2026-52856 is a denial of service vulnerability in Pterodactyl Wings caused by malformed SFTP packets triggering a Go panic. This article covers the technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-52856 Overview

CVE-2026-52856 is a denial of service vulnerability in Pterodactyl Wings, the server control plane for the Pterodactyl open-source game server management panel. A malformed packet received during the Secure File Transfer Protocol (SFTP) connection handshake triggers a Go runtime panic, crashing the Wings daemon. The flaw stems from improper validation of an array index [CWE-129] in the SFTP subsystem request handler. Any unauthenticated network attacker able to reach the SFTP listener can crash the process. The issue is fixed in Wings version 1.13.0.

Critical Impact

Unauthenticated remote attackers can crash the Wings daemon by sending a malformed SFTP handshake packet, disrupting all managed game servers on the host.

Affected Products

  • Pterodactyl Wings versions prior to 1.13.0
  • Pterodactyl game server management panel deployments exposing the Wings SFTP listener
  • Any hosting environment running vulnerable Wings builds

Discovery Timeline

  • 2026-07-31 - CVE-2026-52856 published to the National Vulnerability Database (NVD)
  • 2026-07-31 - Last updated in NVD database

Technical Details for CVE-2026-52856

Vulnerability Analysis

Wings implements an SSH server that accepts SFTP subsystem requests from Pterodactyl users. During channel setup, the server inspects incoming request payloads to determine whether the client is requesting the sftp subsystem. The pre-patch code sliced the payload starting at byte offset 4 without first verifying the payload length. A crafted request with a payload shorter than four bytes causes an out-of-bounds slice operation, producing a Go runtime panic that terminates the Wings process.

Because Wings supervises all game server containers on the host, a panic disrupts every workload managed by the daemon. The vulnerability is classified under CWE-129: Improper Validation of Array Index.

Root Cause

The root cause is a missing bounds check on the req.Payload byte slice inside the SFTP channel request handler in sftp/server.go. The handler assumed the payload contained at least four bytes of length prefix followed by the subsystem name, but no validation enforced this assumption before slicing.

Attack Vector

An attacker with network reachability to the Wings SFTP listener initiates an SSH connection, opens a session channel, and sends a subsystem request with a payload shorter than four bytes. No authentication is required to trigger the panic because the malformed request is processed before authentication completes for the subsystem selection path.

go
// Channels have a type that is dependent on the protocol. For SFTP
// this is "subsystem" with a payload that (should) be "sftp". Discard
// anything else we receive ("pty", "shell", etc)
-_ = req.Reply(req.Type == "subsystem" && string(req.Payload[4:]) == "sftp", nil)
+ok := req.Type == "subsystem" && len(req.Payload) >= 4 && string(req.Payload[4:]) == "sftp"
+_ = req.Reply(ok, nil)

Source: Pterodactyl Wings commit 8e49c7c. The patch adds a len(req.Payload) >= 4 guard before slicing the payload, preventing the panic.

Detection Methods for CVE-2026-52856

Indicators of Compromise

  • Unexpected Wings daemon crashes or restarts recorded in systemd or container orchestrator logs
  • Go runtime panic stack traces referencing sftp/server.go in Wings logs
  • Simultaneous disconnection of all managed game servers on a Wings host
  • Inbound SSH connections to the Wings SFTP port from unfamiliar source addresses immediately preceding a crash

Detection Strategies

  • Monitor Wings process uptime and alert on abnormal restart frequency for the wings service
  • Parse Wings logs for panic: entries and correlate with SFTP subsystem request events
  • Capture and inspect SSH channel request packets targeting the Wings SFTP listener for undersized subsystem payloads

Monitoring Recommendations

  • Ingest Wings service logs and host-level process telemetry into a centralized logging platform
  • Track connection rates to the Wings SFTP port and flag anomalous spikes from single sources
  • Alert on repeated SSH handshake failures followed by Wings service termination

How to Mitigate CVE-2026-52856

Immediate Actions Required

  • Upgrade all Wings installations to version 1.13.0 or later immediately
  • Restrict network access to the Wings SFTP port using firewall rules or a reverse proxy allowlist
  • Review supervisor configurations to ensure Wings automatically restarts after a panic while the patch is applied

Patch Information

The fix is available in Pterodactyl Wings v1.13.0. Details of the vulnerability are documented in the GHSA-ghrq-5wpp-hxx5 advisory. The corrective commit is 8e49c7c0eda815d3ada171831876a1c14c493026.

Workarounds

  • Limit SFTP port exposure to trusted management networks or VPN endpoints only
  • Deploy rate limiting on the SFTP listener to reduce the impact of repeated crash attempts
  • Ensure a process supervisor (systemd, Docker restart policy) automatically restarts Wings after a panic
bash
# Upgrade Wings to the patched release
systemctl stop wings
curl -L -o /usr/local/bin/wings \
  https://github.com/pterodactyl/wings/releases/download/v1.13.0/wings_linux_amd64
chmod u+x /usr/local/bin/wings
systemctl start wings
systemctl status wings

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.