Skip to content

Instantly share code, notes, and snippets.

@pyuysig
Last active June 13, 2026 15:42
Show Gist options
  • Select an option

  • Save pyuysig/2a581564816d0f9240a03bc2d5ce7356 to your computer and use it in GitHub Desktop.

Select an option

Save pyuysig/2a581564816d0f9240a03bc2d5ce7356 to your computer and use it in GitHub Desktop.
Reference for CVE-2026-50892

Summary

Nginx Proxy Manager 2.14.0 returns private TLS key material through the certificate download API. A user with certificate read access can download a ZIP archive containing privkey.pem for the selected certificate.

Details

The route GET /api/nginx/certificates/:certificate_id/download is handled by backend/internal/certificate.js::download(). The handler packages files from the live certificate directory into a ZIP archive.

The authorization boundary is certificate read access, such as the certificates:get capability for the target certificate. The returned archive includes private key files from the certificate directory instead of limiting the response to public certificate or chain material.

The affected object is the private key associated with the selected Nginx Proxy Manager certificate. This issue is distinct from creating or importing a certificate; the disclosure occurs through the existing download endpoint.

PoC

  1. Log in to Nginx Proxy Manager 2.14.0 as a user with certificate read access, such as the certificates:get permission for a certificate.
  2. Send GET /api/nginx/certificates/{certificate_id}/download for a certificate visible to that user.
  3. Save and unzip the returned archive.
  4. Observe private key material such as privkey.pem included alongside the certificate files.
  5. Compare the result with the expected read-only certificate visibility boundary and confirm that private key material is included in the downloaded package.

Impact

The observed result is disclosure of the selected certificate's private key to a user who should only need certificate read visibility. Possession of the key can allow impersonation of the TLS endpoint and requires key rotation for the affected certificate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment