Summary
CVE-2026-77581 is a Server-Side Request Forgery (SSRF, CWE-918) vulnerability in BentoPDF, a self-hostable, client-side PDF toolkit. The flaw resides in the certificate/timestamp CORS proxy (cloudflare/cors-proxy-worker.js), which lets an unauthenticated remote attacker force the Worker to issue server-side HTTP requests to arbitrary destinations, including internal or reserved IP ranges, and relay the response back. It affects versions 2.8.6 and earlier and carries a HIGH severity CVSS v3.1 score of 8.6.
Technical details
- Root cause: The proxy validates the user-supplied
?url=parameter withisValidCertificateUrl(), which callsisPrivateOrReservedHost()to reject hostnames matching literal private/reserved IP string patterns (e.g.,10.,172.16-31.,192.168.,169.254.,127.,localhost,::1). This check operates purely on the string as written and never resolves the hostname to an IP address. - Trigger condition: The Worker’s own
fetch(targetUrl, ...)call performs DNS resolution independently and afterward, with no re-check of the resolved address. An attacker who registers a domain and points its DNS record at an internal or reserved IP can pass the string-based validation while the fetch resolves to the attacker-chosen internal destination. - Contributing weaknesses: A certificate-like URL path can satisfy
ALLOWED_PATH_PATTERNS; direct (non-browser) clients can simply set the browser-orientedOriginheader themselves, defeating the Origin allowlist; deployments that do not configurePROXY_SECRETskip the optional HMAC signature check entirely, and even where configured, the signature is described as an anti-abuse measure rather than a destination-security boundary. - Attack vector: Network, unauthenticated, no user interaction required (AV:N/AC:L/PR:N/UI:N).
- Impact: Response bodies up to 10 MB from the reachable target are relayed back to the attacker, enabling disclosure of internal service data (High confidentiality impact) and potential interaction with internal/reserved network destinations (Low integrity/availability impact). Both official Worker deployments and self-hosted instances are affected where the Worker’s execution environment can reach internal or reserved destinations.
Affected software
- BentoPDF (alam00000/bentopdf) version 2.8.6 and all earlier versions containing
cloudflare/cors-proxy-worker.js
Severity
- CVSS v3.1 Base Score: 8.6 (High)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
Mitigation and recommended actions
- Immediate: Upgrade BentoPDF to version 2.8.7 or later, which fixes this issue.
- If patching is not immediately possible:
- Restrict or disable the CORS proxy Worker’s egress so it cannot reach internal or reserved IP ranges from its execution environment.
- Configure
PROXY_SECRETand enforce the HMAC signature check on all deployments, understanding this is an anti-abuse control and not a full destination-security boundary. - Do not rely on the Origin header allowlist as an authentication control, since non-browser clients can set this header directly.
- Monitor outbound requests from the proxy Worker for connections to internal address ranges.

