{"id":"GHSA-9qq8-cgcv-qmc9","revision":null,"records":[{"revision":"f8bddc0dc51d40e0a136552b9d1b949d","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-40097","aliases":[],"title":"Step CA affected by an index out of bounds panic in TPM attestation EKU validation","description":"Step CA is an online certificate authority for secure, automated certificate management for DevOps. From 0.24.0 to before 0.30.0-rc3, an attacker can trigger an index out-of-bounds panic in Step CA by sending a crafted attestation key (AK) certificate with an empty Extended Key Usage (EKU) extension during TPM device attestation. When processing a device-attest-01 ACME challenge using TPM attestation, Step CA validates that the AK certificate contains the tcg-kp-AIKCertificate Extended Key Usage OID. During this validation, the EKU extension value is decoded from its ASN.1 representation and the first element is checked. A crafted certificate could include an EKU extension that decodes to an empty sequence, causing the code to panic when accessing the first element of the empty slice. This vulnerability is only reachable when a device-attest-01 ACME challenge with TPM attestation is configured. Deployments not using TPM device attestation are not affected. This vulnerability is fixed in 0.30.0-rc3.","state":0,"publishedAt":"2026-04-10T16:34:53.33+00:00","modifiedAt":"2026-04-10T18:30:15.176+00:00","affected":[{"ecosystem":"Vendor product","name":"certificates","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"smallstep\",\n                    \"product\": \"certificates\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 0.24.0, < 0.30.0-rc3\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","score":3.7,"severity":"LOW"}],"references":["https://github.com/smallstep/certificates/security/advisories/GHSA-9qq8-cgcv-qmc9","https://github.com/smallstep/certificates/pull/2569","https://github.com/smallstep/certificates/commit/ffd31ac0a87e03b0224cb8363094bfe602242888","https://github.com/smallstep/certificates/releases/tag/v0.30.0"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-40097","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-40097","identifiers":["CVE-2026-40097"]},"retained":false,"historicalAffected":[]},{"revision":"520ceb36b2164959b09c3a5e705ce465","observedAt":"2026-11-01T06:15:12.2+00:00","statement":{"source":"euvd","id":"EUVD-2026-21506","aliases":["CVE-2026-40097","GHSA-9qq8-cgcv-qmc9"],"title":"Step CA is an online certificate authority for secure, automated certificate management for DevOps. From 0.24.0 to before 0.30.0-rc3, an attacker can trigger an index out-of-bounds panic in Step CA by sending a crafted attestation key (AK) …","description":"Step CA is an online certificate authority for secure, automated certificate management for DevOps. From 0.24.0 to before 0.30.0-rc3, an attacker can trigger an index out-of-bounds panic in Step CA by sending a crafted attestation key (AK) certificate with an empty Extended Key Usage (EKU) extension during TPM device attestation. When processing a device-attest-01 ACME challenge using TPM attestation, Step CA validates that the AK certificate contains the tcg-kp-AIKCertificate Extended Key Usage OID. During this validation, the EKU extension value is decoded from its ASN.1 representation and the first element is checked. A crafted certificate could include an EKU extension that decodes to an empty sequence, causing the code to panic when accessing the first element of the empty slice. This vulnerability is only reachable when a device-attest-01 ACME challenge with TPM attestation is configured. Deployments not using TPM device attestation are not affected. This vulnerability is fixed in 0.30.0-rc3.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","score":3.7,"severity":null}],"references":["https://github.com/smallstep/certificates/security/advisories/GHSA-9qq8-cgcv-qmc9","https://github.com/smallstep/certificates/pull/2569","https://github.com/smallstep/certificates/commit/ffd31ac0a87e03b0224cb8363094bfe602242888","https://github.com/smallstep/certificates/releases/tag/v0.30.0"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-21506","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Apr 10, 2026, 4:34:53 PM","dateUpdated":"Apr 10, 2026, 6:30:15 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-21506","identifiers":["EUVD-2026-21506","CVE-2026-40097","GHSA-9qq8-cgcv-qmc9"]},"retained":false,"historicalAffected":[]},{"revision":"ad98de2f75b2461ca244a7c36b65af2d","observedAt":"2026-10-27T10:09:56.341+00:00","statement":{"source":"nvd","id":"CVE-2026-40097","aliases":[],"title":"Step CA is an online certificate authority for secure, automated certificate management for DevOps. From 0.24.0 to before 0.30.0-rc3, an attacker can trigger an index out-of-bounds panic in Step CA by sending a crafted attestation key (AK) …","description":"Step CA is an online certificate authority for secure, automated certificate management for DevOps. From 0.24.0 to before 0.30.0-rc3, an attacker can trigger an index out-of-bounds panic in Step CA by sending a crafted attestation key (AK) certificate with an empty Extended Key Usage (EKU) extension during TPM device attestation. When processing a device-attest-01 ACME challenge using TPM attestation, Step CA validates that the AK certificate contains the tcg-kp-AIKCertificate Extended Key Usage OID. During this validation, the EKU extension value is decoded from its ASN.1 representation and the first element is checked. A crafted certificate could include an EKU extension that decodes to an empty sequence, causing the code to panic when accessing the first element of the empty slice. This vulnerability is only reachable when a device-attest-01 ACME challenge with TPM attestation is configured. Deployments not using TPM device attestation are not affected. This vulnerability is fixed in 0.30.0-rc3.","state":0,"publishedAt":"2026-04-10T17:17:12.823+00:00","modifiedAt":"2026-10-26T22:10:00.163+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","score":3.7,"severity":"LOW"}],"references":["https://github.com/smallstep/certificates/commit/ffd31ac0a87e03b0224cb8363094bfe602242888","https://github.com/smallstep/certificates/pull/2569","https://github.com/smallstep/certificates/releases/tag/v0.30.0","https://github.com/smallstep/certificates/security/advisories/GHSA-9qq8-cgcv-qmc9"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-40097","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-129"],"productCriteria":["cpe:2.3:a:smallstep:step-ca:*:*:*:*:*:go:*:*","cpe:2.3:a:smallstep:step-ca:0.30.0:rc1:*:*:*:go:*:*","cpe:2.3:a:smallstep:step-ca:0.30.0:rc2:*:*:*:go:*:*"],"sourceDates":{"published":"2026-04-10T17:17:12.823","lastModified":"2026-10-26T22:10:00.163"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-40097","identifiers":["CVE-2026-40097"]},"retained":false,"historicalAffected":[]},{"revision":"d1350c7da7004e3eac1080d53d93fc68","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-9qq8-cgcv-qmc9","aliases":["CVE-2026-40097","GO-2026-5297"],"title":"Step CA affected by an index out of bounds panic in TPM attestation EKU validation","description":"# Summary\n\nAn attacker can trigger an index out-of-bounds panic in Step CA by sending a crafted attestation key (AK) certificate with an empty Extended Key Usage (EKU) extension during TPM device attestation.\n\n## Details\n\nWhen processing a device-attest-01 ACME challenge using TPM attestation, Step CA validates that the AK certificate contains the tcg-kp-AIKCertificate Extended Key Usage OID. During this validation, the EKU extension value is decoded from its ASN.1 representation and the first element is checked. A crafted certificate could include an EKU extension that decodes to an empty sequence, causing the code to panic when accessing the first element of the empty slice.\n\nThis vulnerability is only reachable when a device-attest-01 ACME challenge with TPM attestation is configured. Deployments not using TPM device attestation are not affected.\n\n## Mitigations\n\nIf you are unable to upgrade to v0.30.0 or newer, the attack can be mitigated by disabling or removing any ACME provisioners that use TPM device attestation (device-attest-01).\n\n## Fix\n\nIn v0.30.0, a bounds check was added to validateAKCertificateExtendedKeyUsage so that an empty EKU sequence is treated as a validation failure rather than causing a panic.\n\n## Acknowledgements\n\nThis issue was identified and reported by @1seal (Oleh Konko).\n\n## Embargo List\n\nIf your organization runs Step CA in production and would like advance, embargoed notification of future security updates, visit https://u.step.sm/disclosure to request inclusion on our embargo list.\n\nStay safe, and thank you for helping us keep the ecosystem secure.","state":0,"publishedAt":"2026-04-10T20:18:08+00:00","modifiedAt":"2026-06-25T19:56:06.3511124+00:00","affected":[{"ecosystem":"Go","name":"github.com/smallstep/certificates","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.24.0"},{"kind":"fixed","version":"0.30.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"LOW"}],"references":["https://github.com/smallstep/certificates/security/advisories/GHSA-9qq8-cgcv-qmc9","https://nvd.nist.gov/vuln/detail/CVE-2026-40097","https://github.com/smallstep/certificates/pull/2569","https://github.com/smallstep/certificates/commit/ffd31ac0a87e03b0224cb8363094bfe602242888","https://github.com/smallstep/certificates","https://github.com/smallstep/certificates/releases/tag/v0.30.0"],"sourceUrl":"https://github.com/advisories/GHSA-9qq8-cgcv-qmc9","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-9qq8-cgcv-qmc9","identifiers":["GHSA-9qq8-cgcv-qmc9","CVE-2026-40097","GO-2026-5297"]},"retained":false,"historicalAffected":[]},{"revision":"554967492bcb4d8cbe30918986cb049e","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GO-2026-5297","aliases":["CVE-2026-40097","GHSA-9qq8-cgcv-qmc9"],"title":"Step CA affected by an index out of bounds panic in TPM attestation EKU validation in github.com/smallstep/certificates","description":"Step CA affected by an index out of bounds panic in TPM attestation EKU validation in github.com/smallstep/certificates","state":0,"publishedAt":"2026-06-25T18:43:19+00:00","modifiedAt":"2026-06-25T19:45:30.5381362+00:00","affected":[{"ecosystem":"Go","name":"github.com/smallstep/certificates","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.24.0"},{"kind":"fixed","version":"0.30.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/smallstep/certificates/security/advisories/GHSA-9qq8-cgcv-qmc9","https://nvd.nist.gov/vuln/detail/CVE-2026-40097","https://github.com/smallstep/certificates/commit/ffd31ac0a87e03b0224cb8363094bfe602242888","https://github.com/smallstep/certificates/pull/2569","https://github.com/smallstep/certificates/releases/tag/v0.30.0"],"sourceUrl":"https://osv.dev/vulnerability/GO-2026-5297","license":"OSV · upstream source license applies","key":"osv:GO-2026-5297","identifiers":["GO-2026-5297","CVE-2026-40097","GHSA-9qq8-cgcv-qmc9"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-01T15:57:20.8239354+00:00","complete":true,"records":1766,"lastAttemptAt":"2026-11-01T15:57:20.8239354+00:00","lastSuccessAt":"2026-11-01T15:57:21.0432994+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:21.0433001+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-aece262bb10a694367a43c24d730aa8e8dc171723eaec4c15cdd32f04bda103f-f95a49f7991d84fda391d9ec67b41d459e583b1cfe7c441477d04d1fe019c90a","complete":true,"records":417656,"lastAttemptAt":"2026-11-01T15:57:20.2988428+00:00","lastSuccessAt":"2026-11-01T15:57:20.2714671+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:20.2988428+00:00","snapshotPublishedAt":"2026-11-01T15:25:59+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-996acc6ac5ed4512972e5675464bd820","complete":false,"records":13568,"lastAttemptAt":"2026-11-01T16:09:37.8504098+00:00","lastSuccessAt":"2026-11-01T16:09:37.846+00:00","error":null,"lastVerifiedAt":"2026-11-01T16:09:37.846+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13449,"expectedIdentifiers":13637,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-01T15:57:20.8239354+00:00","complete":true,"records":1095,"lastAttemptAt":"2026-11-01T15:57:20.8239354+00:00","lastSuccessAt":"2026-11-01T15:57:21.0444496+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:21.0444501+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-f67819536b464ba998dbfc5a485cc684","complete":true,"records":13580,"lastAttemptAt":"2026-11-01T15:57:46.3017893+00:00","lastSuccessAt":"2026-11-01T15:57:46.298+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:46.298+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13637,"expectedIdentifiers":13637,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-21dcd6662970dfea02e4ea60ee637115e8d92664947484d2b9276b3f6568a84f","complete":true,"records":9815,"lastAttemptAt":"2026-11-01T15:57:20.6646449+00:00","lastSuccessAt":"2026-10-30T23:47:34.1817587+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:20.6646449+00:00","snapshotPublishedAt":"2026-10-30T23:33:17+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-2de9ccc5290f060c7aa63f89c25dd76f655a64ba1aba7c05c97fa3bee4f09899","complete":true,"records":1967,"lastAttemptAt":"2026-11-01T15:57:20.4527932+00:00","lastSuccessAt":"2026-10-28T20:55:34.2982937+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:20.4527932+00:00","snapshotPublishedAt":"2026-10-28T20:03:08+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-f95f76cd406ae5bae3de632ad37fd2d5160b44f5e6b51748ac6f8f0c0c88e72b","complete":true,"records":3028,"lastAttemptAt":"2026-11-01T15:57:20.7894926+00:00","lastSuccessAt":"2026-10-30T23:47:38.4914494+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:20.7894926+00:00","snapshotPublishedAt":"2026-10-30T23:18:12+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-55acacd40a7aab88cf530cfddf98233a5d800cfc6bb1883653ecf5bee50f4426","complete":true,"records":230996,"lastAttemptAt":"2026-11-01T15:57:20.5571291+00:00","lastSuccessAt":"2026-11-01T09:06:49.6961926+00:00","error":null,"lastVerifiedAt":"2026-11-01T15:57:20.5571291+00:00","snapshotPublishedAt":"2026-11-01T08:33:39+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}