Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain administrator authentication
-
DeliverySubmit crafted url to proxy-image endpoint
-
ExploitServer fetches internal/metadata address
-
ExecutionStream IAM credentials or service responses back
-
ImpactPivot to cloud account or internal network
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 an authenticated administrator session because the vulnerable GET /api/booru-import/proxy-image endpoint is administrator-only (CVSS PR:H) - this is explicitly not an anonymous proxy. The concrete trigger is the attacker-controlled |
| Impact | This is a genuine but conditional server-side request forgery (CWE-918) that should be treated as a this-month patching priority rather than an emergency, matching the input's 'this_month' decision label. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N, score 6.2 Medium) is internally consistent with the description: network-reachable, low complexity, but requiring high privileges (PR:H) because the vulnerable endpoint is administrator-only. The most notable signal is the scope/subsequent-system impact - VC:L on the vulnerable app itself but SC:H on subsequent systems - which correctly reflects that the real danger is not the booru server but what the SSRF can reach (cloud instance metadata and internal services), potentially disclosing IAM credentials. No EPSS score and no KEV status are provided in the input, so there is no evidence of active exploitation or a quantified exploitation probability; this is not in CISA KEV. A detailed, author-tested proof of concept is published in the GHSA advisory, so exploitability is well established even though no independent weaponized exploit is confirmed. The practical risk ceiling is high (cloud account compromise) but gated by the PR:H prerequisite - an attacker must already hold or steal administrator authentication, so this is primarily a privilege-escalation / trust-boundary-crossing issue for compromised or malicious admins, not a mass-exploitable anonymous vector. |
| Exploit ScenarioDerived | An authenticated administrator (or an attacker who has phished, session-hijacked, or credential-stuffed an admin account) sends GET /api/booru-import/proxy-image?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/ and the server fetches the cloud metadata endpoint and streams back IAM credentials, enabling escalation to the broader cloud account. A tested public PoC in the GHSA advisory also demonstrates internal port enumeration (Redis 6379, PostgreSQL 5432) and a hanging recursive self-request against port 8000. Given AV:N/AC:L, the requests are trivial once admin access is held. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Blombooru releases before 1.40.0 expose an administrator-only image proxy at GET /api/booru-import/proxy-image that fetches any caller-supplied URL server-side with only a check that the value starts with 'http', so private, loopback and link-local destinations are reachable through the application. An authenticated administrator (CVSS PR:H) can therefore enumerate internal services, hang the worker with a recursive self-request, or reach a cloud metadata endpoint such as 169.254.169.254 to harvest IAM credentials - so the confidentiality impact lands primarily on the surrounding cloud or network boundary rather than on Blombooru itself, and only on deployments that expose such services. No CISA KEV entry is recorded, though the vendor advisory includes reproduction steps demonstrating a request reaching an internal Redis port and a recursive self-request; this is a this-month patching priority, not an emergency, because the admin-authentication prerequisite keeps the endpoint out of reach of anonymous attackers.
RemediationAI
Upgrade to Blombooru 1.40.0 or later, which is the vendor-released patch: commit fad91894b421f64cc40d2db29d72cc7a8c94048d adds the _validate_url_not_ssrf() gate that resolves the hostname, blocks private, loopback, link-local, multicast, reserved and unspecified addresses, disables redirect following and rejects 3xx responses, and requires an image/* or video/* response before streaming. Release notes are at https://github.com/mrblomblo/blombooru/releases/tag/v1.40.0 and the advisory at https://github.com/mrblomblo/blombooru/security/advisories/GHSA-5c5w-x8jp-fjqw. No vendor workaround is documented for pre-1.40.0 builds; the exposure is gated entirely by administrator authentication, so until the upgrade lands the practical control is to keep the set of administrator accounts minimal and treat those sessions as high-value credentials, since the advisory notes admin credentials are themselves obtainable through phishing, credential stuffing or session theft. Where a cloud instance role is attached, note that the pre-patch proxy can reach 169.254.169.254 and read the credential document, so any instance that ran an affected version with administrator logins should have its instance-role credentials reviewed.
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 is a server-side request forgery (CWE-918) in a FastAPI route in backend/app/routes/booru_import.py. The proxy_image() handler takes the url query parameter, performs a substring check for 'http', then either hands the value to get_client_for_url (which reuses a stored booru client session) or calls requests.get(url, stream=True, timeout=60) and streams the body back via StreamingResponse. Nothing resolves the hostname or inspects the resulting IP address, and requests.get follows redirects by default, so an open redirect on a trusted host can pivot the request to an internal address. The 1.40.0 fix adds _validate_url_not_ssrf(), which parses the scheme (http/https only), resolves the hostname with socket.getaddrinfo and rejects the request with HTTP 403 if any resolved address satisfies ipaddress.is_private, is_loopback, is_link_local, is_multicast, is_reserved or is_unspecified; it also sets allow_redirects=False and returns HTTP 422 on 301/302/303/307/308 responses, and enforces that the returned content type is image/* or video/* to narrow the exfiltration channel. The commit does not show a check that re-validates an address after connection (no pinning of the resolved IP against later DNS rebinding), and the exploitation preconditions documented by the vendor stop at administrator authentication and, for the credential-theft outcome, a cloud deployment exposing an instance metadata service.
Know when Blombooru 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:L/VI:N/VA:N/SC:H/SI:L/SA:N
Admin-only endpoint forces PR:H; network-reachable and low-complexity give AV:N/AC:L; SSRF crosses into cloud/internal systems (S:C) with potential IAM credential disclosure (C:H) and limited integrity effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Blombooru is a self-hosted personal booru for organizing and tagging private image collections. Prior to 1.40.0, the administrator-only GET /proxy-image endpoint, exposed as /api/booru-import/proxy-image, accepts a url query parameter and fetches it server-side without meaningful destination validation. proxy_image() in backend/app/routes/booru_import.py only checks whether the value starts with http, then uses get_client_for_url or requests.get and streams the response. Private, loopback and link-local addresses are not blocked, and automatically followed redirects can move a request from a trusted domain to an internal address. An authenticated administrator can enumerate internal services and access cloud instance metadata, potentially disclosing IAM credentials and crossing the application's intended cloud or network trust boundary. The reporter also observed a hanging recursive self-request. Administrator authentication remains a prerequisite; this is not an anonymous proxy. This issue is fixed in version 1.40.0.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
EUVD-2026-112506
NVD
CVE.org
GitHub
Exploit-DB