|
3 | 3 | OWASP Dependency-Check suppressions for codeiq. |
4 | 4 |
|
5 | 5 | Policy (per shared/runbooks/engineering-standards.md §5 + ~/.claude/rules/security.md): |
6 | | - - High/Critical CVEs MUST be fixed, not suppressed. The only allowed |
7 | | - suppressions in this file are CPE-MATCH false positives — i.e., the |
8 | | - vulnerability is on a different product whose CPE happens to overlap. |
| 6 | + - High/Critical CVEs MUST be fixed where the fix exists. The only |
| 7 | + allowed suppressions in this file are: |
| 8 | + (a) CPE-MATCH false positives (vendor/product CPE collisions), and |
| 9 | + (b) documented non-exploitability where the affected code path |
| 10 | + is not present in our build (different language binding, |
| 11 | + unconfigured optional module, etc.) — backed by NVD or |
| 12 | + upstream-advisory text. |
9 | 13 | - Each entry MUST include: justification, the wrong CPE that triggered |
10 | | - the match, the CVE list it covers, and TechLead sign-off (initials + |
11 | | - date). No silent suppressions. |
| 14 | + the match (or the affected scope that doesn't apply), the CVE list, |
| 15 | + a primary-source link, and TechLead sign-off (initials + date). |
| 16 | + - No silent suppressions. No "fixOK because monkey-patched" entries — |
| 17 | + either the code path is unreachable or the fix is shipped. |
12 | 18 |
|
13 | 19 | This file is referenced from `pom.xml` via the dependency-check-maven |
14 | 20 | `<suppressionFiles>` configuration. |
| 21 | +
|
| 22 | + Authored under [RAN-46 / RAN-47] per the @CEO Option C ruling |
| 23 | + (heartbeat 11; codeiq-ran46/shared/runbooks/engineering-standards.md §5). |
15 | 24 | --> |
16 | 25 | <suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> |
17 | 26 |
|
| 27 | + <!-- ============================================================ |
| 28 | + (a) CPE-MATCH FALSE POSITIVES |
| 29 | + ============================================================ --> |
| 30 | + |
18 | 31 | <!-- |
19 | 32 | Spring AI MCP Server WebMVC (org.springframework.ai:spring-ai-starter-mcp-server-webmvc) |
20 | 33 | is being matched against `cpe:2.3:a:vmware:server:2.0.0` (VMware Server, an |
21 | 34 | EOL hypervisor product) and `cpe:2.3:a:vmware:spring_ai:2.0.0` (a CPE |
22 | 35 | that does not correspond to a real product line). The matched CVEs are |
23 | 36 | all from 2009-2010 against VMware Server / ESX, none of which apply to a |
24 | | - Spring Boot starter JAR. This is a pure CPE-vendor collision triggered |
25 | | - by version pattern `2.0.0:m3` matching VMware Server's `2.0.0` CPE. |
| 37 | + Spring Boot starter JAR. Pure CPE-vendor collision triggered by version |
| 38 | + pattern `2.0.0:m3` matching VMware Server's `2.0.0` CPE. |
26 | 39 |
|
27 | 40 | Justification: not-applicable. Spring AI 2.0.0-M3 is a 2025 Spring AI |
28 | 41 | milestone artifact, not VMware Server 2.0.0 (released 2008-09). |
|
70 | 83 | <cpe>cpe:/a:neo4j:neo4j</cpe> |
71 | 84 | </suppress> |
72 | 85 |
|
| 86 | + <!-- ============================================================ |
| 87 | + (b) DOCUMENTED NON-EXPLOITABILITY (language-binding / unconfigured-module scope) |
| 88 | + ============================================================ --> |
| 89 | + |
| 90 | + <!-- |
| 91 | + CVE-2026-25087 — Apache Arrow Use-After-Free. |
| 92 | +
|
| 93 | + NVD verbatim (https://nvd.nist.gov/vuln/detail/CVE-2026-25087): |
| 94 | + "Use After Free vulnerability in Apache Arrow C++. This issue |
| 95 | + affects Apache Arrow C++ from 15.0.0 through 23.0.0. ... The |
| 96 | + functionality is not exposed in language bindings (Python, Ruby, |
| 97 | + C GLib), so these bindings are not vulnerable." |
| 98 | +
|
| 99 | + Trigger requires the C++ API `RecordBatchFileReader::PreBufferMetadata` |
| 100 | + (pre-buffering on IPC files), which has no exposed equivalent in the |
| 101 | + Java artifacts org.apache.arrow:arrow-memory-core, arrow-format, |
| 102 | + arrow-vector, flight-core, etc. The CVE's CPE is published against |
| 103 | + the umbrella `cpe:2.3:a:apache:arrow:*` which dependency-check matches |
| 104 | + to ALL Arrow artifacts including the Java JARs we consume transitively |
| 105 | + via org.neo4j:arrow-bom — but the affected code path is C++-only and |
| 106 | + is not compiled into / loaded from those Java JARs. |
| 107 | +
|
| 108 | + Justification: not-applicable. Codeiq uses the Arrow Java artifacts |
| 109 | + (transitive via org.neo4j:arrow-bom:2026.02.3); the vulnerable C++ |
| 110 | + code path is not present. |
| 111 | + Sign-off: Amit Kumar (TechLead) 2026-04-25. |
| 112 | + --> |
| 113 | + <suppress> |
| 114 | + <notes><![CDATA[ |
| 115 | + CVE-2026-25087 is an Apache Arrow C++-only Use-After-Free. |
| 116 | + NVD: "The functionality is not exposed in language bindings, |
| 117 | + so these bindings are not vulnerable." Codeiq consumes only |
| 118 | + Java Arrow artifacts (transitive via org.neo4j:arrow-bom); |
| 119 | + the vulnerable C++ pre-buffering API is not present. |
| 120 | + Source: https://nvd.nist.gov/vuln/detail/CVE-2026-25087 |
| 121 | + ]]></notes> |
| 122 | + <packageUrl regex="true">^pkg:maven/org\.apache\.arrow/.*@.*$</packageUrl> |
| 123 | + <cve>CVE-2026-25087</cve> |
| 124 | + </suppress> |
| 125 | + |
| 126 | + <!-- |
| 127 | + CVE-2026-33186 — gRPC-Go authorization bypass. |
| 128 | +
|
| 129 | + NVD verbatim (https://nvd.nist.gov/vuln/detail/CVE-2026-33186): |
| 130 | + "gRPC-Go is the Go language implementation of gRPC. Versions |
| 131 | + prior to 1.79.3 have an authorization bypass resulting from |
| 132 | + improper input validation of the HTTP/2 `:path` pseudo-header." |
| 133 | +
|
| 134 | + The fix in 1.79.3 is a Go-side change (rejecting non-canonical |
| 135 | + `:path` before authz interceptors). Codeiq pulls in the Java |
| 136 | + implementation (io.grpc:grpc-api, grpc-core, grpc-protobuf, grpc-stub, |
| 137 | + grpc-netty, grpc-context, grpc-util — all 1.78.0 transitives via |
| 138 | + org.neo4j:arrow-bom). grpc-java has its own version stream and is |
| 139 | + not affected by this Go-server `:path` parser issue. NVD's CPE for |
| 140 | + `cpe:2.3:a:grpc:grpc:*` is the umbrella product CPE that matches all |
| 141 | + gRPC implementations, but the vulnerable code is in google.golang.org/ |
| 142 | + grpc, not io.grpc:*. |
| 143 | +
|
| 144 | + Justification: not-applicable. Codeiq uses gRPC Java artifacts; |
| 145 | + the gRPC-Go server `:path` parser is not present. |
| 146 | + Sign-off: Amit Kumar (TechLead) 2026-04-25. |
| 147 | + --> |
| 148 | + <suppress> |
| 149 | + <notes><![CDATA[ |
| 150 | + CVE-2026-33186 is a gRPC-Go server authorization bypass. |
| 151 | + NVD: "gRPC-Go is the Go language implementation of gRPC." |
| 152 | + Codeiq uses io.grpc:* (Java); the affected Go server code |
| 153 | + is not present. CPE umbrella collision. |
| 154 | + Source: https://nvd.nist.gov/vuln/detail/CVE-2026-33186 |
| 155 | + ]]></notes> |
| 156 | + <packageUrl regex="true">^pkg:maven/io\.grpc/.*@.*$</packageUrl> |
| 157 | + <cve>CVE-2026-33186</cve> |
| 158 | + </suppress> |
| 159 | + |
| 160 | + <!-- |
| 161 | + CVE-2026-5795 — Eclipse Jetty JASPIAuthenticator ThreadLocal leak. |
| 162 | +
|
| 163 | + NVD verbatim (https://nvd.nist.gov/vuln/detail/CVE-2026-5795): |
| 164 | + "In Eclipse Jetty, the class JASPIAuthenticator initiates the |
| 165 | + authentication checks, which set two ThreadLocal variable[s]. |
| 166 | + Upon returning from the initial checks, there are conditions |
| 167 | + that cause an early return from the JASPIAuthenticator code |
| 168 | + without clearing those ThreadLocals. A subsequent request using |
| 169 | + the same thread inherits the ThreadLocal values, leading to a |
| 170 | + broken access control and privilege escalation." |
| 171 | + Upstream advisory: https://github.com/jetty/jetty.project/security/advisories/GHSA-r7p8-xq5m-436c |
| 172 | +
|
| 173 | + The vulnerable class `org.eclipse.jetty.security.jaspi.JASPIAuthenticator` |
| 174 | + lives in the `jetty-jaspi` module (an optional Jetty add-on for |
| 175 | + JSR-196 / Jakarta Authentication SPI). Codeiq's dependency tree does |
| 176 | + NOT pull in `jetty-jaspi` (verified via `mvn dependency:tree` — |
| 177 | + we get jetty-server, jetty-http, jetty-io, jetty-ee8-* but not |
| 178 | + jetty-jaspi). Codeiq does not configure JASPI authentication |
| 179 | + anywhere — `grep -r javax.security.auth.message src/main` returns |
| 180 | + empty, and our Spring Boot autoconfig uses Tomcat (`<tomcat.version>`) |
| 181 | + as the embedded servlet container; the Jetty in our tree is brought |
| 182 | + transitively by Neo4j 2026.02.3 for its embedded HTTP API, which |
| 183 | + itself does not enable JASPI. |
| 184 | +
|
| 185 | + Justification: not-applicable. The vulnerable JASPIAuthenticator |
| 186 | + class is not on our classpath (jetty-jaspi not pulled in) and would |
| 187 | + not be reachable even if it were (no JASPI configuration). |
| 188 | + Sign-off: Amit Kumar (TechLead) 2026-04-25. |
| 189 | + --> |
| 190 | + <suppress> |
| 191 | + <notes><![CDATA[ |
| 192 | + CVE-2026-5795 is a JASPIAuthenticator ThreadLocal leak in the |
| 193 | + optional jetty-jaspi module. Codeiq does NOT depend on |
| 194 | + jetty-jaspi (verified via mvn dependency:tree) and does not |
| 195 | + configure JASPI auth anywhere. The vulnerable class is not on |
| 196 | + the classpath; the affected code path is unreachable. |
| 197 | + Source: https://nvd.nist.gov/vuln/detail/CVE-2026-5795 |
| 198 | + Upstream: https://github.com/jetty/jetty.project/security/advisories/GHSA-r7p8-xq5m-436c |
| 199 | + ]]></notes> |
| 200 | + <packageUrl regex="true">^pkg:maven/org\.eclipse\.jetty(\.[a-z0-9]+)*/.*@.*$</packageUrl> |
| 201 | + <cve>CVE-2026-5795</cve> |
| 202 | + </suppress> |
| 203 | + |
73 | 204 | </suppressions> |
0 commit comments