Skip to content

v0.32.0

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Aug 13:49

Added

  • Add background and transparent options to Ditaa diagrams, to set the background colour of the image or make it transparent

Security

  • Prevent unauthenticated remote code execution on /tikz/svg via \special{ps:...}: dvisvgm hands PostScript specials embedded in the DVI off to Ghostscript, which dvisvgm starts with -dDELAYSAFER instead of -dSAFER, leaving the %pipe% device available and allowing arbitrary command execution regardless of KROKI_SAFE_MODE — including SECURE, since that setting only restricts kpathsea (LaTeX) file access and has no effect on Ghostscript. Fixed by passing --no-specials=ps to dvisvgm so PostScript specials are never processed
  • Prevent BPMN diagram source from executing arbitrary HTML/JavaScript in the companion's headless Chromium page: the diagram source was assigned to the rendering container via innerHTML before being handed to bpmn-js, so a crafted request to /bpmn/svg could inject an element (e.g. <img onerror=...>) that ran script in that page; combined with the browser's --disable-web-security flag (same-origin policy disabled), that script could issue cross-origin requests and read the responses. Fixed by clearing the container instead of parsing the diagram source as HTML, and by dropping --disable-web-security — the only reason it was set, local file access, is already covered by the shared --allow-file-access-from-files flag (#2089)

Changed

  • Update Node.js base Docker images to 24.18 (Alpine 3.24) for the Mermaid, BPMN, Excalidraw and diagrams.net companions

Fixed

  • Prevent the headless Chromium instance shared by the Mermaid, BPMN, Excalidraw and diagrams.net companions from crashing once it exhausts Docker's default 64MB /dev/shm, by passing --disable-dev-shm-usage so Chromium falls back to /tmp
  • Raise the core's HTTP connection pool towards each companion from Vert.x's default of 5 to 10 (configurable via KROKI_DELEGATE_MAX_POOL_SIZE), so a degraded companion (e.g. Mermaid restarting Chromium after a crash) doesn't starve unrelated requests of a pooled connection and fail them with a getting a connection timeout before the companion itself is actually overloaded

Diagram libraries

  • Update Vega to 6.3.1
  • Update bpmn-js to 18.22.0 (#2114)
  • Update Mermaid to 11.16.0 (#2119)
  • Update WaveDrom to 3.6.2 (#2122)

What's Changed

New Contributors

Full Changelog: v0.31.2...v0.32.0