Skip to main content

BentoPDF EUVDEUVD-2026-86242

| CVE-2026-63630 LOW
Deserialization of Untrusted Data (CWE-502)
2026-09-24 GitHub_M
3.4
CVSS 3.1 · Vendor: GitHub_M

Severity by source

Vendor (GitHub_M) PRIMARY
3.4 LOW
AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:N/A:N
vuln.today AI
3.1 LOW

Delivered via crafted import file requiring victim to run it (UI:R) and a known reference file to correlate (AC:H); only the document digest leaks (C:L), no integrity/availability impact; single confidentiality scope so S:U.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

3
Patch available
Sep 24, 2026 - 17:18 EUVD
Metadata Corrected
Sep 24, 2026 - 16:40 vuln.today
tag: Alam00000 added
Analysis Generated
Sep 24, 2026 - 16:19 vuln.today

DescriptionCVE.org

BentoPDF is a client-side PDF toolkit that is self hostable. In 2.8.6 and earlier, deserializeWorkflow() accepts the Timestamp node's tsaUrl control from imported JSON without schema or destination validation. When a user imports the crafted workflow and runs it against a PDF, timestampPdf() sends an RFC 3161 TimeStampReq containing the PDF's SHA-256 MessageImprint to the attacker-selected endpoint. The default self-hosted configuration does not set VITE_CORS_PROXY_URL, so the request bypasses the proxy's ALLOWED_TSA_HOSTS checks and is sent directly. The disclosed digest can confirm that a document matches a known file and can correlate the same document across users without revealing its contents. This vulnerability is fixed in 2.8.7.

AnalysisAI

BentoPDF 2.8.6 and earlier ships its Timestamp workflow node with an unvalidated TimeStamp Authority URL, so importing a crafted workflow JSON causes the tool to send the SHA-256 message imprint of a user's PDF to an attacker-chosen endpoint. Exploitation requires the victim to import the malicious workflow and actively run its Timestamp node against a document (CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N, score 3.4), and it is only effective in the default self-hosted deployment where VITE_CORS_PROXY_URL is unset and the request bypasses the ALLOWED_TSA_HOSTS proxy check. …

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

Access
technique details hidden
Delivery
technique details hidden
Exploit
technique details hidden
Execution
technique details hidden
Persist
technique details hidden
Impact
technique details hidden

Vulnerability AssessmentAI

Exploitation Requires (1) a victim to import an attacker-crafted BentoPDF workflow JSON and actively run its Timestamp node against a PDF (UI:R - no self-triggering); (2) the default self-hosted deployment where VITE_CORS_PROXY_URL is unset, which is what causes the request to skip the proxy's ALLOWED_TSA_HOSTS allowlist and go directly to the attacker endpoint - instances configured with the CORS proxy still enforce host validation; and (3) for the disclosed SHA-256 digest to be actionable, the attacker must already possess the candidate file to compare against or seek to correlate the same document across users. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment This is a genuinely low-priority, low-real-risk finding despite being remotely reachable. … 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 to BentoPDF 2.8.7 (https://github.com/alam00000/bentopdf/releases/tag/v2.8.7), which applies the fix from commit b21f602 - adding isValidTsaRequestUrl()/isAllowedTsaUrl() allowlist helpers, an overridable sanitizeControlValue() on BaseWorkflowNode that is enforced during deserializeWorkflow() so any imported tsaUrl outside TIMESTAMP_TSA_PRESETS is reset to the default preset, plus a redundant URL validation inside timestampPdf(). … Detailed patch versions, workarounds, and compensating controls in full report.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

EUVD-2026-86242 vulnerability details – vuln.today

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