Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate as owner and obtain JWT
-
DeliveryEnable 'remember me' for 30-day token lifetime
-
ExploitAdmin deletes or demotes attacker's account
-
InstallToken revocation not triggered in CheckToken
-
C2Replay stored JWT against Shiori API
-
ExecuteServer accepts token and returns owner-level claims
-
ImpactRead, modify, or delete all bookmarks with owner privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | Exploitation requires that the attacker previously authenticated to the Shiori instance as an owner-level user and retained their JWT. The critical enabling condition is the absence of server-side session revocation: the flaw manifests specifically when an administrator deletes an account or demotes it from owner to a regular role after a token has been issued. The longer the 'remember me' option was selected at login, the wider the exploitation window - up to 30 days. Exploitation is limited by: (1) the attacker must have already been a legitimate owner-level user and must possess a previously-issued, non-expired JWT; (2) the Shiori instance must be reachable over the network; (3) exploitation window closes at natural token expiry. This is NOT exploitable by external unauthenticated attackers or by regular (non-owner) users who never held an owner token. Single-user Shiori deployments are not meaningfully affected since account revocation is not a relevant operation. |
| Impact | The NVD CVSS 3.1 score of 8.3 High (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L) accurately reflects the mechanics: exploitation is network-accessible, low complexity, and requires no user interaction, but does require a previously-issued low-privilege (owner-level) JWT - PR:L is appropriate. Real-world risk is meaningful but context-dependent: this flaw matters most in multi-user Shiori deployments with staff turnover or access control requirements, such as small teams or organizations using shared bookmark managers. For single-user personal deployments, the risk surface is negligible. There is no CISA KEV entry and no confirmed POC, so EPSS-equivalent exploitation pressure is likely low. The 30-day maximum window with 'remember me' is the critical amplifier - an attacker who plans ahead (e.g., saves a token before knowing their account will be deleted) has a wide window. The Availability impact component (A:L) is mild. No conflicting signals between CVSS vector and description - the network vector and low complexity are consistent with a web API token replay attack. |
| Exploit ScenarioDerived | A departing employee who held an owner role in a shared Shiori instance saves their JWT before their account is deleted by an administrator. After the account is removed, they replay the saved token against the Shiori API; since CheckToken validates only the HMAC and returns the embedded claims without database re-check, the server accepts the request and grants full owner-level access to all bookmarks, tags, and administrative endpoints for up to 30 days if 'remember me' was used at login. No public exploit code has been identified at time of analysis, but the attack requires only standard HTTP tooling to replay a bearer token. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Aug 05, 2026
Privilege persistence in Shiori, the self-hosted bookmarks manager (go-shiori/shiori), allows a deleted or demoted owner to continue authenticating with full owner-level privileges for up to 30 days after account revocation. The root cause is that CheckToken in internal/domains/auth.go validates only the JWT HMAC signature and trusts the embedded claims without re-querying the database, and no token revocation or session store mechanism exists anywhere in the codebase. An attacker who previously held an owner-level account - such as a terminated employee - retains full read/write access to all bookmarks and administrative functions until the token's natural expiry. No active exploitation confirmed (no CISA KEV listing); no public exploit code identified at time of analysis.
Earlier versions of this analysis (1)
Insufficient session expiration in Shiori allows a deleted or role-demoted owner to retain full owner-level API access for up to 30 days via a previously issued JWT. The CheckToken function in internal/domains/auth.go validates only the HMAC signature and returns the embedded claims object without re-querying the database, making server-side account revocation entirely ineffective. No public exploit or CISA KEV listing exists at time of analysis, but the condition is trivially reproducible by any user who retains a valid token after administrative action against their account.
RemediationAI
No vendor-released patch has been identified at time of analysis - no fixed version appears in the available references or EUVD-2026-53203 data. Administrators should monitor https://github.com/go-shiori/shiori for a remediation release that introduces server-side token revocation (e.g., a token blocklist or session store) or enforces database re-validation on each authenticated request in CheckToken. As a compensating control, disabling the 'remember me' feature reduces maximum token lifetime and narrows the exploitation window, though this does not eliminate the flaw. Restricting Shiori access to trusted internal networks or VPN-only reduces exposure in the event a former user retains a token. For deployments with sensitive bookmarks, consider rotating the JWT signing secret (HMAC key) when revoking an owner account - this invalidates all previously issued tokens system-wide but also forces all current users to re-authenticate. Note that the signing-key rotation approach is a blunt instrument with operational impact. A true fix requires implementing server-side session tracking or per-request database role verification in the application code.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Shiori is a self-hosted, Go-based bookmarks manager (CPE: cpe:2.3:a:go-shiori:shiori:*:*:*:*:*:*:*:*). It uses JSON Web Tokens (JWT) for session management. The flaw maps to CWE-613 (Insufficient Session Expiration): the CheckToken function in internal/domains/auth.go validates the HMAC signature to confirm the token is cryptographically authentic but immediately returns the embedded claims.Account object as authoritative - without querying the database to confirm the account still exists or retains its current role. Because there is no server-side session store and no token blocklist or revocation endpoint, the server has no mechanism to invalidate an issued token before its TTL expires. With 'remember me' enabled, this TTL extends to 30 days. The trust boundary violation is that the JWT claim is treated as the ground truth for identity and role, while the database - the actual source of truth for account state - is never consulted post-issuance.
Know when Shiori 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:L/PR:L/UI:N/S:U/C:H/I:H/A:L
PR:L reflects that a previously-issued owner JWT is required; AV:N and AC:L are appropriate for a straightforward token replay over HTTP with no special conditions.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
Lifecycle Timeline
3DescriptionCVE.org
Shiori's CheckToken function (internal/domains/auth.go) validates only the JWT's HMAC signature and returns the embedded claims.Account object unmodified, never re-fetching the account from the database. No session store or token-revocation mechanism exists in the codebase. Deleting an account or demoting it from owner to a regular role has no effect on tokens already issued to that account - a deleted or demoted owner's token continues authenticating with its original owner-level privileges until natural expiry, which can be up to 30 days with 'remember me' enabled.
Executive ViewAI
Shiori bookmarks manager (all versions) contains a privilege persistence flaw allowing deleted or demoted owners to retain full administrative access for up to 30 days post-revocation through JWT tokens lacking session revocation checks. While no public exploit identified at time of analysis, this creates a critical insider threat: terminated employees retain unrestricted access to all organizational bookmarks and system functions. No vendor patch exists; immediate audit and compensating controls are required.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Force token expiration by restarting Shiori services on a daily schedule (reduces compromise window from 30 days to <24 hours); (2) Restrict network-level access via firewall rules or VPN requirement, limiting exposure surface; (3) Implement comprehensive audit logging of all Shiori access with real-time alerting on owner-level actions and export to external SIEM; (4) Maintain immutable audit trails of user account changes in directory services; (5) If bookmarks are non-critical, disable Shiori entirely pending resolution.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Vertical privilege escalation in Shiori (go-shiori), the self-hosted Go bookmark manager, lets any authenticated low-pri
Server-Side Request Forgery in Shiori's bookmark download function allows any authenticated user to force the server to
A lack of rate limiting in the login page of shiori v1.7.4 and below allows attackers to bypass authentication via a bru
EUVD-2026-53203
GHSA-m8xp-ww9g-3j6j
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB