Repository navigation
release: Suppress CVEs that are not applicable to Druid 38 - #20335
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Critical applicability and suppression-scoping issues remain unresolved.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds Druid 38-specific OWASP Dependency-Check suppressions for CVEs considered inapplicable or false positives.
Changes:
- Adds suppressions for Netty, Azure, UUID, zstd, Hadoop, HTTP, and other dependencies.
- Documents rationale for dependency- and path-specific exceptions.
File summaries
| File | Summary |
|---|---|
owasp-dependency-check-suppressions.xml |
Adds CVE suppression rules; several rules and rationales require correction or narrower scoping. |
Review details
Suppressed comments (5)
owasp-dependency-check-suppressions.xml:310
- The accepted trusted-peer risk is real, but this explanation says the CVE prerequisites are absent. Druid's Netty 3
HttpClientCodeccan complete on an interim 103 and return the pooled channel before the final response, so this should be documented as an accepted Druid-to-Druid exposure (and tracked) rather than as an unaffected implementation.
<cve>CVE-2026-42584</cve> <!-- Druid uses Netty3 for internal communication only, which does not satisfy any of the prerequisites of this vulnerability (pipeline requests, send HEAD, use 1xx responses) -->
owasp-dependency-check-suppressions.xml:941
- The Dependency-Check paths are reported as
hadoop-client-runtime-3.5.0.jar/META-INF/maven/org.eclipse.jetty/.../pom.xml, without a directory prefix. This leading.*/therefore prevents the rule from matching, so the two Jetty CVEs remain reported. Make the prefix optional.
<filePath regex="true">.*/(hadoop-client-runtime)-[0-9][^/]*\.jar/META-INF/maven/org\.eclipse\.jetty[^/]*/[^/]*/pom\.xml$</filePath>
owasp-dependency-check-suppressions.xml:953
- The Dependency-Check path is reported as
hadoop-client-runtime-3.5.0.jar/META-INF/maven/org.jline/jline/pom.xml, without a directory prefix. This leading.*/prevents the rule from matching, so CVE-2026-56740 and CVE-2026-56741 remain reported. Make the prefix optional.
<filePath regex="true">.*/(hadoop-client-runtime)-[0-9][^/]*\.jar/META-INF/maven/org\.jline/jline[^/]*/pom\.xml$</filePath>
owasp-dependency-check-suppressions.xml:871
- The notes identify only the direct
uuid@7.0.3package, but this regex suppresses the advisory for every UUID version in the lockfile, including nesteduuid@8.3.2copies. That can hide the finding for a different dependency whose vulnerable API is exercised. Match the audited package version explicitly.
<packageUrl regex="true">^pkg:npm/uuid@.*$</packageUrl>
owasp-dependency-check-suppressions.xml:905
- This justification is contradicted by the Iceberg extension:
HiveIcebergCatalogconstructsorg.apache.iceberg.hive.HiveCatalogand initializes it withcatalogUri, and the extension includeshive-metastoreat runtime. Druid does not embed a Hive server, but it can connect to a remote Hive Metastore; please make that server-versus-client boundary explicit rather than claiming Druid does not connect to one.
All three affect Apache Hive server components (Metastore, HiveServer2).
Druid uses hive-storage-api only for the Murmur3 hash utility
(BloomKFilter.java) and ORC/Parquet column type definitions — it does not
run or connect to a Hive Metastore or HiveServer2. -->
- Files reviewed: 1/1 changed files
- Comments generated: 7
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| <cve>CVE-2026-42584</cve> <!-- Druid uses Netty3 for internal communication only, which does not satisfy any of the prerequisites of this vulnerability (pipeline requests, send HEAD, use 1xx responses) --> | ||
| <cve>CVE-2026-46340</cve> <!-- We don't use SCTP transport; Druid uses TCP/NIO --> | ||
| <cve>CVE-2026-42583</cve> <!-- We don't use Netty's Lz4FrameDecoder; Druid uses lz4-java directly --> | ||
| <cve>CVE-2026-48043</cve> <!-- We don't use netty-codec-http2 directly; Druid's HTTP/2 is served by Jetty --> |
| file name: netty-codec-protobuf-4.2.15.Final.jar netty-transport-4.2.15.Final.jar (and other netty-*.jar at 4.2.x) | ||
| ]]></notes> | ||
| <packageUrl regex="true">^pkg:maven/io\.netty/netty-.*@4\.2\..*$</packageUrl> | ||
| <cve>CVE-2026-56819</cve> <!-- HTTP/2 decompressor ByteBuf leak: Druid does not run a Netty 4.x HTTP/2 server --> |
| file name: async-http-client-3.0.2.jar | ||
| ]]></notes> | ||
| <packageUrl regex="true">^pkg:maven/org\.asynchttpclient/async-http-client@3.0.2$</packageUrl> | ||
| <cve>CVE-2026-45300</cve> <!-- Cookie leak on cross-origin redirect: Druid does not configure automatic redirect following or a cookie store in AHC; redirects are handled manually at application level in ServiceClientImpl without forwarding cookies --> |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved suppression correctness and security reachability issues must be addressed.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (8)
owasp-dependency-check-suppressions.xml:953
- This has the same root-path mismatch as the Jetty rule:
.*/requires a directory beforehadoop-client-runtime, while the scanner reportshadoop-client-runtime-3.5.0.jar/META-INF/maven/org.jline/jline/pom.xmlfrom the archive root. As written, the JLine CVEs are not suppressed and the check can still fail. Make the prefix optional.
<filePath regex="true">.*/(hadoop-client-runtime)-[0-9][^/]*\.jar/META-INF/maven/org\.jline/jline[^/]*/pom\.xml$</filePath>
owasp-dependency-check-suppressions.xml:331
- The gRPC query extension is itself a Netty-based HTTP/2 server:
QueryServercallsGrpc.newServerBuilderForPort, and its POM includesgrpc-nettyandnetty-codec-http2. Therefore the HTTP/2 decompressor path covered by this CVE is reachable on Druid's gRPC endpoint; saying that Druid does not run a Netty 4.x HTTP/2 server is incorrect, and this blanket suppression can hide a real DoS. Scope the suppression away from the gRPC transport or verify and remediate that path instead.
<cve>CVE-2026-56819</cve> <!-- HTTP/2 decompressor ByteBuf leak: Druid does not run a Netty 4.x HTTP/2 server -->
owasp-dependency-check-suppressions.xml:328
- The 38 branch resolves
netty4.versionto4.2.17.Final(pom.xml:114), not4.2.15.Final. Since this note is the audit record for a security suppression, the recorded artifact version should match the version actually checked.
file name: netty-codec-protobuf-4.2.15.Final.jar netty-transport-4.2.15.Final.jar (and other netty-*.jar at 4.2.x)
owasp-dependency-check-suppressions.xml:880
- The 38 branch's dependency management resolves
kotlin-stdlibto2.2.21(pom.xml:445-447), while this suppression note records2.4.10. Please correct the audit note and recheck the rationale against the version actually scanned.
file name: kotlin-stdlib-2.4.10.jar
owasp-dependency-check-suppressions.xml:907
- This branch resolves
hive-storage-apito2.8.1(pom.xml:637-640), not4.2.0. Because the suppression rationale is version-specific, recording the newer branch's jar makes the security review/audit trail inaccurate; update the note and verify the rationale for 2.8.1.
file name: hive-storage-api-4.2.0.jar
owasp-dependency-check-suppressions.xml:923
- The 38 branch uses Parquet
1.16.0(pom.xml:87), but this note namesparquet-jackson-1.18.0. The file-path suppression is broad enough to cover the actual jar, so this stale version can make the CVE analysis appear to have covered a different artifact; update the note after confirming the embedded Jackson version in 1.16.0.
file name: hadoop-client-runtime-3.5.0.jar (shaded jackson-databind 2.18.6)
parquet-jackson-1.18.0.jar (shaded jackson-databind 2.22.1)
owasp-dependency-check-suppressions.xml:982
- The Docker Java BOM in this branch is
3.7.0(pom.xml:1308-1312), while this note recordsdocker-java-transport-zerodep-3.7.1.jar. Since the suppression rationale depends on the shaded HttpComponents versions, update the note and verify it against the resolved 3.7.0 jar.
file name: docker-java-transport-zerodep-3.7.1.jar (shaded httpclient5 5.5.1 and httpcore5 5.3.6)
owasp-dependency-check-suppressions.xml:905
- The statement that Druid does not run or connect to a Hive Metastore is false: the Iceberg extension exposes
HiveIcebergCatalog, constructsorg.apache.iceberg.hive.HiveCatalog, and initializes it with the configured metastore URI. This suppression may still be valid specifically forhive-storage-api, but it needs an artifact-level justification that the affected classes are absent rather than the unsupported claim that the supported Hive catalog path is unreachable.
All three affect Apache Hive server components (Metastore, HiveServer2).
Druid uses hive-storage-api only for the Murmur3 hash utility
(BloomKFilter.java) and ORC/Parquet column type definitions — it does not
run or connect to a Hive Metastore or HiveServer2. -->
- Files reviewed: 1/1 changed files
- Comments generated: 3
- Review effort level: Lite
| Druid does not call org.xerial.snappy directly; snappy-java is a transitive dependency | ||
| (pulled in by Kafka, Parquet, etc.). Druid's own snappy decompression uses Apache Commons | ||
| Compress (FramedSnappyCompressorInputStream), not the xerial Snappy.uncompress path. | ||
| The vulnerable ByteBuffer overload is therefore not reachable from Druid code. --> |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…Druid) CVE-2026-73334 affects org.apache.parquet.crypto.keytools — a KMS URL validation bypass that can redirect token requests to a malicious host. Druid does not use Parquet's envelope encryption or KmsClient integration, so the vulnerable code path is unreachable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Addressing the final set of CVEs now (obtained by using |
|
Upgrading the final set of libs here: |
There was a problem hiding this comment.
🟡 Changes recommended
The security scan can become non-gating, and multiple suppression rules require narrower scope or corrected rationale.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (1)
owasp-dependency-check-suppressions.xml:331
- This suppresses
CVE-2026-56819for every Netty 4.2 artifact, butgrpc-querydeclaresnetty-codec-http2/grpc-nettyand starts a gRPC server withGrpc.newServerBuilderForPort(extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/QueryServer.java:76). That is a Netty HTTP/2 server path, contrary to the rationale here, so the exception can hide a reachable finding when this supported extension is enabled. Remove this CVE from the blanket suppression or scope it only to components not used bygrpc-query.
<cve>CVE-2026-56819</cve> <!-- HTTP/2 decompressor ByteBuf leak: Druid does not run a Netty 4.x HTTP/2 server -->
- Files reviewed: 2/2 changed files
- Comments generated: 3
- Review effort level: Lite
| Druid uses hive-storage-api only for the Murmur3 hash utility | ||
| (BloomKFilter.java) and ORC/Parquet column type definitions — it does not | ||
| run or connect to a Hive Metastore or HiveServer2. --> |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
… client CVE-2026-79993: deleteContainer ACL bypass (ZK server-side, fixed in 3.8.7) CVE-2026-59739: SetWatches reconnect replay leaks path names (ZK server-side, fixed in 3.8.7) CVE-2026-59969: quorum TLS hostname bypass in FIPS mode (server-to-server only, fixed in 3.8.7) Druid uses ZooKeeper as a client only and does not run a ZK server or quorum, so none of these code paths are reachable from Druid. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Created a separate PR for 38 branch since the master PR #20236 seems to have become a rabbit hole.
This PR has: