Skip to content

Commit fd63aab

Browse files
fix(deps): upgrade Bouncy Castle past CVE-2025-14813 (critical) and CVE-2026-5598
The application-server image carried org.bouncycastle:bcprov-jdk18on 1.82, which the build-time image scan rejects for CVE-2025-14813 (critical) and CVE-2026-5598, both fixed in 1.84. Bouncy Castle is transitive and unmanaged: com.github.docker-java:docker-java-core -> bcpkix-jdk18on -> bcutil-jdk18on -> bcprov-jdk18on, and the Spring Boot BOM manages no org.bouncycastle artifact, so docker-java's floor decided the version. Manage the matched provider, util and PKIX set at 1.84 in the application POM so Renovate keeps it current. docker-java's TLS path is the only consumer, and it links against PEMParser, JcaPEMKeyConverter, JcaX509CertificateConverter and BouncyCastleProvider, all unchanged in 1.84; no Hephaestus code references Bouncy Castle at all. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 33f30c2 commit fd63aab

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hephaestus": patch
3+
---
4+
5+
The server image no longer ships a cryptography library with a known critical vulnerability, so it passes a high- and critical-severity image scan with nothing left to disposition. Deployments that talk to a TLS-protected Docker daemon keep working unchanged.

server/application/pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@
6262
<nullaway.version>0.14.0</nullaway.version>
6363
<shedlock.version>7.9.0</shedlock.version>
6464
<bucket4j.version>8.19.0</bucket4j.version>
65+
<!-- Transitive only, via docker-java-core: bcpkix -> bcutil -> bcprov. Not managed by the
66+
Spring Boot BOM, so the version it resolves to is docker-java's, and 1.82 carries
67+
CVE-2025-14813 (critical) and CVE-2026-5598, both fixed in 1.84. Managed here so the
68+
image scan stays clean and Renovate keeps it current; drop it once docker-java ships a
69+
fixed floor of its own. -->
70+
<bouncycastle.version>1.84</bouncycastle.version>
6571
<maven.build.cache.skipCache>true</maven.build.cache.skipCache>
6672
<maven.build.cache.skipSave>true</maven.build.cache.skipSave>
6773
</properties>
@@ -403,6 +409,25 @@
403409
<scope>import</scope>
404410
<type>pom</type>
405411
</dependency>
412+
<!-- All three move together: Bouncy Castle only supports a matched provider, util and
413+
PKIX set. docker-java's TLS path (CertificateUtils, LocalDirectorySSLConfig) is the
414+
only consumer, and it links against PEMParser, JcaPEMKeyConverter,
415+
JcaX509CertificateConverter and BouncyCastleProvider, all unchanged in 1.84. -->
416+
<dependency>
417+
<groupId>org.bouncycastle</groupId>
418+
<artifactId>bcprov-jdk18on</artifactId>
419+
<version>${bouncycastle.version}</version>
420+
</dependency>
421+
<dependency>
422+
<groupId>org.bouncycastle</groupId>
423+
<artifactId>bcutil-jdk18on</artifactId>
424+
<version>${bouncycastle.version}</version>
425+
</dependency>
426+
<dependency>
427+
<groupId>org.bouncycastle</groupId>
428+
<artifactId>bcpkix-jdk18on</artifactId>
429+
<version>${bouncycastle.version}</version>
430+
</dependency>
406431
</dependencies>
407432
</dependencyManagement>
408433
<build>

0 commit comments

Comments
 (0)