Product security
Putki Security
Our assessment of vulnerabilities affecting supported Putki releases — what is exploitable, what is not, and when a fix ships. Published so your scanner findings arrive with our answer attached.
Stop re-checking what we have already answered
We publish our assessment of every vulnerability in a form your scanner reads (OpenVEX), scoped to your edition. Findings we have already ruled out stop coming back to your team. Tell us which channel you are on and we will set up access.
Get the feedSupported releases
| Release | Apache Hop | Released | Status | Security fixes until |
|---|---|---|---|---|
| 2026.09 | 2.19.0 | 2026-09-17 | Current | 2027-09-17 |
| 2026.06 | 2.18.1 | 2026-07-06 | Maintained | 2027-07-06 |
| 2026.03.06 | 2.17.1 | 2026-03-16 | Maintained | 2027-03-16 |
| 2025.08.03 | 2.14.0 | 2025-09-03 | End of life | 2026-09-03 |
| 2025.05.03 | 2.14.0 | 2025-07-03 | End of life | 2026-07-03 |
How we triage
Scheduled, with an exception
A patch release ships on a fixed date every month, batching everything found since the last one. Anything urgent ships out of band, in days.
What counts as urgent
Reachable in a shipped artifact under a supported configuration, and either listed in CISA KEV or trivially exploitable. Everything else waits for the monthly.
A high score describes how bad exploitation would be, not whether anyone can reach the code. We publish the reachability judgment alongside every finding, because that is the part your team would otherwise have to reconstruct from our release notes.
Current advisories
Advisory index
31 advisories, highest CVE number first. Each links to where it applies.
- CVE-2026-849399.1Putki
- CVE-2026-755959.8Putki
- CVE-2026-685259.1Putki
- CVE-2026-659059.8Putki
- CVE-2026-651829.1Putki
- CVE-2026-4769110.0Putki
- CVE-2026-4567410.0Putki
- CVE-2026-425849.1Putki
- CVE-2026-425819.8Putki
- CVE-2026-425799.1Putki
- CVE-2026-412459.3Putki
- CVE-2026-331869.8Grafana
- CVE-2026-132219.1Putki
- CVE-2026-118569.8Putki · Grafana
- CVE-2026-115649.1Grafana
- CVE-2026-105369.8Putki · Grafana
- CVE-2026-10050Putki
- CVE-2026-90799.8Grafana
- CVE-2026-89279.1Grafana
- CVE-2026-89269.1Grafana
- CVE-2026-89259.8Grafana
- CVE-2026-89249.1Grafana
- CVE-2026-87639.1Putki
- CVE-2026-2332Putki
- CVE-2025-6812110.0Grafana · Warehouse DB
- CVE-2025-228719.1Grafana
- CVE-2024-247909.8Grafana
- CVE-2024-89869.1Grafana
- CVE-2023-449819.1Putki
- GHSA-r277-6w6q-xmqw9.1Grafana
- PUTKI-2026-0001Putki
Putki
The platform itself. These images are built from Apache Hop and Hop Web with our own plugins and patches applied, and they are what every Putki deployment runs.
Affected on all supported releases. A vulnerable copy of Netty is bundled inside the gRPC transport library on the Hop runtime classpath. Most vulnerability scanners will not report it, because the bundling renames the library and hides its version — we confirmed it by opening the archive. No upstream release of that library yet carries a fixed Netty, so there is nothing to upgrade to; 2026.09 already carries a fixed copy of the standalone library.
| 2026.09 | Affected | Putki |
| 2026.06 | Affected | Putki, Putki Web |
| 2026.03 | Affected | Putki, Putki Web |
| 2025.08 end of life | Affected | Putki |
| 2025.05 end of life | Affected | Putki |
Affected, by a narrow path, and not being patched on the current lines. Bouncy Castle is bundled inside JRuby inside the documentation-generation plugin. Reaching the flaw needs a generated PDF that fetches a resource over HTTPS from a certificate authority using name constraints — a combination no Putki deployment is known to produce. The fix is a JRuby upgrade, which arrives with Apache Hop rather than from us.
| 2026.09 | Affected | Putki, Putki Web |
| 2026.06 | Affected | Putki, Putki Web |
| 2026.03 | Affected | Putki, Putki Web |
| 2025.08 end of life | Affected | Putki |
| 2025.05 end of life | Affected | Putki |
Hop's own HTTP stack runs Jetty 12.1.12, which carries the fix; the only vulnerable copies in the image are bundled inside the Spark and Hadoop client libraries, which never start a server because the Spark engine is not shipped. Fixed on 2026.03 and 2026.06 by the 2026.03.06 and 2026.06.01 patch releases. Older unsupported lines carry a vulnerable Jetty on the request path and are not patched.
| 2026.09 | Not affected | Putki, Putki Web |
| 2026.06 | Fixed | Putki, Putki Web |
| 2026.03 | Fixed | Putki, Putki Web |
| 2025.08 end of life | Affected | Putki |
| 2025.05 end of life | Affected | Putki |
Hop's own HTTP stack runs Jetty 12.1.12, which carries the fix; the only vulnerable copies in the image are bundled inside the Spark and Hadoop client libraries, which never start a server because the Spark engine is not shipped. Fixed on 2026.03 by the 2026.03.06 patch release; 2026.06 already shipped a fixed Jetty. Older unsupported lines carry a vulnerable Jetty on the request path and are not patched.
| 2026.09 | Not affected | Putki, Putki Web |
| 2026.06 | not detected | |
| 2026.03 | Fixed | Putki, Putki Web |
| 2025.08 end of life | Affected | Putki |
| 2025.05 end of life | Affected | Putki |
Putki Web's pipeline execution API is reachable without authentication in the shipped default configuration. Putki Web is not supported for production use before 2026.12, and deployments should keep it behind their own access controls until then. Apache Hop 2.20 closes this by default and 2026.12 adopts it.
| 2026.09 | Affected | Putki Web |
| 2026.06 | Affected | Putki Web |
| 2026.03 | Affected | Putki Web |
| 2025.08 end of life | Affected | Putki Web |
| 2025.05 end of life | Affected | Putki Web |
Not affected. Netty is present underneath the Google Cloud client libraries, as a client transport. Putki serves HTTP on Jetty, and nothing in the product uses the Netty component this flaw is in.
| 2026.09 | not detected | |
| 2026.06 | not detected | |
| 2026.03 | Not affected | Putki, Putki Web |
| 2025.08 end of life | Not affected | Putki, Putki Web |
| 2025.05 end of life | Not affected | Putki, Putki Web |
Not affected. Netty is present underneath the Google Cloud client libraries, as a client transport. Putki serves HTTP on Jetty, and nothing in the product uses the Netty component this flaw is in.
| 2026.09 | not detected | |
| 2026.06 | not detected | |
| 2026.03 | Not affected | Putki, Putki Web |
| 2025.08 end of life | Not affected | Putki, Putki Web |
| 2025.05 end of life | Not affected | Putki, Putki Web |
Not affected. The flaw is in Tomcat's DIGEST authenticator, which is only active when a web application asks for DIGEST authentication. Putki Web does not, in either configuration it ships. Apache Hop 2.20's authentication is handled by the application rather than by Tomcat, so this does not become reachable later.
| 2026.09 | Not affected | Putki Web |
| 2026.06 | Not affected | Putki Web |
| 2026.03 | Not affected | Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. Netty is present underneath the Google Cloud client libraries, as a client transport. Putki serves HTTP on Jetty, and nothing in the product uses the Netty component this flaw is in.
| 2026.09 | not detected | |
| 2026.06 | not detected | |
| 2026.03 | Not affected | Putki, Putki Web |
| 2025.08 end of life | Not affected | Putki, Putki Web |
| 2025.05 end of life | Not affected | Putki, Putki Web |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | Putki Web |
| 2026.03 | Not affected | Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | Putki Web |
| 2026.03 | Not affected | Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. The flaw is in Junrar's extract-to-folder helper. The Tika transform reads RAR entries as streams to pull out text and metadata and never extracts to disk, so the affected code is never called.
| 2026.09 | not detected | |
| 2026.06 | Not affected | Putki, Putki Web |
| 2026.03 | Not affected | Putki, Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
The flaw needs an attacker to hand FreeMarker a malformed locale while it loads a template. FreeMarker ships only as a dependency of the vCard library used by the vCard transform, and that library uses it for one thing: rendering contacts as an HTML page, which Hop never does. Even that code loads a single fixed template and never takes a locale from input.
| 2026.09 | Not affected | Putki, Putki Web |
| 2026.06 | not detected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. The flaw requires a security rule that applies to some HTTP methods and not others. None of the rules Putki Web ships is written that way, so the condition the flaw needs does not arise — and that holds whether or not authentication is enabled.
| 2026.09 | Not affected | Putki Web |
| 2026.06 | Not affected | Putki Web |
| 2026.03 | Not affected | Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected in the shipped default, which runs Putki Web without authentication and so has no access rules for the flaw to bypass. Putki Web also ships an optional JDBC-backed login that is not in production use anywhere and is being replaced in 2026.12; with that enabled we do not claim this is safe. See the note below.
| 2026.09 | Not affected | Putki Web |
| 2026.06 | Not affected | Putki Web |
| 2026.03 | Not affected | Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. Netty is present underneath the Google Cloud client libraries, as a client transport. Putki serves HTTP on Jetty, and nothing in the product uses the Netty component this flaw is in.
| 2026.09 | not detected | |
| 2026.06 | not detected | |
| 2026.03 | Not affected | Putki, Putki Web |
| 2025.08 end of life | Not affected | Putki, Putki Web |
| 2025.05 end of life | Not affected | Putki, Putki Web |
Not affected. Netty is present underneath the Google Cloud client libraries, as a client transport. Putki serves HTTP on Jetty, and nothing in the product uses the Netty component this flaw is in.
| 2026.09 | not detected | |
| 2026.06 | not detected | |
| 2026.03 | Not affected | Putki, Putki Web |
| 2025.08 end of life | Not affected | Putki, Putki Web |
| 2025.05 end of life | Not affected | Putki, Putki Web |
Not affected. Perl is present in the base image and nothing in Putki runs it. The flaw also needs a regular expression with more than 65535 fixed-string branches, which no Putki code could produce even if it did.
| 2026.09 | not detected | |
| 2026.06 | Not affected | Putki Web |
| 2026.03 | Not affected | Putki Web |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. The plugin archives have never contained ZooKeeper. The container images briefly inherited it from an upstream base during 2026.09 development; those jars and the Beam and Spark engines that pulled them in were removed before release, and the build now fails if they reappear.
| 2026.09 | Not affected | Putki, Putki Web, plugins-zip |
| 2026.06 | Not affected | Putki, Putki Web, client-zip |
| 2026.03 | Not affected | Putki, Putki Web, client-zip |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Helper images
Optional images we publish alongside the platform for convenience. They are not required to run Putki, and most deployments do not ship them to production.
What we can and cannot promise for these images
These images are upstream software repackaged with our configuration — Grafana and Postgres plus our dashboards, provisioning and schema setup. We add no application code, so where a flaw is in the upstream image we can ship a fix only once upstream publishes one. What we control is the version we pin, the packages we add and the configuration we ship, and we assess and disclose findings in these images to the same standard as the platform.
Helper images are versioned independently of the Putki release they ship with. Where a newer upstream version fixes vulnerabilities and stays compatible with a line, we move the pin forward and republish, so an older Putki release can carry a newer Grafana.
Compose init
Nothing outstanding.
Grafana
14 advisories · 6 affected
Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same change. The same advisory also matches a start-up helper in the warehouse database image, where it is not affected: that helper never makes network connections, which is what the flaw requires.
| 2026.09 | Affected | |
| 2026.06 | Affected | |
| 2026.03 | Affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same change.
| 2026.09 | Affected | |
| 2026.06 | Affected | |
| 2026.03 | Affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same change.
| 2026.09 | Affected | |
| 2026.06 | Affected | |
| 2026.03 | Affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
This reaches the monitoring image only through an unmaintained third-party Grafana plugin that has since been removed; the plugin provided a datasource no dashboard used, and it never served HTTP.
| 2026.09 | Affected | |
| 2026.06 | Affected | |
| 2026.03 | Affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Affected in the monitoring image on releases up to 2026.09, through a third-party Grafana datasource plugin whose last update was June 2024. The plugin provided a datasource that no dashboard used and has been removed for 2026.12. It is not reachable from any dashboard Putki ships.
| 2026.09 | Affected | |
| 2026.06 | Affected | |
| 2026.03 | Affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Affected in the monitoring image on 2026.03 and 2026.06, and resolved in 2026.09 by a newer Grafana base image.
| 2026.09 | not detected | |
| 2026.06 | Affected | |
| 2026.03 | Affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | Not affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | Not affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. The flaw is in curl's optional GSASL authentication support, which the curl shipped in this image is not built against — the library it would need is not installed. Nothing in the image invokes curl in any case.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Not affected. curl is present in this image only because the base image ships it; nothing in Putki invokes it or links against libcurl, so the flaw has no way to be reached.
| 2026.09 | not detected | |
| 2026.06 | Not affected | |
| 2026.03 | not detected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
Warehouse DB
1 advisory · 0 affected
Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same change. The same advisory also matches a start-up helper in the warehouse database image, where it is not affected: that helper never makes network connections, which is what the flaw requires.
| 2026.09 | Not affected | |
| 2026.06 | Not affected | |
| 2026.03 | Not affected | |
| 2025.08 end of life | not detected | |
| 2025.05 end of life | not detected |
A deployment may also run Marquez and Neo4j alongside Putki. We ship the latest available upstream version of each, but we do not own, modify or extend them, and they are outside the scope of this page.
What upgrading resolves
2026.06 → 2026.09
- resolvedGHSA-r277-6w6q-xmqw — Affected in the monitoring image on 2026.03 and 2026.06, and resolved in 2026.09 by a newer Grafana base image.
- still openCVE-2025-68121 — Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same c
- still openCVE-2026-75595 — Affected on all supported releases. A vulnerable copy of Netty is bundled inside the gRPC transport library on the Hop runtime classpath. Most vulnerability sca
- still openCVE-2026-33186 — Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same c
- still openCVE-2024-24790 — Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same c
- still openCVE-2026-8763 — Affected, by a narrow path, and not being patched on the current lines. Bouncy Castle is bundled inside JRuby inside the documentation-generation plugin. Reachi
- still openCVE-2025-22871 — This reaches the monitoring image only through an unmaintained third-party Grafana plugin that has since been removed; the plugin provided a datasource no dashb
- still openCVE-2024-8986 — Affected in the monitoring image on releases up to 2026.09, through a third-party Grafana datasource plugin whose last update was June 2024. The plugin provided
- still openPUTKI-2026-0001 — Putki Web's pipeline execution API is reachable without authentication in the shipped default configuration. Putki Web is not supported for production use befor
2026.03 → 2026.06
- still openCVE-2025-68121 — Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same c
- still openCVE-2026-75595 — Affected on all supported releases. A vulnerable copy of Netty is bundled inside the gRPC transport library on the Hop runtime classpath. Most vulnerability sca
- still openCVE-2026-33186 — Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same c
- still openCVE-2024-24790 — Affected in the monitoring image on releases up to 2026.09, through the same unmaintained third-party Grafana plugin as CVE-2024-8986, and removed in the same c
- still openCVE-2026-8763 — Affected, by a narrow path, and not being patched on the current lines. Bouncy Castle is bundled inside JRuby inside the documentation-generation plugin. Reachi
- still openCVE-2025-22871 — This reaches the monitoring image only through an unmaintained third-party Grafana plugin that has since been removed; the plugin provided a datasource no dashb
- still openCVE-2024-8986 — Affected in the monitoring image on releases up to 2026.09, through a third-party Grafana datasource plugin whose last update was June 2024. The plugin provided
- still openGHSA-r277-6w6q-xmqw — Affected in the monitoring image on 2026.03 and 2026.06, and resolved in 2026.09 by a newer Grafana base image.
- still openPUTKI-2026-0001 — Putki Web's pipeline execution API is reachable without authentication in the shipped default configuration. Putki Web is not supported for production use befor
Machine-readable data
Every assessment above is generated from a single source and published as OpenVEX alongside the release artifacts in your distribution channel. Point your scanner at it to suppress findings we have already judged, rather than triaging them again.
curl -sS -u\ https://forge.putki.io/api/v1/repos/putki/putki-dist-professional/releases/tags/v2026.09 \ | jq -r '.assets[] | select(.name|startswith("vex-")) | .browser_download_url'
The feed is scoped to your edition, so it describes the artifacts you actually receive. Statuses and justifications use the OpenVEX vocabulary, so no translation is needed on your side.
What this page deliberately omits
No component inventory
We do not publish a full dependency listing or raw scanner output. A scanner report is neither complete nor accurate on its own — it misses vulnerable code inside shaded archives and reports fixed components as vulnerable — so publishing one would mean publishing its errors as our security claims. Entitled customers get the complete picture through the VEX feed above, scoped to what they run.
Reporting a vulnerability
Email security@putki.io. We acknowledge within one business day and aim to confirm an assessment within five. If you have a proof of concept against a supported release, say so in the subject line and we will treat it as break-glass.