---
id: "CVE-2026-46652"
kind: "vulnerability"
aliases: ["CVE-2026-46652"]
title: "Goobi viewer: remote server headers can write files and run code"
severity: "critical"
cvss: 9.8
epss: 0.01095
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["goobi-viewer", "java", "package", "self-hosted", "tomcat"]
not_affected_if: ["no-external-file-downloads", "versions-before-24.03-or-26.05-plus"]
published_at: "2026-10-23T15:17:31+00:00"
first_seen_at: "2026-10-23T21:57:34+00:00"
updated_at: "2026-10-25T12:38:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-46652", "first_seen_at": "2026-10-23T21:57:34+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-46652", "first_seen_at": "2026-10-25T12:38:50+00:00"}]
---

# Goobi viewer: remote server headers can write files and run code

Goobi viewer trusts the filename in a remote server's Content-Disposition header when downloading external files, so a malicious server can use ../ or absolute paths to write files anywhere Tomcat can write. Writing into the deployed web application directory gives remote code execution as the tomcat user.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

Check the deployed Goobi viewer version; affected if it is 24.03 up to but not including 26.05.

## Fix

Upgrade Goobi viewer to 26.05 or later.
If upgrading is not possible, block the viewer's outbound requests to untrusted hosts until patched.

## Timeline

- 2026-10-23T21:57:34+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-46652
- 2026-10-25T12:38:50+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-46652

## From the sources

The Goobi viewer is a web application that allows digitised material to be displayed in a web browser. From version 24.03 to before version 26.05, ExternalFilesDownloader.getFilename() extracts the destination filename from a server-supplied Content-Disposition response header and passes it directly to Path.resolve() without stripping directory components. This allows for a malicious HTTP server that the viewer fetches from to supply an absolute path or ../ traversal sequences as the filename, writing attacker-controlled content to an arbitrary path writable by the Tomcat process. When targeting the deployed web-application directory, this yields remote code execution as the tomcat OS user. This issue has been patched in version 26.05.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
