CVE-2026-91187
📛 CVE Title
Improper Verification of Cryptographic Signature in dashbit nimble_zta Cloudflare strategy
Description
Improper Verification of Cryptographic Signature vulnerability in dashbit nimble_zta allows an unauthenticated remote attacker to authenticate as an arbitrary Cloudflare service token. Applications using the Cloudflare Zero Trust authentication strategy are affected. verify_token/2 in lib/nimble_zta/cloudflare.ex matches the result of JOSE.JWT.verify/2 against {_, token, _s}, which discards the boolean verification result and returns the decoded token after a failed signature check. The attacker sends a forged JWT in the cf-access-jwt-assertion header, carrying the expected iss claim and the seven service token claims. verify_iss/2 reads the iss claim from the forged token, so it rejects nothing, and the service token path then returns those claims as the authenticated identity. This issue affects nimble_zta: from 0.1.2 before 0.1.3.
Overview
- State
- PUBLISHED
- Assigner (CNA)
- EEF
- CVSS severity
- CRITICAL
- CVSS score
- 9.3 / 10
- CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N- Effective score
- 9.3 / 10 CRITICAL source: CNA overview
- CWE(s)
-
CWE-347 - Reserved
- 2026-09-15
- Published
- 2026-09-24 13:20 UTC
- Last updated
- 2026-09-24 14:47 UTC
- Source
- https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/91xxx/CVE-2026-91187.json
- Linked Threat
- CVE-2026-91187 — Improper Verification of Cryptographic Signature in dashbit nimble_zta Cloudflare strategy
NVD triage scoring NVD CVE 2.0
Layer NVD adds on top of the CNA's CVE record — published / last-modified timestamps, exploitability / impact subscores, and the FIRST.org EPSS probability that this CVE will be exploited in the wild in the next 30 days.
- NVD published
- 2026-09-24 14:18:18 UTC
- NVD last modified
- 2026-09-24 19:39:45 UTC
NVD / KEV / EPSS data refreshed 2026-09-25 04:32 UTC. Re-run the 🛰 Backfill from NVD button above to refresh.
European Union Vulnerability Database ENISA EUVD
ENISA's official EU repository for curated vulnerability intelligence. Carries a separate identifier (EUVD-YYYY-NNNN) and frequently exposes an earlier-published description + CVSS than NVD does.
- EUVD ID
-
EUVD-2026-85871 - Assigner
- EEF
- Published
- Sep 24, 2026, 1:20:52 PM
- Updated
- Sep 24, 2026, 2:47:30 PM
- EUVD base score (CVSS 4.0)
-
9.3 / 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N - EUVD-reported EPSS
- 0.0000
- Vendors
- dashbit
- Products
-
nimble_zta (bc004b70985ae5763901baab3a4e204047899768 <6458fd18a5ba41166d4973214c519e98fe05b72d)nimble_zta (0.1.2 <0.1.3)
ENISA description: Improper Verification of Cryptographic Signature vulnerability in dashbit nimble_zta allows an unauthenticated remote attacker to authenticate as an arbitrary Cloudflare service token. Applications using the Cloudflare Zero Trust authentication strategy are affected. verify_token/2 in lib/nimble_zta/cloudflare.ex matches the result of JOSE.JWT.verify/2 against {_, token, _s}, which discards the boolean verification result and returns the decoded token after a failed signature check. The attacker sends a forged JWT in the cf-access-jwt-assertion header, carrying the expected iss claim and the seven service token claims. verify_iss/2 reads the iss claim from the forged token, so it rejects nothing, and the service token path then returns those claims as the authenticated identity. This issue affects nimble_zta: from 0.1.2 before 0.1.3.
EUVD references (5)
- https://github.com/dashbitco/nimble_zta/security/advisories/GHSA-rj24-g8cc-g7g2
- https://cna.erlef.org/cves/CVE-2026-91187.html
- https://osv.dev/vulnerability/EEF-CVE-2026-91187
- https://github.com/dashbitco/nimble_zta/commit/bc004b70985ae5763901baab3a4e204047899768
- https://github.com/dashbitco/nimble_zta/commit/6458fd18a5ba41166d4973214c519e98fe05b72d
Affected products (2)
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| dashbit | nimble_zta |
0.1.2 (affected)
|
— |
| dashbit | nimble_zta |
bc004b70985ae5763901baab3a4e204047899768 (affected)
|
— |
Vendor references (5)
References embedded in the original CVE record by the assigning CNA.
- GitHub Advisory relatedvendor-advisory
- EEF CNA record for CVE-2026-91187 related
- OSV record EEF-CVE-2026-91187 related
- Introducing commit bc004b7 in dashbitco/nimble_zta related
- Fix commit 6458fd1 in dashbitco/nimble_zta patch
Web references (0)
DuckDuckGo results ranked by threat-intel / vendor advisory domains. Generated by the 🔎 Find references (web) button above — same flow as the Remediations search.
No web references attached yet.
NVD-tagged references (5)
Reference list NVD curates from the CNA record, vendor advisories, and third-party reports. The tag chips below are NVD's analyst-assigned categories.
- https://cna.erlef.org/cves/CVE-2026-91187.html 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
- https://github.com/dashbitco/nimble_zta/commit/6458fd18a5ba41166d4973214c519e98fe05b72d 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
- https://github.com/dashbitco/nimble_zta/commit/bc004b70985ae5763901baab3a4e204047899768 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
- https://github.com/dashbitco/nimble_zta/security/advisories/GHSA-rj24-g8cc-g7g2 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
- https://osv.dev/vulnerability/EEF-CVE-2026-91187 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Remediations (10)
Remediations are stored against the linked Threat row; the list below is deduplicated across both pages.
-
web:anonhaven.com
CVE Details CVE ID CVE-2026-91187 Published Date Sep 24, 2026 Vendor Cloudflare Severity CRITICAL CVSS v4.0 Score 9.3
2026-09-25 10:09 UTC -
web:cvebrief.com
Google · Chrome A use after free vulnerability in the Google Chrome Core allows a remote attacker to execute arbitrary code outside the sandbox via a crafted HTML page. Quick facts CVSS score 9.6 (Critical) Fix available Yes: 153..8010.47 ( CVE record) Affected versions Prior to 153..8010.47 First covered September 19, 2026 daily brief Last analyzed 2026 -09-17 Executive summary
2026-09-25 10:09 UTC -
web:cvefeed.io
The following list is the news that have been mention CVE-2026-91187 vulnerability anywhere in the article. Results are limited to the first 20 news articles due to potential performance issues. The following table lists the changes that have been made to the CVE-2026-91187 vulnerability over time.
2026-09-25 10:09 UTC -
web:msrc.microsoft.com
Security Update Guide - Microsoft Security Response Center
2026-09-25 10:09 UTC -
web:my.f5.com
On September 2, 2026 , F5 announced the following security issues. This document is intended to serve as an index of these vulnerabilities and security exposures to help determine the impact to your F5 devices. You can find the details of each issue in the associated articles.
2026-09-25 10:09 UTC -
web:patchmypc.com
You can find the production release history below for 2026 .
2026-09-25 10:09 UTC -
web:ubuntu.com
CVE-2026-91187 Publication date 24 September 2026 Last updated 24 September 2026
2026-09-25 10:09 UTC -
web:vulners.com
CVE-2026-91187 Improper Verification of Cryptographic Signature in dashbit nimble_zta Cloudflare strategy
2026-09-25 10:09 UTC -
web:www.oracle.com
This Critical Patch Update contains 1448 new security patches across the product families listed below. Please note that a My Oracle Support (MOS) note summarizing the content of this Critical Patch Update and other Oracle Software Security Assurance activities is located at July 2026 Critical Patch Update: Executive Summary and Analysis.
2026-09-25 10:09 UTC -
web:www.rapid7.com
On September 22, 2026 , F5 published a security advisory for CVE - 2026 -94127, a critical heap-based buffer overflow vulnerability affecting F5 BIG-IP Access Policy Manager (APM). The vulnerability has a CVSS v3.1 score of 9.8. An unauthenticated attacker with network access to an affected virtual server may be able to achieve remote code execution (RCE) by sending specifically crafted traffic.
2026-09-25 10:09 UTC
AI Forensic Analysis
Only Available for Registered Users. Sign in to view.
Raw JSON
The full cvelistV5 record. Download as CVE-2026-91187.json.
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-91187",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-24T14:43:06.738544Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-24T14:47:30.520Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://repo.hex.pm",
"cpes": [
"cpe:2.3:a:dashbit:nimble_zta:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"'Elixir.NimbleZTA.Cloudflare'"
],
"packageName": "nimble_zta",
"packageURL": "pkg:hex/nimble_zta",
"product": "nimble_zta",
"programFiles": [
"lib/nimble_zta/cloudflare.ex"
],
"programRoutines": [
{
"name": "'Elixir.NimbleZTA.Cloudflare':authenticate/3"
},
{
"name": "'Elixir.NimbleZTA.Cloudflare':verify_token/2"
}
],
"repo": "https://github.com/dashbitco/nimble_zta",
"vendor": "dashbit",
"versions": [
{
"lessThan": "0.1.3",
"status": "affected",
"version": "0.1.2",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:dashbit:nimble_zta:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"'Elixir.NimbleZTA.Cloudflare'"
],
"packageName": "dashbitco/nimble_zta",
"packageURL": "pkg:github/dashbitco/nimble_zta",
"product": "nimble_zta",
"programFiles": [
"lib/nimble_zta/cloudflare.ex"
],
"programRoutines": [
{
"name": "'Elixir.NimbleZTA.Cloudflare':authenticate/3"
},
{
"name": "'Elixir.NimbleZTA.Cloudflare':verify_token/2"
}
],
"repo": "https://github.com/dashbitco/nimble_zta",
"vendor": "dashbit",
"versions": [
{
"lessThan": "6458fd18a5ba41166d4973214c519e98fe05b72d",
"status": "affected",
"version": "bc004b70985ae5763901baab3a4e204047899768",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "<p>The application must add <code>NimbleZTA.Cloudflare</code> to its supervision tree and authenticate requests through it.</p>"
},
{
"base64": false,
"type": "text/markdown",
"value": "The application must add `NimbleZTA.Cloudflare` to its supervision tree and authenticate requests through it."
}
],
"value": "The application must add NimbleZTA.Cloudflare to its supervision tree and authenticate requests through it."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:dashbit:nimble_zta:*:*:*:*:*:*:*:*",
"versionEndExcluding": "0.1.3",
"versionStartIncluding": "0.1.2",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Kazlu"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Jos\u00e9 Valim / Dashbit"
},
{
"lang": "en",
"type": "coordinator",
"value": "Jonatan M\u00e4nnchen / EEF"
}
],
"dateAssigned": "2026-09-24T09:09:36.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "<p>Improper Verification of Cryptographic Signature vulnerability in dashbit nimble_zta allows an unauthenticated remote attacker to authenticate as an arbitrary Cloudflare service token. Applications using the Cloudflare Zero Trust authentication strategy are affected.</p>\n<p><code>verify_token/2</code> in <code>lib/nimble_zta/cloudflare.ex</code> matches the result of <code>JOSE.JWT.verify/2</code> against <code>{_, token, _s}</code>, which discards the boolean verification result and returns the decoded token after a failed signature check. The attacker sends a forged JWT in the <code>cf-access-jwt-assertion</code> header, carrying the expected <code>iss</code> claim and the seven service token claims. <code>verify_iss/2</code> reads the <code>iss</code> claim from the forged token, so it rejects nothing, and the service token path then returns those claims as the authenticated identity.</p>\n<p>This issue affects nimble_zta: from 0.1.2 before 0.1.3.</p>"
},
{
"base64": false,
"type": "text/markdown",
"value": "Improper Verification of Cryptographic Signature vulnerability in dashbit nimble_zta allows an unauthenticated remote attacker to authenticate as an arbitrary Cloudflare service token. Applications using the Cloudflare Zero Trust authentication strategy are affected.\n\n`verify_token/2` in `lib/nimble_zta/cloudflare.ex` matches the result of `JOSE.JWT.verify/2` against `{_, token, _s}`, which discards the boolean verification result and returns the decoded token after a failed signature check. The attacker sends a forged JWT in the `cf-access-jwt-assertion` header, carrying the expected `iss` claim and the seven service token claims. `verify_iss/2` reads the `iss` claim from the forged token, so it rejects nothing, and the service token path then returns those claims as the authenticated identity.\n\nThis issue affects nimble_zta: from 0.1.2 before 0.1.3."
}
],
"value": "Improper Verification of Cryptographic Signature vulnerability in dashbit nimble_zta allows an unauthenticated remote attacker to authenticate as an arbitrary Cloudflare service token. Applications using the Cloudflare Zero Trust authentication strategy are affected.\n\nverify_token/2 in lib/nimble_zta/cloudflare.ex matches the result of JOSE.JWT.verify/2 against {_, token, _s}, which discards the boolean verification result and returns the decoded token after a failed signature check. The attacker sends a forged JWT in the cf-access-jwt-assertion header, carrying the expected iss claim and the seven service token claims. verify_iss/2 reads the iss claim from the forged token, so it rejects nothing, and the service token path then returns those claims as the authenticated identity.\n\nThis issue affects nimble_zta: from 0.1.2 before 0.1.3."
}
],
"impacts": [
{
"capecId": "CAPEC-475",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "<p>The attacker authenticates as an arbitrary Cloudflare service token without holding the Cloudflare signing key. The application receives the <code>client_id</code> and the claims of the forged token as the authenticated identity, so the attacker gets the access that the application grants to that service token.</p>"
},
{
"base64": false,
"type": "text/markdown",
"value": "The attacker authenticates as an arbitrary Cloudflare service token without holding the Cloudflare signing key. The application receives the `client_id` and the claims of the forged token as the authenticated identity, so the attacker gets the access that the application grants to that service token."
}
],
"value": "The attacker authenticates as an arbitrary Cloudflare service token without holding the Cloudflare signing key. The application receives the client_id and the claims of the forged token as the authenticated identity, so the attacker gets the access that the application grants to that service token."
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 9.3,
"baseSeverity": "CRITICAL",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-347",
"description": "CWE-347 Improper Verification of Cryptographic Signature",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-24T13:20:52.974Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "GitHub Advisory",
"tags": [
"related",
"vendor-advisory"
],
"url": "https://github.com/dashbitco/nimble_zta/security/advisories/GHSA-rj24-g8cc-g7g2"
},
{
"name": "EEF CNA record for CVE-2026-91187",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-91187.html"
},
{
"name": "OSV record EEF-CVE-2026-91187",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-91187"
},
{
"name": "Introducing commit bc004b7 in dashbitco/nimble_zta",
"tags": [
"related"
],
"url": "https://github.com/dashbitco/nimble_zta/commit/bc004b70985ae5763901baab3a4e204047899768"
},
{
"name": "Fix commit 6458fd1 in dashbitco/nimble_zta",
"tags": [
"patch"
],
"url": "https://github.com/dashbitco/nimble_zta/commit/6458fd18a5ba41166d4973214c519e98fe05b72d"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "Improper Verification of Cryptographic Signature in dashbit nimble_zta Cloudflare strategy",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "<p>Disable the Cloudflare authentication strategy.</p>\n<p>To keep the user identity strategy available, reject the service token requests yourself. Examine each request before you call <code>NimbleZTA.Cloudflare.authenticate/3</code>, and reject it if its JWT carries the <code>common_name</code> claim and the <code>type</code> claim.</p>"
},
{
"base64": false,
"type": "text/markdown",
"value": "Disable the Cloudflare authentication strategy.\n\nTo keep the user identity strategy available, reject the service token requests yourself. Examine each request before you call `NimbleZTA.Cloudflare.authenticate/3`, and reject it if its JWT carries the `common_name` claim and the `type` claim."
}
],
"value": "Disable the Cloudflare authentication strategy.\n\nTo keep the user identity strategy available, reject the service token requests yourself. Examine each request before you call NimbleZTA.Cloudflare.authenticate/3, and reject it if its JWT carries the common_name claim and the type claim."
}
],
"x_proofOfConcept": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "<ol>\n<li>Build a JWT payload that carries the <code>aud</code>, <code>common_name</code>, <code>exp</code>, <code>iat</code>, <code>iss</code>, <code>sub</code> and <code>type</code> claims. Use the <code>iss</code> the application expects, set <code>exp</code> to a future timestamp, and set <code>common_name</code> to the service token to impersonate.</li>\n<li>Append any signature segment. The segment must be present, because <code>JOSE.JWT.verify/2</code> needs three segments to parse the token. The signature does not need to verify against the Cloudflare keys.</li>\n<li>Send a request to the application with the forged JWT in the <code>cf-access-jwt-assertion</code> header.</li>\n<li><code>NimbleZTA.Cloudflare.authenticate/3</code> returns the claims of the forged token as the authenticated identity, with the <code>strategy</code> field set to <code>service_token</code>.</li>\n</ol>"
},
{
"base64": false,
"type": "text/markdown",
"value": "1. Build a JWT payload that carries the `aud`, `common_name`, `exp`, `iat`, `iss`, `sub` and `type` claims. Use the `iss` the application expects, set `exp` to a future timestamp, and set `common_name` to the service token to impersonate.\n2. Append any signature segment. The segment must be present, because `JOSE.JWT.verify/2` needs three segments to parse the token. The signature does not need to verify against the Cloudflare keys.\n3. Send a request to the application with the forged JWT in the `cf-access-jwt-assertion` header.\n4. `NimbleZTA.Cloudflare.authenticate/3` returns the claims of the forged token as the authenticated identity, with the `strategy` field set to `service_token`."
}
],
"value": "* Build a JWT payload that carries the aud, common_name, exp, iat, iss, sub and type claims. Use the iss the application expects, set exp to a future timestamp, and set common_name to the service token to impersonate.\n* Append any signature segment. The segment must be present, because JOSE.JWT.verify/2 needs three segments to parse the token. The signature does not need to verify against the Cloudflare keys.\n* Send a request to the application with the forged JWT in the cf-access-jwt-assertion header.\n* NimbleZTA.Cloudflare.authenticate/3 returns the claims of the forged token as the authenticated identity, with the strategy field set to service_token."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-91187",
"datePublished": "2026-09-24T13:20:52.974Z",
"dateReserved": "2026-09-15T15:30:01.892Z",
"dateUpdated": "2026-09-24T14:47:30.520Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}