Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
Network-reachable and unauthenticated (forgeable Origin, optional PROXY_SECRET), but AC:H reflects the DNS-rebinding timing race and non-default off-Cloudflare runtime; primary impact is reading internal responses (C:H) with limited I/A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
5DescriptionCVE.org
BentoPDF is a client-side PDF toolkit that is self hostable. In 2.8.6 and earlier, the certificate and timestamp CORS proxy in cloudflare/cors-proxy-worker.js uses isPrivateOrReservedHost() to validate a supplied hostname separately from the DNS resolution used by fetch(targetUrl), allowing an attacker-controlled hostname to resolve to an internal or reserved destination after validation. A certificate-like path can satisfy ALLOWED_PATH_PATTERNS, and direct clients can forge the browser-oriented Origin header. Deployments without PROXY_SECRET skip the optional signature check, while the signature is an anti-abuse measure rather than a destination-security boundary. The proxy has a 10 MB response limit and can relay response bodies from reachable destinations. The advisory identifies both the official Worker deployment and self-hosted instances as impacted where the Worker execution environment can reach internal or reserved destinations. This vulnerability is fixed in 2.8.7.
AnalysisAI
Server-side request forgery in the BentoPDF certificate/timestamp CORS proxy (cloudflare/cors-proxy-worker.js) allows unauthenticated remote attackers to relay requests to internal, reserved, or cloud-metadata destinations when the Worker is hosted on a non-Cloudflare runtime. The flaw is a time-of-check/time-of-use gap: isPrivateOrReservedHost() validates the supplied hostname separately from the DNS resolution performed by fetch(targetUrl), so an attacker who controls a domain's DNS with a very low TTL can pass validation with a public address and have the fetch land on a private one; a certificate-like path satisfies ALLOWED_PATH_PATTERNS, and the browser-oriented Origin header can simply be forged by a direct client, with PROXY_SECRET being only an anti-abuse measure that ships in the public client bundle. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
No credit card · 7-day full trial
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Exploitation requires the BentoPDF certificate/timestamp CORS proxy (cloudflare/cors-proxy-worker.js) to be deployed on a runtime OTHER than Cloudflare Workers (e.g., workerd, Node, or another runtime inside a cloud VPC) whose execution environment can actually route to internal/reserved/metadata addresses - on the default Cloudflare edge deployment the flaw is not exploitable because there is no route to private destinations. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | This is a real but heavily deployment-gated SSRF (CWE-918). … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | Vendor-released patch: upgrade BentoPDF to 2.8.7, which is the release referenced by the advisory (https://github.com/alam00000/bentopdf/releases/tag/v2.8.7) and contains the fix commits 45496fcd2ed6e02dcdde0d3839cc5024c091760c and 58cd1a8893bfe06e4a59a72adc2e7db00a8b9266; full details are in GHSA-5xjf-rr5x-pcfj. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, inventory every BentoPDF deployment that hosts cloudflare/cors-proxy-worker.js and confirm whether it runs on a non-Cloudflare runtime and at versions 2.8.6 or earlier; where it does, disable or network-isolate the certificate/timestamp CORS proxy endpoint, and in parallel block Worker egress to link-local and private ranges (169.254.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) and enforce IMDSv2 with a hop limit of 1 on all cloud instances in scope. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Cross-site scripting in BentoPDF's Markdown to PDF Tool allows remote attackers to execute arbitrary JavaScript when use
BentoPDF 2.8.6 and earlier ships its Timestamp workflow node with an unvalidated TimeStamp Authority URL, so importing a
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-86229