CVE-2025-68954: Pterodactyl/panel Pterodactyl Does Not Revoke SFTP Vulnerability

HIGH
Advisory Identifier: GHSA-8c39-xppg-479c
CWE-613
Published
Advisory Summary

CVE-2025-68954 is a HIGH pterodactyl does not revoke sftp vulnerability (CWE-613: Insufficient Session Expiration) affecting Pterodactyl/panel libraries in the Packagist ecosystem. The issue involves pterodactyl does not revoke sftp access when server is deleted or permissions reduced. Remediation is available by upgrading affected packages to version 1.12.0.

CVE-2025-68954 at a Glance

CVE Identifier CVE-2025-68954
GHSA Identifier GHSA-8c39-xppg-479c
Severity HIGH
CVSS v3.1 Base Score N/A
CWE Classification CWE-613: Insufficient Session Expiration
Affected Product Pterodactyl/panel
Package Ecosystem Packagist
Published Date
Last Updated

How to Fix CVE-2025-68954

To remediate this vulnerability, upgrade all affected Pterodactyl/panel dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

pterodactyl/panel fixed: 1.12.0
Upgrade pterodactyl/panel to 1.12.0
github.com/pterodactyl/wings fixed: 1.12.0
Upgrade github.com/pterodactyl/wings to 1.12.0
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for pterodactyl/panel

How to Check if You Are Affected

To determine whether your application is affected by CVE-2025-68954, inspect your project dependencies for Pterodactyl/panel:

inspect dependencies for pterodactyl/panel

Analyze the terminal output to locate any version of Pterodactyl/panel in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.12.0), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-613: Insufficient Session Expiration, where according to wasc, "insufficient session expiration is when a web site permits an attacker to reuse old session credentials or session ids for authorization.". In Pterodactyl/panel, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary Pterodactyl does not revoke _active_ SFTP connections when a user is removed from a server instance or has their permissions changes with respect to file access over SFTP. This allows a user that was already connected to SFTP to remain connected and access files even after their permissions are revoked. ### Details When a user opens a connection to a server using the Wings SFTP server instance the permissions are checked and returned from the authentication API call made to the Panel. However, credentials are not checked again after the initial handshake. Thus, if a user is removed from a server in the panel or have their permissions modified, those permissions are not updated in the SFTP connection. As a result, a user that has already gained access to a server's files via the SFTP subsystem will maintain those permissions until disconnected (via Wings restart, or a manual disconnection on their end). > [!NOTE] > > This issue impacts the SFTP subsystem for server files specifically. There is no exposure of Wings private data, or any data outside of a server's local filesystem. Additionally, a user must have been _connected to SFTP at the time of their permissions being revoked_ in order for this issue to be exploited. If a user was not connected, they would not be able to connect once their permissions were reduced. ### Fix Please upgrade to `wings@1.12.0` and `panel@1.12.0` to resolve this issue. Patches are available via the implementation PRs, but it is recommended to apply by upgrading the entire instance.

CVE-2025-68954 Affected Pterodactyl/panel Versions

2 component(s)
Fixed Versions:
1.12.0
Product / Package Ecosystem Affected Versions Fixed Version
pterodactyl/panel
Packagist
< 1.12.0
1.12.0
github.com/pterodactyl/wings
Go
< 1.12.0
1.12.0

References

Frequently Asked Questions

What is CVE-2025-68954?
CVE-2025-68954 is a security vulnerability in Pterodactyl/panel involving Pterodactyl does not revoke SFTP access when server is deleted or permissions reduced under CWE-613: Insufficient Session Expiration.
Which Pterodactyl/panel versions are affected?
Affected versions include releases prior to 1.12.0 across affected packages: pterodactyl/panel, github.com/pterodactyl/wings.
What version fixes CVE-2025-68954?
Upgrading to 1.12.0 (or the latest patched release for your respective branch) resolves the vulnerability.
Is pterodactyl/panel affected?
Yes, pterodactyl/panel is affected in releases prior to 1.12.0. Upgrade your dependency to 1.12.0 or later.
Is github.com/pterodactyl/wings affected?
Yes, github.com/pterodactyl/wings is affected in releases prior to 1.12.0. Upgrade your dependency to 1.12.0 or later.
What CWE is associated with CVE-2025-68954?
CVE-2025-68954 is classified under CWE-613: Insufficient Session Expiration (According to WASC, "Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization.").
How can I check Packagist dependencies for CVE-2025-68954?
Run the dependency tree command: 'inspect dependencies for pterodactyl/panel'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-8c39-xppg-479c",
  "modified" : "2026-01-06T17:18:56Z",
  "published" : "2026-01-06T17:18:56Z",
  "aliases" : [ "CVE-2025-68954" ],
  "summary" : "Pterodactyl does not revoke SFTP access when server is deleted or permissions reduced",
  "details" : "### Summary\nPterodactyl does not revoke _active_ SFTP connections when a user is removed from a server instance or has their permissions changes with respect to file access over SFTP. This allows a user that was already connected to SFTP to remain connected and access files even after their permissions are revoked.\n\n### Details\nWhen a user opens a connection to a server using the Wings SFTP server instance the permissions are checked and returned from the authentication API call made to the Panel. However, credentials are not checked again after the initial handshake. Thus, if a user is removed from a server in the panel or have their permissions modified, those permissions are not updated in the SFTP connection.\n\nAs a result, a user that has already gained access to a server's files via the SFTP subsystem will maintain those permissions until disconnected (via Wings restart, or a manual disconnection on their end).\n\n> [!NOTE]\n>\n> This issue impacts the SFTP subsystem for server files specifically. There is no exposure of Wings private data, or any data outside of a server's local filesystem. Additionally, a user must have been _connected to SFTP at the time of their permissions being revoked_ in order for this issue to be exploited. If a user was not connected, they would not be able to connect once their permissions were reduced.\n\n### Fix\nPlease upgrade to `wings@1.12.0` and `panel@1.12.0` to resolve this issue. Patches are available via the implementation PRs, but it is recommended to apply by upgrading the entire instance.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "pterodactyl/panel"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "1.12.0"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/pterodactyl/wings"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "1.12.0"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/pterodactyl/panel/security/advisories/GHSA-8c39-xppg-479c"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-68954"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/pterodactyl/panel/commit/2bd9d8baddb0e0606e4a9d5be402f48678ac88d5"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/pterodactyl/panel"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/pterodactyl/panel/releases/tag/v1.12.0"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-613" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-01-06T17:18:56Z",
    "nvd_published_at" : "2026-01-06T01:16:01Z"
  }
}