Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain IdP-signed JWT issued for a different RP
-
DeliveryMatch in-flight viewer nonce/state
-
ExploitReplay token to viewer OpenID endpoint
-
ExecutionPass manual single-string aud check
-
ImpactAuthenticate as token's subject
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a deployment that has (1) opted into OpenID authentication with at least one configured provider, and (2) shares that IdP/issuer with one or more OTHER relying parties (a multi-RP setup). The attacker must possess a JWT that is signed by the configured IdP, carries the matching iss, and has a SINGLE-STRING aud claim equal to the viewer's client ID but was issued for a different RP. Exploitation is additionally limited by the viewer's per-login nonce and state binding - the replayed token must satisfy the in-flight session nonce - which the vendor states makes the attack narrow in practice. Limiting/fail-safe factors: array-valued aud claims fail closed (not exploitable), and single-RP deployments are described by the vendor as not practically exploitable. |
| Impact | This is a medium-to-high severity authentication bypass (CVSS 7.4) rather than a mass-exploitation emergency. The CVSS vector (AV:N/AC:H/PR:N/UI:N/C:H/I:H/A:N) captures the key tension: it is network-reachable and requires no prior authentication to the viewer (PR:N), but AC:H reflects substantial preconditions. The vendor advisory is explicit that exploitation is narrow - it applies only to opt-in deployments that have configured at least one OpenID provider AND share that IdP/issuer with one or more other relying parties, and the replayed token must additionally satisfy the viewer's in-flight per-login nonce and state binding. No EPSS score, KEV listing, or SSVC automatable/technical-impact breakdown was supplied, so those signals cannot be weighed; the only priority signal provided is the vuln.today 'this_week' decision label, which is consistent with a real but non-emergency, deployment-dependent flaw. Exploitation status: no public exploit identified at time of analysis (the three references are the GHSA advisory, the fix commit, and the v26.05 release - none is a PoC). Authentication requirement per CVSS PR:N is 'unauthenticated' against the viewer, but note the attacker must already possess a valid IdP-signed JWT issued for a different relying party, which is a meaningful real-world constraint not visible in the raw PR:N metric. Net: a genuine account-takeover bug worth patching promptly in multi-RP OpenID deployments, but not a drop-everything issue - single-RP deployments are described by the vendor as not practically exploitable and array-valued aud claims fail closed. |
| Exploit ScenarioDerived | In a deployment where the Goobi viewer shares an OpenID IdP/issuer with other relying parties, an attacker who holds a JWT legitimately issued for a different RP - but whose single-string aud happens to equal the viewer's client ID - replays that token to the viewer's OpenID login flow. Because the verifier does not pin the audience and the manual aud check only compares a single string, the token passes and the attacker is authenticated as the token's sub. No public exploit code exists, and the attack is further constrained by having to satisfy the viewer's in-flight session nonce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
OpenID Connect login in Goobi viewer 25.01 through 26.04 validates the JWT audience outside the cryptographic verifier, so an ID token minted for a different relying party on the same identity provider can be replayed to the viewer's authentication endpoint and log the attacker in as that token's subject. Only deployments that have opted into OpenID authentication and share an IdP/issuer with at least one other relying party are exposed; array-valued aud claims fail closed and single-RP setups are described by the vendor as not practically exploitable, and the viewer's per-login nonce/state binding narrows the window further. There is no KEV entry and no public exploit identified at time of analysis, but a fixed release (26.05) and the upstream commit are both public. EPSS was not supplied in the input.
RemediationAI
Upgrade Goobi viewer core to version 26.05, the release that contains commit 73e2ccb63c36392d46f8d21644592efd6cf87933 and moves the audience check into the JWT verifier via withAudience(clientId) while also adding exp/iat presence requirements, 60 seconds of clock leeway and a null-safe nonce comparison; see the advisory at https://github.com/intranda/goobi-viewer-core/security/advisories/GHSA-7vrv-qh6g-gfx7 and the release tag at https://github.com/intranda/goobi-viewer-core/releases/tag/v26.05. Until the upgrade can be applied, the exposure can be removed by ensuring the viewer is the only relying party using the configured IdP/issuer (the vendor states single-RP deployments are not practically exploitable), or by temporarily disabling OpenID authentication for that provider - both options remove the multi-RP token-replay path at the cost of losing or limiting federated login; the existing per-login nonce and state binding remains a partial, not complete, barrier.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw sits in AuthenticationEndpoint.verifyOpenIdToken in the viewer-core REST v1 authentication layer (Java, java-jwt style JWT.require(...) API). The verifier was constructed as JWT.require(algorithm).withIssuer(issuer).build(), pinning only the signature algorithm and the iss claim; the audience was instead compared afterwards with a single string-equality call against jwt.getClaim("aud").asString(), a check that only works for a scalar aud and is not part of the cryptographic validation path. The correct behaviour per RFC 7519 §4.1.3 is to pin the expected audience inside the verifier so that multi-valued aud claims are evaluated properly and a token addressed to another relying party is rejected regardless of how the claim is typed. Root cause class is CWE-287 (improper authentication), with the GHSA additionally classifying it as CWE-345 (insufficient verification of data authenticity). The upstream fix at commit 73e2ccb63c36392d46f8d21644592efd6cf87933 passes provider.getClientId() into verifyOpenIdToken, adds .withAudience(clientId), .withClaimPresence("exp"), .withClaimPresence("iat") and .acceptLeeway(60) to the verifier, deletes the manual aud comparison, and makes the nonce comparison null-safe so a missing session or token nonce no longer throws or short-circuits the check. Note that the advisory's own reachability analysis depends on the IdP configuration: the trigger requires an attacker-held token that is validly signed by the configured issuer and carries a single-string aud equal to the viewer's client ID; an array-valued aud is not exploitable, and the in-flight session nonce/state must also match.
Know when Goobi Viewer Core gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
AV:N remote token replay and PR:N (no prior viewer auth), but AC:H because it needs a multi-RP IdP, a cross-RP single-string-aud token, and matching the in-flight nonce; account takeover gives C:H/I:H, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
The Goobi viewer is a web application that allows digitised material to be displayed in a web browser. From version 25.01 to before version 26.05, AuthenticationEndpoint.verifyOpenIdToken builds its verifier as JWT.require(algorithm).withIssuer(issuer).build() and does not enforce the aud claim during cryptographic validation. The aud check is performed manually afterwards via a single string-equality call, which only handles single-string aud values. In a multi-RP IdP setup, a token whose single-string aud matches the viewer's client ID but was issued for a different relying party passes the check and authenticates the attacker as the token's sub. This issue has been patched in version 26.05.
Technical POC Analysis
CWE-287 (Improper Authentication), with CWE-345 as the secondary classification in the advisory.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-55459 is a high-severity authentication bypass in Goobi viewer that allows an attacker to impersonate a legitimate user by replaying a valid ID token from a different application on the same identity provider. Only organizations running Goobi viewer versions 25.01 through 26.04 with OpenID Connect enabled and sharing an IdP with other relying parties are affected, leaving their digital collections and user accounts at risk of unauthorized access. Leadership should prioritize patching the affected viewer instances to prevent potential data exposure and reputational damage.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Goobi Viewer Core
View allUnauthenticated path traversal in Goobi viewer allows a malicious HTTP server to supply an absolute path or ../ sequence
Goobi viewer 24.03 through 26.04 exposes the DownloadTaskEndpoint WebSocket at /tasks/download/monitor.socket to unauthe
Reflected cross-site scripting in the IIIF Auth 2.0 endpoints auth/login and auth/token of Goobi Viewer Core (maven io.g
Goobi Viewer deployments that leave webapi.authorization.token unset accept an empty ?token= value on every @Authorizati
Predictable replacement-password generation in Goobi Viewer Core (Maven io.goobi.viewer:viewer-core) before 26.05 lets a
Missing server-side authentication on four Jakarta WebSocket endpoints in goobi-viewer-core (DownloadTaskEndpoint, Campa
Unauthenticated remote attackers can force a password reset on any Goobi Viewer Core account prior to 26.05 because the
In Goobi Viewer Core before version 4.8.3, a path traversal vulnerability allows for remote attackers to access files on
The Goobi viewer is a web application that allows digitised material to be displayed in a web browser. Rated medium seve
The Goobi viewer is a web application that allows digitised material to be displayed in a web browser. Rated medium seve
The Goobi viewer is a web application that allows digitised material to be displayed in a web browser. Rated medium seve
Unauthenticated Solr query injection in the Goobi viewer spatial search endpoint (GET /api/v1/index/{solrField}/spatial/
EUVD-2026-109063
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB