Hi JB, That sounds like a good plan to me. Thanks for the detailed investigation!
Cheers, Dmitri. On Fri, Nov 6, 2026 at 11:01 AM Jean-Baptiste Onofré <[email protected]> wrote: > Hi all, > > Several open PRs override transitive dependency versions to clear CVE > scanner findings: > > - #5981: Brotli4j 1.23.0 -> 1.24.0 (CVE-2026-111497) > - #5959: ZooKeeper 3.8.6 -> 3.8.7 (ZooKeeper server CVEs) > - #5940: commons-configuration2 -> 2.15.1 (CVE-2026-45205) > - #5939: Jetty 9.x -> 9.4.58 (CVE-2024-13009) > > I checked each one against the Polaris server and admin distributions, both > from the 1.8.0 release and main, looking at the jars we actually ship and > how each library is used. > The good news is that none of these CVEs is exploitable in Polaris: > > 1. Brotli4j (CVE-2026-111497): the vulnerable code is the native Brotli > decoder, which only ships in the Brotli4j native-* jars. We only ship the > pure Java brotli4j and service jars, with no native Brotli library. > Brotli4jLoader.isAvailable() returns false, so Netty never decodes "br" > request bodies, and a direct decode attempt fails with UnsatisfiedLinkError > before any native code runs. > > 2. ZooKeeper 3.8.6: every published CVE affecting 3.8.6 is in the ZooKeeper > server. Polaris only uses the ZooKeeper client (through Ranger and Hadoop), > and nothing we ship starts a ZooKeeper server. > > 3. commons-configuration2 (CVE-2026-45205): a StackOverflowError when > parsing untrusted YAML with cycles. Nothing we ship uses the library's YAML > support. > > 4. Jetty (CVE-2024-13009): the bug is in jetty-server, which we don't ship. > We only ship jetty-client and its supporting jars. > > The overrides also would not make the scanners quiet: > - hadoop-client-runtime bundles shaded copies of commons-configuration2 > 2.10.1 and Jetty 9.4.58. Gradle constraints and resolution rules can't > change those, so the findings stay. > - There are five more ZooKeeper CVEs also affect 3.8.7 (but Polaris is not > impacted either ;)). > - Scanners flag jetty-http 9.4.x for CVEs that 9.4.58 doesn't fix anyway. > > So I propose the following to you: > > - For Polaris 1.9.0, we accept these findings as false positive (they exist > on 1.8.0 already as false positive). We don't block the release on them, > and we don't add per-CVE version overrides to the build. Fixed versions > come in through regular upgrades. > > - We publish our assesments as VEX documents, similar to what Apache Solr > does (https://solr.apache.org/security-dependency-cves.html). I created > #6001 (https://github.com/apache/polaris/pull/6001) to add a "CVE Status > for Dependencies" page to the website, with one page per assessed CVE, and > generate CycloneDX 1.6 and OpenVEX files form them. Users can point > VEX-aware scanners such as Docker Scout at these files, so findings that > don't apply to Polaris are dropped instead of each one becoming a PR. > Adding a assessment is just adding a Markdown file, and we would review the > entries as part of each release. > > - As a follow-up, we generate SBOMs for the distributions and container > images. > > Thoughts? > > Regards > JB >
