← Back to CVE Explorer

CVE-2026-71417

Full vulnerability record from the local CVENow database.

Description

Lemur manages TLS certificate creation. Prior to 1.9.3, POST /api/1/certificates/upload allowed a non-read-only user to create a duplicate row using another certificate body, authority_id, serial, or external_id without requiring permission on the underlying authority. PUT /api/1/certificates//revoke authorized the caller against only the selected Lemur row, so the creator of the duplicate bypassed CertificatePermission. The duplicate had no cert.endpoints, which also bypassed the safeguard that prevents revocation of deployed certificates. Issuer plugins then revoked the real CA-side certificate using certificate.body or external_id under the stored authority credentials. An attacker could therefore revoke arbitrary managed certificates and cause fleet-wide TLS denial of service. The fix rejects duplicate authority_id and serial identities, requires authority access on upload, and checks every matching row during revocation. This issue is fixed in version 1.9.3.

Severity
HIGH
CVSS score
7.3 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-08-18 20:17:24.237000
Last modified
2026-10-22 22:10:00.250000
View original CVE JSON
{
  "id": "CVE-2026-71417",
  "sourceIdentifier": "[email protected]",
  "published": "2026-08-18T20:17:24.237",
  "lastModified": "2026-10-22T22:10:00.250",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Lemur manages TLS certificate creation. Prior to 1.9.3, POST /api/1/certificates/upload allowed a non-read-only user to create a duplicate row using another certificate body, authority_id, serial, or external_id without requiring permission on the underlying authority. PUT /api/1/certificates//revoke authorized the caller against only the selected Lemur row, so the creator of the duplicate bypassed CertificatePermission. The duplicate had no cert.endpoints, which also bypassed the safeguard that prevents revocation of deployed certificates. Issuer plugins then revoked the real CA-side certificate using certificate.body or external_id under the stored authority credentials. An attacker could therefore revoke arbitrary managed certificates and cause fleet-wide TLS denial of service. The fix rejects duplicate authority_id and serial identities, requires authority access on upload, and checks every matching row during revocation. This issue is fixed in version 1.9.3."
    },
    {
      "lang": "es",
      "value": "Lemur gestiona la creación de certificados TLS. Antes de la versión 1.9.3, POST /API/1/certificates/upload permitía a un usuario no de solo lectura crear una fila duplicada utilizando otro cuerpo de certificado, authority_id, serial o external_id sin requerir permiso sobre la autoridad subyacente. PUT /API/1/certificates//revoke autorizaba al llamante solo contra la fila de Lemur seleccionada, por lo que el creador del duplicado eludía CertificatePermission. El duplicado no tenía cert.endpoints, lo que también eludía la salvaguarda que impide la revocación de certificados desplegados. Los plugins de emisor luego revocaban el certificado real del lado de la CA utilizando certificate.body o external_id bajo las credenciales de autoridad almacenadas. Un atacante podría, por lo tanto, revocar certificados gestionados arbitrarios y causar una denegación de servicio TLS en toda la flota. La solución rechaza identidades duplicadas de authority_id y serial, requiere acceso de autoridad en la carga y verifica cada fila coincidente durante la revocación. Este problema está solucionado en la versión 1.9.3."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "Netflix",
          "product": "lemur",
          "versions": [
            {
              "version": "< 1.9.3",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:H",
          "baseScore": 7.3,
          "baseSeverity": "HIGH",
          "attackVector": "LOCAL",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "CHANGED",
          "confidentialityImpact": "NONE",
          "integrityImpact": "LOW",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.0,
        "impactScore": 4.7
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-18T19:47:37.666221Z",
          "id": "CVE-2026-71417",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Primary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-639"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/Netflix/lemur/commit/851389ae737a6d6bf16c1f9ca64a2ce56c1cc5c6",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/Netflix/lemur/releases/tag/v1.9.3",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/Netflix/lemur/security/advisories/GHSA-pxmc-2ffp-8j67",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/Netflix/lemur/security/advisories/GHSA-pxmc-2ffp-8j67",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ]
}