Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-92760

CVE-2026-92760: Shlink Auth Bypass Vulnerability

CVE-2026-92760 is an authentication bypass flaw in Shlink that allows restricted API keys to access unauthorized visit data and Mercure topics. This post explains its impact, affected versions, and mitigation steps.

Updated:

CVE-2026-92760 Overview

CVE-2026-92760 is an authorization bypass vulnerability in Shlink versions through 5.1.6, an open-source URL shortener. The flaw resides in how Shlink issues Mercure subscription tokens through the mercure-info endpoint. The application fails to enforce API key role restrictions when generating these JSON Web Tokens (JWTs), granting restricted keys subscription rights to all Mercure topics. Attackers holding author-only or domain-only API keys can subscribe to real-time visit streams outside their authorization boundary. The exposed data includes referrer URLs, user-agent strings, geolocation details, and complete short URL objects. This weakness is classified under CWE-863: Incorrect Authorization.

Critical Impact

Restricted API key holders can subscribe to Mercure topics for short URLs they should not access, exposing visitor telemetry and short URL metadata across tenants and domains.

Affected Products

  • Shlink versions through 5.1.6
  • Shlink MercureInfoAction REST endpoint
  • Shlink Mercure subscription integration via LcobucciJwtProvider

Discovery Timeline

  • 2026-09-16 - CVE-2026-92760 published to the National Vulnerability Database (NVD)
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-92760

Vulnerability Analysis

Shlink integrates with Mercure, a protocol for real-time updates over HTTP, to push visit events to subscribers. Clients obtain a Mercure subscription JWT by calling the mercure-info REST endpoint. The endpoint authenticates the caller with a Shlink API key, then requests a JWT from the LcobucciJwtProvider service.

The provider signs a token whose subscription claim grants access to all topics, regardless of the API key role. Shlink supports role-scoped keys such as AUTHORED_SHORT_URLS (author-only) and DOMAIN_SPECIFIC (domain-only), which normally restrict REST responses to a subset of short URLs. These role restrictions are applied at the REST layer but not propagated into the Mercure token issuance path.

As a result, any authenticated API key can subscribe to visit streams for every short URL in the instance. The impact is scoped to confidentiality of visit telemetry and short URL objects; the vulnerability does not enable modification or deletion.

Root Cause

The root cause is missing authorization enforcement in the Mercure token issuance flow. The LcobucciJwtProvider builds the subscription claim without consulting the caller's API key role or the topic scope that role permits. See the JWT provider source and the Mercure info action for the relevant code paths.

Attack Vector

An attacker authenticates to Shlink with a restricted API key and issues an HTTP GET request to the mercure-info endpoint. Shlink returns a Mercure JWT and the hub URL. The attacker connects to the Mercure hub as a subscriber using that JWT and receives events for topics outside their authorization boundary. Exploitation requires only network access to the Shlink REST API and a valid low-privilege key.

No verified public exploit code is available. Refer to GitHub Issue #2633 and the VulnCheck advisory for reproduction details.

Detection Methods for CVE-2026-92760

Indicators of Compromise

  • Requests to the /rest/v*/mercure-info endpoint from API keys that hold AUTHORED_SHORT_URLS or DOMAIN_SPECIFIC roles.
  • Mercure hub subscription connections presenting Shlink-issued JWTs whose subscribe claim is * while originating from restricted keys.
  • Unusual volumes of Mercure event delivery to clients that historically only used scoped REST endpoints.

Detection Strategies

  • Correlate Shlink REST access logs with Mercure hub subscription logs to identify keys receiving events for short URLs they cannot query over REST.
  • Decode issued Mercure JWTs and alert when the mercure.subscribe claim contains * for non-admin keys.
  • Track baseline call patterns for mercure-info and flag first-time callers using restricted API keys.

Monitoring Recommendations

  • Enable verbose Shlink REST logging and forward events, along with Mercure hub logs, to a centralized analytics platform for cross-source correlation.
  • Monitor egress connections from Shlink to the Mercure hub and alert on subscription topics that span multiple tenants or domains.
  • Audit API key inventory and revoke unused or overly privileged keys, then review recent mercure-info usage per key.

How to Mitigate CVE-2026-92760

Immediate Actions Required

  • Upgrade Shlink to a patched release once available and track the fix status in GitHub Issue #2633.
  • Rotate all Shlink API keys, especially restricted keys that may have been used to obtain Mercure tokens.
  • Restrict network access to the Shlink REST API and Mercure hub to trusted clients while a fix is being deployed.
  • Review historical Mercure hub logs to assess whether restricted keys received visit data outside their scope.

Patch Information

At publication, no fixed release is referenced in the NVD entry. Monitor the Shlink repository and the VulnCheck advisory for the version that enforces API key role scoping in the Mercure token provider.

Workarounds

  • Disable the Mercure integration in Shlink configuration if real-time visit events are not required.
  • Issue only admin-equivalent API keys to trusted operators and avoid distributing AUTHORED_SHORT_URLS or DOMAIN_SPECIFIC keys until a patch is applied.
  • Place the Mercure hub behind a reverse proxy that authenticates and authorizes subscription requests independently of the Shlink-issued JWT.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.