CVE-2026-77581
WysokieCVSS 8.6Streszczenie
BentoPDF w wersji 2.8.6 i wcześniejszych ma podatność w proxy CORS dla certyfikatów i znaczników czasu w cloudflare/cors-proxy-worker.js, które używa isPrivateOrReservedHost() do walidacji nazwy hosta oddzielnie od rozwiązywania DNS używanego przez fetch(targetUrl), co pozwala na rozwiązanie nazwy hosta do wewnętrznego lub zastrzeżonego miejsca po walidacji. Ścieżka podobna do certyfikatu może spełnić ALLOWED_PATH_PATTERNS, a bezpośredni klienci mogą sfałszować nagłówek Origin. Wdrożenia bez PROXY_SECRET pomijają opcjonalną kontrolę podpisu.
Ocena ryzyka
Ryzyko obejmuje dostęp do wewnętrznych lub zastrzeżonych zasobów, co może prowadzić do wycieku danych lub nieautoryzowanych działań.
Rekomendacja
Zaleca się aktualizację BentoPDF do wersji 2.8.7, która naprawia tę podatność, oraz skonfigurowanie PROXY_SECRET w celu wzmocnienia zabezpieczeń.
Inne podatności w BentoPDF
Zobacz wszystkie- CVE-2026-63630Niskie
BentoPDF to samodzielnie hostowany zestaw narzędzi PDF działający po stronie klienta. W wersji 2.8.6 i wcześniejszych funkcja deserializeWorkflow() przyjmuje kontrolę tsaUrl węzła Timestamp z importowanego JSON bez walidacji schematu i miejsca docelowego. Gdy użytkownik zaimportuje spreparowany workflow i uruchomi go na pliku PDF, funkcja timestampPdf() wysyła żądanie RFC 3161 TimeStampReq zawierające skrót SHA-256 dokumentu do punktu końcowego wybranego przez atakującego. Domyślna konfiguracja samodzielnego hostowania nie ustawia VITE_CORS_PROXY_URL, więc żądanie omija kontrole ALLOWED_TSA_HOSTS proxy i jest wysyłane bezpośrednio. Ujawniony skrót może potwierdzić, że dokument odpowiada znanemu plikowi, oraz skorelować ten sam dokument między użytkownikami bez ujawniania jego treści. Podatność naprawiono w wersji 2.8.7.
- CVE-2026-41653Wysokie
W BentoPDF, przed wersją 2.8.3, zidentyfikowano podatność typu cross-site scripting (XSS). Atakujący mógłby wykonać dowolny kod JavaScript w określonych okolicznościach w narzędziu Markdown do PDF.
Oryginalny opis (angielski, źródło NVD)
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.

