Skip to content
Heist/ feed
Back to feed
Medium

Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority

Type: advisorySources: OSV

Lemur manages TLS certificate creation. Prior to 1.9.3, POST /api/1/authorities with type=subca did not require AuthorityPermission on the parent authority when ADMIN_ONLY_AUTHORITY_CREATION was false. AssociatedAuthoritySchema resolved the caller-supplied parent and passed it through authority creation to cryptography-issuer, which used the parent authority_certificate.private_key to sign a new intermediate. Any authenticated non-read-only user in that supported configuration could chain a sub-CA to an internal root for which the user held no role. The resulting intermediate could issue trusted certificates and its private key could be used outside Lemur, bypassing normal issuance controls. The fix checks AuthorityPermission on every supplied parent before invoking the issuer. This issue is fixed in version 1.9.3.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-71317
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 01:21 UTC · Revision 1

Source evidence

Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority

core-osv · Original source

Published 18 Aug 2026, 19:06 UTC

Lemur manages TLS certificate creation. Prior to 1.9.3, POST /api/1/authorities with type=subca did not require AuthorityPermission on the parent authority when ADMIN_ONLY_AUTHORITY_CREATION was false. AssociatedAuthoritySchema resolved the caller-supplied parent and passed it through authority creation to cryptography-issuer, which used the parent authority_certificate.private_key to sign a new intermediate. Any authenticated non-read-only user in that supported configuration could chain a sub-CA to an internal root for which the user held no role. The resulting intermediate could issue trusted certificates and its private key could be used outside Lemur, bypassing normal issuance controls. The fix checks AuthorityPermission on every supplied parent before invoking the issuer. This issue is fixed in version 1.9.3.

osv:CVE-2026-71317
Complete source record
{
  "id": "105b3bd7b8b44f966e1dd0a031b9954eac85bddedd108a2f8143267278a1d2a4",
  "url": "https://osv.dev/vulnerability/CVE-2026-71317",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Lemur: Sub-CA creation never checks `AuthorityPermission` on the parent authority",
    "summary": "Lemur manages TLS certificate creation. Prior to 1.9.3, POST /api/1/authorities with type=subca did not require AuthorityPermission on the parent authority when ADMIN_ONLY_AUTHORITY_CREATION was false. AssociatedAuthoritySchema resolved the caller-supplied parent and passed it through authority creation to cryptography-issuer, which used the parent authority_certificate.private_key to sign a new intermediate. Any authenticated non-read-only user in that supported configuration could chain a sub-CA to an internal root for which the user held no role. The resulting intermediate could issue trusted certificates and its private key could be used outside Lemur, bypassing normal issuance controls. The fix checks AuthorityPermission on every supplied parent before invoking the issuer. This issue is fixed in version 1.9.3.",
    "evidence": "osv:CVE-2026-71317",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-71317",
      "aliases": [
        "CVE-2026-71317",
        "GHSA-g7p5-89mh-248h",
        "PYSEC-2026-3677"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/netflix/lemur",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "726506d15a6da8d9bcf5c39b4dc0c95535cf03c0"
                },
                {
                  "fixed": "8669011203ca3dd89d9e39bab9ef6850eca723f9"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.9.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "8669011203ca3dd89d9e39bab9ef6850eca723f9"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "726506d15a6da8d9bcf5c39b4dc0c95535cf03c0"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v1.9.3"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.9.2",
            "v1.9.1",
            "v1.9.0",
            "v1.8.2",
            "v1.8.1",
            "v1.8.0",
            "v1.7.0",
            "v1.6.0",
            "v1.5.0",
            "v1.4.0",
            "v1.3.2",
            "v1.3.1",
            "v1.3.0",
            "v1.2.0",
            "v1.1.0",
            "v1.0.0",
            "v0.11.0",
            "v0.10.0",
            "v0.9.0",
            "v0.8.1",
            "0.8.0",
            "0.7.0",
            "0.6.0",
            "0.5.0",
            "0.4.0",
            "0.3.0",
            "0.2.2",
            "0.2.1",
            "0.2",
            "0.1.5",
            "0.1.4",
            "0.1.3",
            "0.1.2",
            "0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-71317.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:45.584299239Z",
      "provider": "osv",
      "references": [
        "https://github.com/Netflix/lemur/releases/tag/v1.9.3",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71317.json",
        "https://github.com/Netflix/lemur/security/advisories/GHSA-g7p5-89mh-248h",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-71317",
        "https://github.com/Netflix/lemur/commit/8669011203ca3dd89d9e39bab9ef6850eca723f9"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71317.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-71317",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 513802,
  "published_at": "2026-08-18T19:06:27.618+00:00"
}