SSerguey Asael Shinder
Java coding notes: the JVM, and writing software that lasts

Serguey Asael Shinder: Quarkus 3.39.5 closes four CVEs, and one of them is in Hibernate ORM

· by Serguey Asael Shinder / Serguey Shinder

Quarkus 3.39.5 was released on 24 September as a maintenance release for the 3.39 train - bugfixes and documentation, described by Guillaume Smet as a safe upgrade for anyone already on 3.39. The reason to read the announcement rather than just bump the version is the CVE list, because three of the four are in components that are used well outside Quarkus.

Announcement: https://quarkus.io/blog/quarkus-3-39-5-released/

Serguey Asael Shinder: Quarkus 3.39.5 closes four CVEs, and one of them is in Hibernate ORM
Quarkus 3.39.5 closes four CVEs, and one of them is in Hibernate ORM — Serguey Asael Shinder

Why this list is worth more than the version number

The Hibernate ORM entry is the one to act on first, and not only if you run Quarkus. JSON path expressions are the newest part of the ORM's query surface, they take a string, and a string that reaches SQL unescaped is the oldest vulnerability in the profession wearing a new container. If your code builds a JSON path fragment from anything a user influenced - a field name, a filter key, a sort parameter arriving as $.items[*].<name> - that is the call to audit, and the audit does not depend on which framework hosts the ORM.

The kid header case is worth a moment for the same reason. kid is a hint about which key to use, supplied by the party presenting the token, and a resolver that turns that hint into a fetch has built an unauthenticated request generator for anyone who can reach the endpoint. Anything that resolves a key by following data from an unverified token needs an allow-list of destinations rather than sanitisation of the input, because sanitising a URL correctly is harder than enumerating the three places your keys actually live.

And the WebSockets entry is the standard shape of a Java DoS: buffering without a bound. A message assembler that accumulates frames until the message is complete is correct until somebody never completes one.

Practical reading of a maintenance release: the version bump is the easy half. The CVE list tells you which of your own code paths to go and look at, and in this release three of the four point at code that is not Quarkus-specific at all.