This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
+14 more
Affected surfaces
ReleasePort's take
Moderate signalv8.33.0 adds two security mitigations: it blocks IPv6 prefixes that tunnel internal IPv4 addresses in IsPublicIP, and it strips backslash separators from filenames to prevent path traversal.
Why it matters: The release patches high‑severity (90) IPv6 prefix tunneling and medium‑severity (70) filename path‑traversal risks; operators should apply the update immediately if handling public IPs or user‑supplied file names.
Summary
AI summaryUpdates Bug Fixes, Security Fixes ⚠️, and Chore across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
Blocks IPv6 prefixes tunneling internal IPv4 in IsPublicIP. Blocks IPv6 prefixes tunneling internal IPv4 in IsPublicIP. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Security | High |
Strips backslash separators from supplied filenames to prevent path traversal. Strips backslash separators from supplied filenames to prevent path traversal. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Adds deviceScaleFactor field for controlling screenshot pixel density. Adds deviceScaleFactor field for controlling screenshot pixel density. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Medium |
Stops pinning proxy on Chromium start failure to prevent port leaks. Stops pinning proxy on Chromium start failure to prevent port leaks. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Medium |
Requires consecutive probe failures before marking supervised process unhealthy. Requires consecutive probe failures before marking supervised process unhealthy. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Low |
Registers lifecycle listener before navigation to avoid missed events. Registers lifecycle listener before navigation to avoid missed events. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Low |
Serializes result merging in downloadFrom to prevent concurrent map writes. Serializes result merging in downloadFrom to prevent concurrent map writes. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Low |
Logs client cancellation errors at debug level instead of error. Logs client cancellation errors at debug level instead of error. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
Full changelog
Security Fixes ⚠️
- Block IPv6 prefixes that tunnel to internal IPv4 in
IsPublicIP.::ffff:10.0.0.1,2002:c0a8::(6to4), and2001::/32(Teredo) embed an internal IPv4 destination inside an IPv6 address.IsPublicIPevaluated only the
outer IPv6 form, so--*-deny-private-ipsfilters let the embedded private IPv4 reach the dialer. The check now unwraps IPv4-mapped, IPv4-translated, 6to4, and Teredo addresses, and rejects them when the embedded IPv4 is
non-public. - Strip backslash separators from supplied filenames. Linux treated a caller-supplied
Gotenberg-Output-Filenameheader orfilenameform field containing..\orfoo\baras a single segment. The handler now strips both
forward-slash and backslash path separators before composing the output path.
New Features
- Device scale ratio for screenshots (#1543). A new
deviceScaleFactorform field on/forms/chromium/screenshot/{html,url,markdown}controls the screenshot pixel density.
Defaults to1. Thanks @hovcharenko.
Bug Fixes
- Pinning proxy outlived a failed Chromium start. When
chromedpfailed to start (port conflict, container OOM, sandbox denial), the loopback HTTP/CONNECT pinning proxy added in 8.32.0 stayed bound to its port and leaked
across restart attempts. The browser now stops the pinning proxy on every start failure. - Lifecycle listener race on
Navigate.chromedp.Navigatecould firePage.lifecycleEventbefore Gotenberg's listener subscribed, so the converter occasionally waited the full network-idle timeout on otherwise fast pages.
Listeners now register before navigation. - Supervisor flapped on transient CDP latency. A single slow CDP health probe marked the supervised process unhealthy and triggered a restart, even when the next probe succeeded. Probes now require N consecutive failures
before reporting unhealthy. downloadFromconcurrent map writes. ParalleldownloadFromentries merged results into a shared map without a lock. Under enough concurrency this raced and panicked the request goroutine. Result merging is now serialized.- Pinning-proxy noise on client cancellations.
context canceledandconnection reset by peerfrom the client side of the pinning proxy logged at error level, flooding logs whenever a caller aborted mid-render.
Client-cancelled dial errors now log at debug.
Chore
- Updated Chromium to version
148.0.7778.178-1. - Updated Go dependencies.
Security Fixes
- CVE‑TBD – Block IPv6 prefixes that tunnel to internal IPv4 in `IsPublicIP`
- Strip backslash separators from supplied filenames to prevent path traversal
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Gotenberg
Developer-friendly API to interact with powerful tools like Chromium and LibreOffice for converting numerous document formats (HTML, Markdown, Word, Excel, etc.) into PDF files, and more.
Related context
Beta — feedback welcome: [email protected]