Every CVE Search/ Get API key

CVE-2026-62988

Froxlor: Credential and 2FA secret disclosure via Froxlor API endpoints

9.0 CriticalFix available

Froxlor is open source server administration software. From 2.3.7 until 2.3.8, the Customers.get, Customers.listing, Admins.get, Admins.listing, Ftps.get, and Ftps.listing API commands in lib/Froxlor/Api/Commands/Customers.php, lib/Froxlor/Api/Commands/Admins.php, and lib/Froxlor/Api/Commands/Ftps.php retrieve full database rows and return them without removing password and data_2fa fields. An authenticated API caller with permission to use these endpoints can obtain customer, administrator, and FTP password hashes as well as Base32-encoded TOTP seeds for administrator and customer accounts. Password hashes can be cracked offline, and TOTP seeds can generate valid second-factor codes until two-factor authentication is reset. Exposure of both values for an account can enable takeover of the hosting panel or hosted resources and can defeat both authentication factors. This issue is fixed in version 2.3.8.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
High
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
Low

Exploit likelihood

0.63%Unchanged since Aug 19, 2026
90%50%10%1%

What each source reports

CVE List Score used 9.0

Froxlor: Credential and 2FA secret disclosure via Froxlor API endpoints

Froxlor is open source server administration software. From 2.3.7 until 2.3.8, the Customers.get, Customers.listing, Admins.get, Admins.listing, Ftps.get, and Ftps.listing API commands in lib/Froxlor/Api/Commands/Customers.php, lib/Froxlor/Api/Commands/Admins.php, and lib/Froxlor/Api/Commands/Ftps.php retrieve full database rows and return them without removing password and data_2fa fields. An authenticated API caller with permission to use these endpoints can obtain customer, administrator, and FTP password hashes as well as Base32-encoded TOTP seeds for administrator and customer accounts. Password hashes can be cracked offline, and TOTP seeds can generate valid second-factor codes until two-factor authentication is reset. Exposure of both values for an account can enable takeover of the hosting panel or hosted resources and can defeat both authentication factors. This issue is fixed in version 2.3.8.

Record
CVE-2026-62988
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Weakness
CWE-200
Updated
2026-11-02
EUVDEUVD-2026-61216 9.0

Froxlor is open source server administration software. From 2.3.7 until 2.3.8, the Customers.get, Customers.listing, Admins.get, Admins.listing, Ftps.get, and Ftps.listing API commands in lib/Froxlor/Api/Commands/Customers.php, lib/Froxlor/Api/Commands/Admins.php, and lib/Froxlor/Api/Commands/Ftps.php retrieve full database rows and return them without removing password and data_2fa fields. An authenticated API caller with permission to use these endpoints can obtain customer, administrator, and FTP password hashes as well as Base32-encoded TOTP seeds for administrator and customer accounts. Password hashes can be cracked offline, and TOTP seeds can generate valid second-factor codes until two-factor authentication is reset. Exposure of both values for an account can enable takeover of the hosting panel or hosted resources and can defeat both authentication factors. This issue is fixed in version 2.3.8.

Record
EUVD-2026-61216
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Updated
2026-11-02
GitHub AdvisoriesGHSA-7788-ghfq-c6mh 9.0

Froxlor: Credential and 2FA secret disclosure via Froxlor API endpoints

Summary

Several Froxlor API command classes return sensitive authentication material in JSON API responses. The affected endpoints retrieve full database rows using SELECT *, SELECT alias.*, or equivalent full-row queries, then return the results directly through $this->response(...) without removing credential-related fields.

The exposed fields include password hashes for customers, administrators, and FTP users, as well as TOTP 2FA seed material for administrator and customer accounts.

This exposes credential-equivalent data to API clients that should not receive it. Password hashes can be cracked offline and reused for account takeover, while exposed TOTP seeds allow generation of valid 2FA codes for affected accounts. When both a password hash and TOTP seed are exposed for the same account, the vulnerability can defeat both authentication factors if the password hash is cracked or the password is otherwise obtained.

Details

The affected API classes retrieve entire database rows and return them without filtering sensitive fields:

lib/Froxlor/Api/Commands/Customers.php

Customers.get() and Customers.listing() select and return customer rows containing sensitive fields, including:

  • password
  • type_2fa
  • data_2fa

When type_2fa = 2, the data_2fa value represents the Base32-encoded TOTP seed used by the customer's authenticator application.

The result is returned through $this->response($result) or $this->response(['list' => $result]) without removing these fields.

lib/Froxlor/Api/Commands/Admins.php

Admins.get() and Admins.listing() return administrator rows containing sensitive fields, including:

  • password
  • type_2fa
  • data_2fa

When type_2fa = 2, the data_2fa value represents the Base32-encoded TOTP seed used by the administrator's authenticator application.

These fields are not stripped before returning the API response.

lib/Froxlor/Api/Commands/Ftps.php

Ftps.get() and Ftps.listing() return FTP user rows containing:

  • password

The password field is not stripped before returning the API response.

This behavior appears inconsistent with Froxlor's existing safe response patterns. For example, other API command classes explicitly remove password-related fields before returning responses. This indicates that credential material and sensitive internal fields are already treated as non-response data in other parts of the product.

Proof of Concept

Preconditions

  • Froxlor API is enabled.
  • A valid API key and secret exist for an account allowed to call the affected API endpoints.
  • At least one customer or administrator account exists with TOTP 2FA enabled.
  • For Admins.*, the API account must have the required permission to call the affected administrator endpoint.

Set variables:

export FROXLOR_BASE='https://froxlor.example.com'
export API_KEY='<api_key>'
export API_SECRET='<api_secret>'

PoC 1: Customer password hash and TOTP seed exposure

curl -k -sS -u "$API_KEY:$API_SECRET" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{"command":"Customers.listing","params":{}}' \
  "$FROXLOR_BASE/api.php" | jq '.data.list[] | {customerid, loginname, password, type_2fa, data_2fa, email}'

Example vulnerable response:

{
  "customerid": 1,
  "loginname": "customer1",
  "password": "$2y$12$REDACTED_HASH_VALUE...",
  "type_2fa": 2,
  "data_2fa": "REDACTED_BASE32_TOTP_SEED",
  "email": "[email protected]"
}

The same issue can be verified with Customers.get:

curl -k -sS -u "$API_KEY:$API_SECRET" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{"command":"Customers.get","params":{"id":1}}' \
  "$FROXLOR_BASE/api.php"

PoC 2: Administrator password hash and TOTP seed exposure

curl -k -sS -u "$API_KEY:$API_SECRET" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{"command":"Admins.listing","params":{}}' \
  "$FROXLOR_BASE/api.php" | jq…
Record
GHSA-7788-ghfq-c6mh
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Weakness
CWE-200
Updated
2026-11-02
NVD 9.0

Froxlor is open source server administration software. From 2.3.7 until 2.3.8, the Customers.get, Customers.listing, Admins.get, Admins.listing, Ftps.get, and Ftps.listing API commands in lib/Froxlor/Api/Commands/Customers.php, lib/Froxlor/Api/Commands/Admins.php, and lib/Froxlor/Api/Commands/Ftps.php retrieve full database rows and return them without removing password and data_2fa fields. An authenticated API caller with permission to use these endpoints can obtain customer, administrator, and FTP password hashes as well as Base32-encoded TOTP seeds for administrator and customer accounts. Password hashes can be cracked offline, and TOTP seeds can generate valid second-factor codes until two-factor authentication is reset. Exposure of both values for an account can enable takeover of the hosting panel or hosted resources and can defeat both authentication factors. This issue is fixed in version 2.3.8.

Record
CVE-2026-62988
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Weakness
CWE-200
Updated
2026-11-02
OSV 9.0

Froxlor: Credential and 2FA secret disclosure via Froxlor API endpoints

Froxlor is open source server administration software. From 2.3.7 until 2.3.8, the Customers.get, Customers.listing, Admins.get, Admins.listing, Ftps.get, and Ftps.listing API commands in lib/Froxlor/Api/Commands/Customers.php, lib/Froxlor/Api/Commands/Admins.php, and lib/Froxlor/Api/Commands/Ftps.php retrieve full database rows and return them without removing password and data_2fa fields. An authenticated API caller with permission to use these endpoints can obtain customer, administrator, and FTP password hashes as well as Base32-encoded TOTP seeds for administrator and customer accounts. Password hashes can be cracked offline, and TOTP seeds can generate valid second-factor codes until two-factor authentication is reset. Exposure of both values for an account can enable takeover of the hosting panel or hosted resources and can defeat both authentication factors. This issue is fixed in version 2.3.8.

Record
CVE-2026-62988
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Weakness
CWE-200
Updated
2026-11-02
OSVGHSA-7788-ghfq-c6mh 9.0

Froxlor: Credential and 2FA secret disclosure via Froxlor API endpoints

Summary

Several Froxlor API command classes return sensitive authentication material in JSON API responses. The affected endpoints retrieve full database rows using SELECT *, SELECT alias.*, or equivalent full-row queries, then return the results directly through $this->response(...) without removing credential-related fields.

The exposed fields include password hashes for customers, administrators, and FTP users, as well as TOTP 2FA seed material for administrator and customer accounts.

This exposes credential-equivalent data to API clients that should not receive it. Password hashes can be cracked offline and reused for account takeover, while exposed TOTP seeds allow generation of valid 2FA codes for affected accounts. When both a password hash and TOTP seed are exposed for the same account, the vulnerability can defeat both authentication factors if the password hash is cracked or the password is otherwise obtained.

Details

The affected API classes retrieve entire database rows and return them without filtering sensitive fields:

lib/Froxlor/Api/Commands/Customers.php

Customers.get() and Customers.listing() select and return customer rows containing sensitive fields, including:

  • password
  • type_2fa
  • data_2fa

When type_2fa = 2, the data_2fa value represents the Base32-encoded TOTP seed used by the customer's authenticator application.

The result is returned through $this->response($result) or $this->response(['list' => $result]) without removing these fields.

lib/Froxlor/Api/Commands/Admins.php

Admins.get() and Admins.listing() return administrator rows containing sensitive fields, including:

  • password
  • type_2fa
  • data_2fa

When type_2fa = 2, the data_2fa value represents the Base32-encoded TOTP seed used by the administrator's authenticator application.

These fields are not stripped before returning the API response.

lib/Froxlor/Api/Commands/Ftps.php

Ftps.get() and Ftps.listing() return FTP user rows containing:

  • password

The password field is not stripped before returning the API response.

This behavior appears inconsistent with Froxlor's existing safe response patterns. For example, other API command classes explicitly remove password-related fields before returning responses. This indicates that credential material and sensitive internal fields are already treated as non-response data in other parts of the product.

Proof of Concept

Preconditions

  • Froxlor API is enabled.
  • A valid API key and secret exist for an account allowed to call the affected API endpoints.
  • At least one customer or administrator account exists with TOTP 2FA enabled.
  • For Admins.*, the API account must have the required permission to call the affected administrator endpoint.

Set variables:

export FROXLOR_BASE='https://froxlor.example.com'
export API_KEY='<api_key>'
export API_SECRET='<api_secret>'

PoC 1: Customer password hash and TOTP seed exposure

curl -k -sS -u "$API_KEY:$API_SECRET" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{"command":"Customers.listing","params":{}}' \
  "$FROXLOR_BASE/api.php" | jq '.data.list[] | {customerid, loginname, password, type_2fa, data_2fa, email}'

Example vulnerable response:

{
  "customerid": 1,
  "loginname": "customer1",
  "password": "$2y$12$REDACTED_HASH_VALUE...",
  "type_2fa": 2,
  "data_2fa": "REDACTED_BASE32_TOTP_SEED",
  "email": "[email protected]"
}

The same issue can be verified with Customers.get:

curl -k -sS -u "$API_KEY:$API_SECRET" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{"command":"Customers.get","params":{"id":1}}' \
  "$FROXLOR_BASE/api.php"

PoC 2: Administrator password hash and TOTP seed exposure

curl -k -sS -u "$API_KEY:$API_SECRET" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{"command":"Admins.listing","params":{}}' \
  "$FROXLOR_BASE/api.php" | jq…
Record
GHSA-7788-ghfq-c6mh
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Weakness
CWE-200
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
froxlor/froxlor
Packagist
before 2.3.8
2.3.8
froxlor/froxlor
Packagist
before 2.3.8, plus listed versions
0.10.00.10.0-rc10.10.0-rc20.10.10.10.10
Show 45 moreShow less
0.10.110.10.120.10.130.10.140.10.150.10.160.10.170.10.180.10.190.10.20.10.200.10.210.10.220.10.230.10.23.10.10.240.10.250.10.260.10.270.10.280.10.290.10.29.10.10.30.10.300.10.310.10.320.10.330.10.340.10.34.10.10.350.10.35.10.10.360.10.370.10.380.10.38.10.10.38.20.10.38.30.10.40.10.50.10.60.10.70.10.80.10.92.0.02.0.1
2.3.8

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-62988 is a critical vulnerability (CVSS 9.0) in Froxlor, published August 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.63%, the 50th percentile. Fixed in froxlor/froxlor 2.3.8.

References

This page doesn't list everything

Left out here: 59 versions and the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open