VYPR
High severityNVD Advisory· Published May 3, 2024· Updated Aug 2, 2024

Arbitrary File Write/Read in Pterodactyl wings

CVE-2024-34066

Description

Pterodactyl wings is the server control plane for Pterodactyl Panel. If the Wings token is leaked either by viewing the node configuration or posting it accidentally somewhere, an attacker can use it to gain arbitrary file write and read access on the node the token is associated to. This issue has been addressed in version 1.11.12 and users are advised to upgrade. Users unable to upgrade may enable the ignore_panel_config_updates option as a workaround.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
github.com/pterodactyl/wingsGo
< 1.11.121.11.12

Affected products

1

Patches

1
5415f8ae07f5

config: prevent programmatic updates to specific fields

https://github.com/pterodactyl/wingsMatthew PennerApr 10, 2024via ghsa
1 file changed · +12 10
  • config/config.go+12 10 modified
    @@ -89,7 +89,7 @@ type ApiConfiguration struct {
     	// Determines if functionality for allowing remote download of files into server directories
     	// is enabled on this instance. If set to "true" remote downloads will not be possible for
     	// servers.
    -	DisableRemoteDownload bool `json:"disable_remote_download" yaml:"disable_remote_download"`
    +	DisableRemoteDownload bool `json:"-" yaml:"disable_remote_download"`
     
     	// The maximum size for files uploaded through the Panel in MB.
     	UploadLimit int64 `default:"100" json:"upload_limit" yaml:"upload_limit"`
    @@ -123,23 +123,23 @@ type RemoteQueryConfiguration struct {
     // SystemConfiguration defines basic system configuration settings.
     type SystemConfiguration struct {
     	// The root directory where all of the pterodactyl data is stored at.
    -	RootDirectory string `default:"/var/lib/pterodactyl" yaml:"root_directory"`
    +	RootDirectory string `default:"/var/lib/pterodactyl" json:"-" yaml:"root_directory"`
     
     	// Directory where logs for server installations and other wings events are logged.
    -	LogDirectory string `default:"/var/log/pterodactyl" yaml:"log_directory"`
    +	LogDirectory string `default:"/var/log/pterodactyl" json:"-" yaml:"log_directory"`
     
     	// Directory where the server data is stored at.
    -	Data string `default:"/var/lib/pterodactyl/volumes" yaml:"data"`
    +	Data string `default:"/var/lib/pterodactyl/volumes" json:"-" yaml:"data"`
     
     	// Directory where server archives for transferring will be stored.
    -	ArchiveDirectory string `default:"/var/lib/pterodactyl/archives" yaml:"archive_directory"`
    +	ArchiveDirectory string `default:"/var/lib/pterodactyl/archives" json:"-" yaml:"archive_directory"`
     
     	// Directory where local backups will be stored on the machine.
    -	BackupDirectory string `default:"/var/lib/pterodactyl/backups" yaml:"backup_directory"`
    +	BackupDirectory string `default:"/var/lib/pterodactyl/backups" json:"-" yaml:"backup_directory"`
     
     	// TmpDirectory specifies where temporary files for Pterodactyl installation processes
     	// should be created. This supports environments running docker-in-docker.
    -	TmpDirectory string `default:"/tmp/pterodactyl" yaml:"tmp_directory"`
    +	TmpDirectory string `default:"/tmp/pterodactyl" json:"-" yaml:"tmp_directory"`
     
     	// The user that should own all of the server files, and be used for containers.
     	Username string `default:"pterodactyl" yaml:"username"`
    @@ -306,7 +306,7 @@ type Configuration struct {
     
     	// The location where the panel is running that this daemon should connect to
     	// to collect data and send events.
    -	PanelLocation string                   `json:"remote" yaml:"remote"`
    +	PanelLocation string                   `json:"-" yaml:"remote"`
     	RemoteQuery   RemoteQueryConfiguration `json:"remote_query" yaml:"remote_query"`
     
     	// AllowedMounts is a list of allowed host-system mount points.
    @@ -676,8 +676,10 @@ func getSystemName() (string, error) {
     	return release["ID"], nil
     }
     
    -var openat2 atomic.Bool
    -var openat2Set atomic.Bool
    +var (
    +	openat2    atomic.Bool
    +	openat2Set atomic.Bool
    +)
     
     func UseOpenat2() bool {
     	if openat2Set.Load() {
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.