Skip to content
Heist/ feed
Back to feed
Critical

Gotenberg vulnerable to argument injection via newlines in ExifTool metadata values

Type: advisorySources: OSV

Gotenberg is a Docker-powered stateless API for PDF files. In versions 8.30.1 and earlier, the metadata write endpoint validates metadata keys for control characters but leaves metadata values unsanitized. A newline character in a metadata value splits the ExifTool stdin line into two separate arguments, allowing injection of arbitrary ExifTool pseudo-tags such as -FileName, -Directory, -SymLink, and -HardLink. This is a bypass of the incomplete key-sanitization fix introduced in v8.30.1. An unauthenticated attacker can rename or move any PDF being processed to an arbitrary path in the container filesystem, overwrite arbitrary files, or create symlinks and hard links at arbitrary paths.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-40281
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 04:50 UTC · Revision 1

Source evidence

Gotenberg vulnerable to argument injection via newlines in ExifTool metadata values

core-osv · Original source

Published 6 May 2026, 20:46 UTC

Gotenberg is a Docker-powered stateless API for PDF files. In versions 8.30.1 and earlier, the metadata write endpoint validates metadata keys for control characters but leaves metadata values unsanitized. A newline character in a metadata value splits the ExifTool stdin line into two separate arguments, allowing injection of arbitrary ExifTool pseudo-tags such as -FileName, -Directory, -SymLink, and -HardLink. This is a bypass of the incomplete key-sanitization fix introduced in v8.30.1. An unauthenticated attacker can rename or move any PDF being processed to an arbitrary path in the container filesystem, overwrite arbitrary files, or create symlinks and hard links at arbitrary paths.

osv:CVE-2026-40281
Complete source record
{
  "id": "8a25a24b51afc8acd36b5a6e432417dd6daf58cd35ef73d21caf0a2dbbb9f115",
  "url": "https://osv.dev/vulnerability/CVE-2026-40281",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Gotenberg vulnerable to argument injection via newlines in ExifTool metadata values",
    "summary": "Gotenberg is a Docker-powered stateless API for PDF files. In versions 8.30.1 and earlier, the metadata write endpoint validates metadata keys for control characters but leaves metadata values unsanitized. A newline character in a metadata value splits the ExifTool stdin line into two separate arguments, allowing injection of arbitrary ExifTool pseudo-tags such as -FileName, -Directory, -SymLink, and -HardLink. This is a bypass of the incomplete key-sanitization fix introduced in v8.30.1. An unauthenticated attacker can rename or move any PDF being processed to an arbitrary path in the container filesystem, overwrite arbitrary files, or create symlinks and hard links at arbitrary paths.",
    "evidence": "osv:CVE-2026-40281",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-40281",
      "aliases": [
        "CVE-2026-40281",
        "GHSA-q7r4-hc83-hf2q",
        "GO-2026-5572"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/gotenberg/gotenberg",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "db51f9026d13357aecc23e3c99ba6937ac09fbfc"
                },
                {
                  "fixed": "405f1069c026bb08f319fb5a44e5c67c33208318"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:thecodingmachine:gotenberg:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "8.31.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "405f1069c026bb08f319fb5a44e5c67c33208318"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v8.30.1",
            "v8.30.0",
            "v8.29.1",
            "v8.29.0",
            "v8.28.0",
            "v8.27.0",
            "v8.26.0",
            "v8.25.1",
            "v8.25.0",
            "v8.24.0",
            "v8.23.2",
            "v8.23.1",
            "v8.23.0",
            "v8.22.0",
            "v8.21.1",
            "v8.21.0",
            "v8.20.1",
            "v8.20.0",
            "v8.19.1",
            "v8.19.0",
            "v8.18.0",
            "v8.17.3",
            "v8.17.2",
            "v8.17.1",
            "v8.17.0",
            "v8.16.0",
            "v8.15.3",
            "v8.15.2",
            "v8.15.1",
            "v8.15.0",
            "v8.14.1",
            "v8.14.0",
            "v8.13.0",
            "v8.12.0",
            "v8.11.1",
            "v8.11.0",
            "v8.10.0",
            "v8.9.2",
            "v8.9.1",
            "v8.9.0",
            "v8.8.1",
            "v8.8.0",
            "v8.7.0",
            "v8.6.0",
            "v8.5.1",
            "v8.5.0",
            "v8.4.0",
            "v8.3.0",
            "v8.2.2",
            "v8.2.1",
            "v8.2.0",
            "v8.1.0",
            "v8.0.3",
            "v8.0.2",
            "v8.0.1",
            "v8.0.0",
            "v7.10.1",
            "v7.10.0",
            "v7.9.2",
            "v7.9.1",
            "v7.9.0",
            "v7.8.3",
            "v7.8.2",
            "v7.8.1",
            "v7.8.0",
            "v7.7.2",
            "v7.7.1",
            "v7.7.0",
            "v7.6.2",
            "v7.6.1",
            "v7.6.0",
            "v7.5.4",
            "v7.5.3",
            "v7.5.2",
            "v7.5.1",
            "v7.5.0",
            "v7.4.3",
            "v7.4.2",
            "v7.4.1",
            "v7.4.0",
            "v7.3.1",
            "v7.3.0",
            "v7.2.0",
            "v7.1.1",
            "v7.1.0",
            "v7.0.7",
            "v7.0.6",
            "v7.0.5",
            "v7.0.4",
            "v7.0.3",
            "v7.0.2",
            "v7.0.1",
            "v7.0.0",
            "6.4.4",
            "6.4.3",
            "6.4.2",
            "6.4.1",
            "6.4.0",
            "6.3.1",
            "6.3.0",
            "6.2.1",
            "6.2.0",
            "6.1.2",
            "6.1.1",
            "6.1.0",
            "6.0.4",
            "6.0.3",
            "6.0.2",
            "6.0.1",
            "6.0.0",
            "5.1.0",
            "5.0.2",
            "5.0.1",
            "5.0.0",
            "4.4.0",
            "4.3.0",
            "4.2.0",
            "4.1.0",
            "4.0.0",
            "3.2.0",
            "3.1.2",
            "3.1.1",
            "3.1.0",
            "3.0.2",
            "3.0.1",
            "3.0.0",
            "2.0.0",
            "1.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40281.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:50.013281688Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40281.json",
        "https://github.com/gotenberg/gotenberg/security/advisories/GHSA-q7r4-hc83-hf2q",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-40281",
        "https://github.com/gotenberg/gotenberg/commit/405f1069c026bb08f319fb5a44e5c67c33208318"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-88"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40281.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-40281",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 518272,
  "published_at": "2026-05-06T20:46:47.96+00:00"
}