CVE-2025-54424: Github.com/1Panel dev/1Panel/core 1Panel Agent Certificate Verification Bypass Vulnerability

HIGH
Advisory Identifier: GHSA-8j63-96wh-wh3j
CVSS 8.1
CWE-295 CWE-77
Published
Advisory Summary

CVE-2025-54424 is a HIGH (CVSS 8.1) 1panel agent certificate verification bypass vulnerability (CWE-295: Improper Certificate Validation) affecting Github.com/1Panel dev/1Panel/core libraries in the Go ecosystem. The issue involves 1panel agent certificate verification bypass leading to arbitrary command execution. Remediation is available by upgrading affected packages to version 2.0.6, 0.0.0-20250730021757-04b9cbd87a15.

CVE-2025-54424 at a Glance

CVE Identifier CVE-2025-54424
GHSA Identifier GHSA-8j63-96wh-wh3j
Severity HIGH
CVSS v3.1 Base Score 8.1
CWE Classification CWE-295: Improper Certificate Validation
Affected Product Github.com/1Panel dev/1Panel/core
Package Ecosystem Go
Published Date
Last Updated

Security Impact

CVSS: 8.1

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity High (AC:H)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2025-54424

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

github.com/1Panel-dev/1Panel/core fixed: 2.0.6
Upgrade github.com/1Panel-dev/1Panel/core to 2.0.6
github.com/1Panel-dev/1Panel/core fixed: 0.0.0-20250730021757-04b9cbd87a15
Upgrade github.com/1Panel-dev/1Panel/core to 0.0.0-20250730021757-04b9cbd87a15
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 github.com/1Panel-dev/1Panel/core

How to Check if You Are Affected

To determine whether your application is affected by CVE-2025-54424, inspect your project dependencies for Github.com/1Panel dev/1Panel/core:

inspect dependencies for github.com/1Panel-dev/1Panel/core

Analyze the terminal output to locate any version of Github.com/1Panel dev/1Panel/core in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.0.6), 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-295: Improper Certificate Validation, where the product does not validate, or incorrectly validates, a certificate. In Github.com/1Panel dev/1Panel/core, 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

### Project Address: Project Address [1Panel](https://github.com/1Panel-dev/1Panel) ### Official website: https://www.1panel.cn/ ### Time: 2025 07 26 ### Version: 1panel V2.0.5 ### Vulnerability Summary - First, we introduce the concepts of 1panel v2 Core and Agent. After the new version is released, 1panel adds the node management function, which allows you to control other hosts by adding nodes. - The HTTPS protocol used for communication between the Core and Agent sides did not fully verify the authenticity of the certificate during certificate verification, resulting in unauthorized interfaces. The presence of a large number of command execution or high-privilege interfaces in the 1panel led to RCE. ![](https://github.com/user-attachments/assets/ebd0b388-d6c0-4678-98ee-47646e69ebe9) ### Code audit process 1. First we go to the Agent HTTP routing fileagent/init/router/router.go ![](https://github.com/user-attachments/assets/dd9152a9-6677-4674-b75f-3b67dcedb321) 2. It was found that the Routersreference function in the function Certificatewas globally checked.agent/middleware/certificate.go ![](https://github.com/user-attachments/assets/5585f251-61e0-4603-8e9e-f50465f265ae) 3. The discovery Certificatefunction determines c.Request.TLS.HandshakeCompletewhether certificate communication has been performed ![](https://github.com/user-attachments/assets/5a50bdec-cc4d-4439-9b7b-98991ca4ff9c) 4. Since c.Request.TLS.HandshakeCompletethe true or false judgment is determined by agent/server/server.gothe code Startfunctiontls.RequireAnyClientCert ![](https://github.com/user-attachments/assets/3785b245-6e1f-44ff-9760-708b3e76560b) Note::`Here due to the use of tls.RequireAnyClientCert instead of tls.RequireAndVerifyClientCert,RequireAnyClientCert Only require the client to provide a certificate,Does not verify the issuance of certificates CA,So any self assigned certificate will pass TLS handshake。` 5. The subsequent Certificatefunction only verified that the CN field of the certificate was panel_client, without verifying the certificate issuer. Finally, it was discovered that the WebSocket connection could bypass Proxy-ID verification. ![](https://github.com/user-attachments/assets/f521d75a-cd72-41b8-b90f-f10ffb923484) 6. Process WebSocket interface (based on the above questions, all processes and other sensitive information can be obtained) routing address: /process/ws the request format is as follows ``` { "type": "ps", // 数据类型: ps(进程), ssh(SSH会话), net(网络连接), wget(下载进度) "pid": 123, // 可选,指定进程ID进行筛选 "name": "process_name", // 可选,根据进程名筛选 "username": "user" // 可选,根据用户名筛选 } ``` ![](https://github.com/user-attachments/assets/011dc303-9316-4160-ad98-165c032f6e49) - Terminal SSH WebSocket interface (according to the above problem, any command can be executed) routing address: /hosts/terminal the request format is as follows ``` { "type": "cmd", "data": "d2hvYW1pCg==" // "whoami" 的base64编码,记住不要忘记回车。 } ``` ![](https://github.com/user-attachments/assets/6f2ac997-8b32-4cb6-a64c-be33db845a76) - Container Terminal WebSocket interface (container execution command interface) routing address:/containers/terminal - File Download Process WebSocket interface (automatically push download progress information) routing address:/files/wget/process ### Attack process 1. First generate a fake certificate openssl req -x509 -newkey rsa:2048 -keyout panel_client.key -out panel_client.crt -days 365 -nodes -subj "/CN=panel_client" 2. Then use the certificate to request verification. If the websocket interface is successfully connected, there is a vulnerability. ![](https://github.com/user-attachments/assets/9e3016f8-ebe0-4dc9-b797-405c6a4aec89) ![](https://github.com/user-attachments/assets/8076ad9c-da30-452f-9f42-83ae1d66f9ac)

CVE-2025-54424 Affected Github.com/1Panel dev/1Panel/core Versions

2 component(s)
Fixed Versions:
2.0.60.0.0-20250730021757-04b9cbd87a15
Product / Package Ecosystem Affected Versions Fixed Version
github.com/1Panel-dev/1Panel/core
Go
≥ 1.0.0
< 2.0.6
2.0.6
github.com/1Panel-dev/1Panel/core
Go
< 0.0.0-20250730021757-04b9cbd87a15
0.0.0-20250730021757-04b9cbd87a15

References

Frequently Asked Questions

What is CVE-2025-54424?
CVE-2025-54424 is a security vulnerability in Github.com/1Panel dev/1Panel/core involving 1Panel agent certificate verification bypass leading to arbitrary command execution under CWE-295: Improper Certificate Validation.
Which Github.com/1Panel dev/1Panel/core versions are affected?
Affected versions include releases prior to 2.0.6, 0.0.0-20250730021757-04b9cbd87a15 across affected packages: github.com/1Panel-dev/1Panel/core.
What version fixes CVE-2025-54424?
Upgrading to 2.0.6, 0.0.0-20250730021757-04b9cbd87a15 (or the latest patched release for your respective branch) resolves the vulnerability.
Is github.com/1Panel-dev/1Panel/core affected?
Yes, github.com/1Panel-dev/1Panel/core is affected in releases prior to 2.0.6, 0.0.0-20250730021757-04b9cbd87a15. Upgrade your dependency to 2.0.6, 0.0.0-20250730021757-04b9cbd87a15 or later.
What is the CVSS score of CVE-2025-54424?
CVE-2025-54424 has a CVSS v3.1 base score of 8.1 (HIGH) with vector string CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H.
What CWE is associated with CVE-2025-54424?
CVE-2025-54424 is classified under CWE-295: Improper Certificate Validation (The product does not validate, or incorrectly validates, a certificate.).
How can I check Go dependencies for CVE-2025-54424?
Run the dependency tree command: 'inspect dependencies for github.com/1Panel-dev/1Panel/core'. 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-8j63-96wh-wh3j",
  "modified" : "2025-08-26T20:26:49Z",
  "published" : "2025-08-01T18:10:21Z",
  "aliases" : [ "CVE-2025-54424" ],
  "summary" : "1Panel agent certificate verification bypass leading to arbitrary command execution",
  "details" : "### Project Address: Project Address [1Panel](https://github.com/1Panel-dev/1Panel)\n### Official website: https://www.1panel.cn/\n### Time: 2025 07 26\n### Version: 1panel V2.0.5\n### Vulnerability Summary\n - First, we introduce the concepts of 1panel v2 Core and Agent. After the new version is released, 1panel adds the node management function, which allows you to control other hosts by adding nodes.\n - The HTTPS protocol used for communication between the Core and Agent sides did not fully verify the authenticity of the certificate during certificate verification, resulting in unauthorized interfaces. The presence of a large number of command execution or high-privilege interfaces in the 1panel led to RCE.\n\n![](https://github.com/user-attachments/assets/ebd0b388-d6c0-4678-98ee-47646e69ebe9)\n\n### Code audit process\n\n1. First we go to the Agent HTTP routing fileagent/init/router/router.go\n\n![](https://github.com/user-attachments/assets/dd9152a9-6677-4674-b75f-3b67dcedb321)\n\n2. It was found that the Routersreference function in the function Certificatewas globally checked.agent/middleware/certificate.go\n\n![](https://github.com/user-attachments/assets/5585f251-61e0-4603-8e9e-f50465f265ae)\n\n3. The discovery Certificatefunction determines c.Request.TLS.HandshakeCompletewhether certificate communication has been performed\n\n![](https://github.com/user-attachments/assets/5a50bdec-cc4d-4439-9b7b-98991ca4ff9c)\n\n4. Since c.Request.TLS.HandshakeCompletethe true or false judgment is determined by agent/server/server.gothe code Startfunctiontls.RequireAnyClientCert\n\n![](https://github.com/user-attachments/assets/3785b245-6e1f-44ff-9760-708b3e76560b)\n\nNote::`Here due to the use of tls.RequireAnyClientCert instead of tls.RequireAndVerifyClientCert,RequireAnyClientCert Only require the client to provide a certificate,Does not verify the issuance of certificates CA,So any self assigned certificate will pass TLS handshake。`\n\n5. The subsequent Certificatefunction only verified that the CN field of the certificate was panel_client, without verifying the certificate issuer. Finally, it was discovered that the WebSocket connection could bypass Proxy-ID verification.\n\n![](https://github.com/user-attachments/assets/f521d75a-cd72-41b8-b90f-f10ffb923484)\n\n6. Process WebSocket interface (based on the above questions, all processes and other sensitive information can be obtained)\nrouting address: /process/ws\nthe request format is as follows\n```\n{\n  \"type\": \"ps\",           // 数据类型: ps(进程), ssh(SSH会话), net(网络连接), wget(下载进度)\n  \"pid\": 123,             // 可选,指定进程ID进行筛选\n  \"name\": \"process_name\", // 可选,根据进程名筛选\n  \"username\": \"user\"      // 可选,根据用户名筛选\n}\n```\n![](https://github.com/user-attachments/assets/011dc303-9316-4160-ad98-165c032f6e49)\n\n - Terminal SSH WebSocket interface (according to the above problem, any command can be executed)\nrouting address: /hosts/terminal\nthe request format is as follows\n```\n{\n  \"type\": \"cmd\",\n  \"data\": \"d2hvYW1pCg==\"  // \"whoami\" 的base64编码,记住不要忘记回车。\n}\n```\n![](https://github.com/user-attachments/assets/6f2ac997-8b32-4cb6-a64c-be33db845a76)\n\n - Container Terminal WebSocket interface (container execution command interface)\nrouting address:/containers/terminal\n    \n - File Download Process WebSocket interface (automatically push download progress information)\nrouting address:/files/wget/process\n\n### Attack process\n\n1. First generate a fake certificate\nopenssl req -x509 -newkey rsa:2048 -keyout panel_client.key -out panel_client.crt -days 365 -nodes -subj \"/CN=panel_client\"\n\n2. Then use the certificate to request verification. If the websocket interface is successfully connected, there is a vulnerability.\n\n![](https://github.com/user-attachments/assets/9e3016f8-ebe0-4dc9-b797-405c6a4aec89)\n\n![](https://github.com/user-attachments/assets/8076ad9c-da30-452f-9f42-83ae1d66f9ac)",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/1Panel-dev/1Panel/core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.0.0"
      }, {
        "fixed" : "2.0.6"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/1Panel-dev/1Panel/core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "0.0.0-20250730021757-04b9cbd87a15"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/1Panel-dev/1Panel/security/advisories/GHSA-8j63-96wh-wh3j"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-54424"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/1Panel-dev/1Panel/pull/9698/commits/4003284521f8d31ddaf7215d1c30ab8b4cdb0261"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/1Panel-dev/1Panel"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/1Panel-dev/1Panel/releases/tag/v2.0.6"
  }, {
    "type" : "WEB",
    "url" : "https://pkg.go.dev/vuln/GO-2025-3834"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-295", "CWE-77" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2025-08-01T18:10:21Z",
    "nvd_published_at" : "2025-08-01T23:15:24Z"
  }
}