Skip to content
Heist/ feed
CriticalFix available

Improper Verification of Cryptographic Signature in dashbit nimble_zta Cloudflare strategy

Type: advisorySource: OSV1 source record

## Summary 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. ## Proof of concept 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. 2. 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. 3. Send a request to the application with the forged JWT in the `cf-access-jwt-assertion` header. 4. `NimbleZTA.Cloudflare.authenticate/3` returns the claims of the forge

Announced Source revision 1
Original source ↗

EEF-CVE-2026-91187

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:EEF-CVE-2026-91187

nimble_zta

Source reference: /affected/0/package/name

Affected versions
0.1.2

Source reference: /affected/0/versions

Fixed versions
0.1.3

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0.1.2"
          },
          {
            "fixed": "0.1.3"
          }
        ]
      }
    ],
    "package": {
      "name": "nimble_zta",
      "purl": "pkg:hex/nimble_zta",
      "ecosystem": "Hex"
    },
    "versions": [
      "0.1.2"
    ],
    "database_specific": {
      "source": "https://cna.erlef.org/osv/EEF-CVE-2026-91187.json"
    }
  },
  {
    "ranges": [
      {
        "repo": "https://github.com/dashbitco/nimble_zta",
        "type": "GIT",
        "events": [
          {
            "introduced": "bc004b70985ae5763901baab3a4e204047899768"
          },
          {
            "fixed": "6458fd18a5ba41166d4973214c519e98fe05b72d"
          }
        ]
      }
    ],
    "versions": [
      "v0.1.2"
    ],
    "database_specific": {
      "source": "https://cna.erlef.org/osv/EEF-CVE-2026-91187.json"
    }
  }
]
Related CVEs
CVE-2026-91187

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Linked CVE context

These ratings describe the referenced vulnerabilities and products. They are not a severity rating for every application using this dependency.

CVE-2026-91187 · Critical

nimble_zta, nimble_zta

Event
#13788 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement