---
id: CVE-2026-59164
title: NORA missing cross-user token-management authorization
summary: >-
  NORA is a self-hosted artifact registry and pull-through cache. Prior to
  0.9.5, `nora-registry` authenticates the token-management UI but fails to
  require administrator authorization. `auth_middleware()` protects `/ui/tokens`
  and `/api/u…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N'
cvssSource: cna
cwe:
  - CWE-862
vendor: getnora-io
product: nora
affected:
  - nora < 0.9.5
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-10-29T18:32:25.903625Z'
exploitAvailable: true
published: '2026-10-28'
updated: '2026-10-29'
sourceUpdated: '2026-10-29T18:32:53.555Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-59164'
references:
  - url: 'https://github.com/getnora-io/nora/security/advisories/GHSA-78cx-cfhm-rgmx'
    label: 'https://github.com/getnora-io/nora/security/advisories/GHSA-78cx-cfhm-rgmx'
  - url: 'https://github.com/getnora-io/nora/pull/747'
    label: 'https://github.com/getnora-io/nora/pull/747'
  - url: >-
      https://github.com/getnora-io/nora/commit/dc9e943b208095ec1e8cc2cf7b5108fdb55cab9c
    label: >-
      https://github.com/getnora-io/nora/commit/dc9e943b208095ec1e8cc2cf7b5108fdb55cab9c
  - url: 'https://github.com/getnora-io/nora/releases/tag/v0.9.5'
    label: 'https://github.com/getnora-io/nora/releases/tag/v0.9.5'
tags:
  - cve.org
  - exploit-available
epss: 0.00199
epssPercentile: 0.09882
ingestedAt: '2026-10-28T14:12:18.565Z'
---

## Overview

NORA is a self-hosted artifact registry and pull-through cache. Prior to 0.9.5, `nora-registry` authenticates the token-management UI but fails to require administrator authorization. `auth_middleware()` protects `/ui/tokens` and `/api/ui/tokens`, but state-changing requests are checked only with `role.can_write()`, not `role.can_admin()`. `tokens_page()` and `tokens_list()` call `store.list_all_tokens()`, exposing IDs and metadata across all users, while `tokens_revoke()` calls `store.revoke_token` using the supplied token ID without an ownership or admin check. A read bearer token can enumerate other users' token existence, owner, role, description, expiry and last-use metadata. A write bearer token or write-capable OIDC identity can additionally revoke arbitrary admin and service tokens, disrupting the registry and forcing credential recovery. Read-only identities cannot POST a revocation. This issue is fixed in version 0.9.5.

## Affected

- `nora < 0.9.5`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
