Summary
Froxlor exposes raw TLS private-key material in JSON responses from certificate API commands without filtering sensitive database fields. An authenticated low-privileged customer may retrieve keys for their own domains, while reseller and broad-visibility administrative accounts may retrieve keys belonging to other principals.
Affected context
The issue occurs in Froxlor deployments where certificate records are returned through the Certificates.get or Certificates.listing API commands. The affected responses may include the ssl_key_file database field containing PEM-encoded private-key content, particularly when API result objects are passed through without an explicit response-field allowlist. Exposure can affect customer-owned certificates and, for accounts with broader visibility, certificates belonging to other users.
Exploit preconditions
- Attack surface: Authenticated Froxlor certificate-management API
- Required access: A valid customer account for the caller's own domains; reseller or
customers_see_alladministrative access may broaden the accessible records - Trigger point: Invocation of the
Certificates.getorCertificates.listingAPI commands - Why exploitation is possible: API responses serialize certificate records without removing or restricting the raw private-key field
Why this happens
The underlying bug is excessive data exposure caused by returning database query results directly through an API response sink. Because no field stripping or explicit allowlist prevents ssl_key_file from being serialized, a field intended for protected server-side use becomes available to API callers. This maps to CWE-200: Exposure of Sensitive Information to an Unauthorized Actor, because private cryptographic material is disclosed beyond its intended trust boundary.
Potential impact
- Attackers may impersonate affected domains through fraudulent TLS endpoints
- Exposed keys could support active man-in-the-middle attacks
- Captured TLS traffic may be decryptable in configurations without effective forward secrecy
- Customers or administrators may lose control of certificate trust and domain identity
- Broader account compromise could result if exposed keys are reused or associated with other services
General mitigation guidance
Mitigation typically focuses on enforcing a strict separation between internal certificate data and API-visible representations.
Common defensive patterns include:
- Returning only explicitly approved certificate metadata fields
- Keeping private-key material out of general-purpose ORM or API serialization paths
- Applying endpoint-specific response schemas and deny-by-default field filtering
- Restricting certificate-management permissions according to least privilege
- Rotating potentially exposed keys and certificates through established certificate-management processes
- Avoiding storage or logging patterns that replicate raw private keys unnecessarily
These controls reduce disclosure risk even when an authenticated caller can access certificate-related endpoints.
How teams detect issues like this
Organizations commonly detect this class of issue through:
- API schema reviews that identify private keys, tokens, passwords, and other secrets in response models
- Static analysis and code review checks for direct serialization of database query results
- Tests asserting that sensitive fields such as
ssl_key_filenever appear in customer-facing responses - Runtime monitoring for certificate API requests and unusual enumeration of certificate records
- Policy enforcement requiring explicit response allowlists for security-sensitive endpoints
Automated API security testing and secret-scanning tools can help identify accidental disclosure during development and testing.

