s2
--:--:--UTC

Searching APEX

Starting…

  1. ○ Searching Threats, IOCs & Threat Intelligence locally
  2. ○ Querying external providers
  3. ○ Asking AI Forensic Validator
  4. ○ Creating new entry from validated hit

0s elapsed

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
CVSS 9.3 / 10 9.3 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)

Affected products (2)

VendorProductVersionsPlatforms
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.

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.

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"
}