Skip to main content

Shiori CVE-2026-71280

| EUVDEUVD-2026-53365 HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-08-05 TuranSec GHSA-5mx2-758c-cg2x
8.5
CVSS 3.1 · Vendor: TuranSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with low-privilege Shiori account
  2. Delivery
    Submit bookmark with loopback or metadata URL via API endpoint
  3. Exploit
    Server invokes DownloadBookmark() without IP validation
  4. Execution
    http.Client connects to internal target
  5. Persist
    Internal service returns sensitive data
  6. Impact
    Attacker reads exfiltrated credentials or internal data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a valid authenticated user account on the Shiori instance (CVSS PR:L - low-privilege authentication). The attacker must have access to at least one of the three affected HTTP endpoints: POST /api/bookmark, PUT /api/v1/bookmarks/cache, or POST /api/bookmarks/ext. The targeted internal resource must be reachable from the Shiori server process (loopback services are always reachable; metadata endpoints require a cloud environment; private-range services require network adjacency). The 0.0.0.0 loopback bypass technique is Linux-specific - on non-Linux platforms, 0.0.0.0 may not route to loopback and this specific bypass may not apply, though direct 127.0.0.1 targeting remains universal. No special Shiori configuration is required beyond the presence of a user account. Exploitation is most impactful on cloud-hosted instances (IMDSv1 accessible) or hosts with co-located sensitive services (Redis, Elasticsearch, internal HTTP APIs). The authentication requirement (PR:L) limits exposure compared to unauthenticated SSRF, but offers minimal protection in deployments with open registration or shared credentials.

Impact

The CVSS 3.1 score of 8.5 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N) is well-calibrated: the Scope:Changed designation correctly captures that Shiori becomes a pivot point into adjacent internal systems outside its own security boundary, with high confidentiality impact reflecting potential exfiltration of cloud IAM credentials or internal service data. Authentication (PR:L) is the primary real-world limiting factor - any registered user can exploit this, which is meaningful for personal deployments but weak protection on multi-tenant or publicly accessible instances. Shiori is not listed in CISA KEV, and no EPSS score was provided; active exploitation is not confirmed. No POC code has been identified in the provided data. Despite the absence of a KEV listing, the SSRF pattern targeting cloud metadata (e.g., AWS IMDSv1 at 169.254.169.254) and the 0.0.0.0 Linux bypass are both well-understood and require no special tooling to weaponize, making practical risk higher than KEV/EPSS absence might suggest for cloud-hosted instances. The wildcard CPE (all versions) signals that no patched release has been confirmed.

Exploit ScenarioDerived

An authenticated Shiori user submits a new bookmark via POST /api/bookmark with the URL set to http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name, targeting the AWS instance metadata service. The server's DownloadBookmark() fetches the URL through the unprotected http.Client, the cloud metadata service returns IAM temporary credentials in the response body, and Shiori stores or returns this content to the attacker. Alternatively, supplying http://0.0.0.0:6379/ on a Linux host with a co-located Redis instance sends raw HTTP bytes to Redis's TCP port, potentially reading keyspace data or executing commands via HTTP-pipelining techniques.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 05, 2026

Server-Side Request Forgery in Shiori's bookmark download function allows any authenticated user to force the server to issue HTTP requests to loopback addresses (127.0.0.1) and 0.0.0.0 - which Linux routes to the loopback interface - reaching cloud metadata endpoints, co-located databases, and internal-only APIs. The root cause is DownloadBookmark() in internal/core/download.go using a plain http.Client with no custom DialContext and no post-resolution IP validation (no IsLoopback(), IsPrivate(), IsUnspecified(), or IsLinkLocalUnicast() checks). No public exploit has been identified at time of analysis, but the attack path is trivially constructable given the well-documented SSRF pattern against Go's standard HTTP client.

RemediationAI

No vendor-released patch has been identified at time of analysis. The correct fix is implementing a custom DialContext in the http.Client used by DownloadBookmark() that resolves the destination address and then validates it with Go's net.IP methods - blocking IsLoopback(), IsPrivate(), IsUnspecified(), and IsLinkLocalUnicast() before the connection proceeds; the connection should be refused if any check triggers. As a compensating control while awaiting a patch, administrators should apply host-level firewall rules (iptables/nftables) blocking outbound connections from the Shiori process to 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, and 169.254.0.0/16 - note that iptables OUTPUT rules affect all processes unless constrained by uid/gid matching, so scoping the rule to Shiori's runtime user reduces side effects. In cloud environments, additionally enforce IMDSv2 (token-required mode) on EC2 instances to prevent credential theft via 169.254.169.254 even if SSRF is triggered. Restricting bookmark creation permissions to a minimal set of trusted accounts provides defense-in-depth. Monitor the upstream repository at https://github.com/go-shiori/shiori for patch releases.

Affected VersionsENISA

shiori 0 ≤*

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 an open-source self-hosted bookmark manager written in Go (CPE: cpe:2.3:a:go-shiori:shiori:*:*:*:*:*:*:*:*). The flaw is in DownloadBookmark() (internal/core/download.go), which accepts a caller-supplied URL and fetches it using Go's stdlib http.Client with no transport-layer restrictions. CWE-918 (Server-Side Request Forgery) is the root cause class: the server acts as an unguarded HTTP proxy for user-controlled destinations. Go's http.Client resolves DNS and connects to the resulting IP without any post-resolution filtering, meaning addresses in RFC-1918 private ranges, loopback (127.0.0.0/8), link-local (169.254.0.0/16), and the special 0.0.0.0 address (which the Linux kernel routes to the loopback interface) are all reachable. Three distinct API endpoints are affected: POST /api/bookmark, PUT /api/v1/bookmarks/cache, and POST /api/bookmarks/ext, giving the attacker multiple trigger surfaces.

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

Vendor (TuranSec) PRIMARY 8.5 HIGH
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
vuln.today AI 8.5 HIGH

Network-reachable API requires a user account (PR:L); scope changes because the server pivots to internal systems; C:H reflects cloud credential exfiltration potential via metadata endpoints.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N

Primary rating from Vendor (TuranSec).

CVSS VectorVendor: TuranSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
Low
Availability
None

DescriptionCVE.org

go-shiori's DownloadBookmark() (internal/core/download.go) fetches a caller-supplied bookmark URL using a plain http.Client with no custom DialContext or destination-IP validation (no IsLoopback(), IsPrivate(), IsUnspecified(), or IsLinkLocalUnicast() checks). An authenticated user creating or updating a bookmark via POST /api/bookmark, PUT /api/v1/bookmarks/cache, or POST /api/bookmarks/ext can supply a loopback (127.0.0.1) or 0.0.0.0 (which Linux redirects to loopback) URL, causing the server to make outbound requests to internal-only services, cloud metadata endpoints, or other network-restricted resources.

Executive ViewAI

Why It Matters

Shiori's bookmark management feature contains a server-side request forgery vulnerability that enables authenticated users to extract cloud credentials and access internal-only databases and APIs. This threatens any organization using Shiori by allowing malicious or compromised user accounts to breach network boundaries and access sensitive cloud infrastructure, creating an escalation vector for attackers already inside your perimeter.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: disable or restrict bookmark download functionality to trusted administrators; implement strict egress filtering and IP address whitelisting on Shiori servers to prevent access to 127.0.0.1, 0.0.0.0, cloud metadata endpoints, and sensitive internal networks; establish continuous monitoring of outbound HTTP requests for attempts to reach loopback addresses or metadata services; consider network segmentation to isolate Shiori from critical internal systems.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
niche self-hosted bookmark manager, minimal enterprise footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy