Suppressions for
- CVE-2024-50379 as this affects the default tomcat servlet that we don't include
- CVE-2024-12798 and CVE-2024-12801 as the attacher needs to have write access to the logback configuration or be able to manipulate environment variables
This includes an upgrade to Sprine Boot 3.4.1
- io.spring.dependency-management:io.spring.dependency-management.gradle.plugin [1.1.6 -> 1.1.7]
- org.eclipse.jgit:org.eclipse.jgit [7.0.0.202409031743-r -> 7.1.0.202411261347-r]
- org.jlleitschuh.gradle.ktlint:org.jlleitschuh.gradle.ktlint.gradle.plugin [12.1.1 -> 12.1.2]
- com.fasterxml.jackson.module:jackson-module-kotlin [2.18.1 -> 2.18.2]
- net.javacrumbs.json-unit:json-unit-assertj [4.0.0 -> 4.1.0]
- org.assertj:assertj-core [3.26.3 -> 3.27.0]
- org.junit.jupiter:junit-jupiter [5.11.3 -> 5.11.4]
This includes an upgrade to Sprine Boot 3.4.0
Note that we have encountered issues with the hibernate part of the spring upgrade, so have pinned hibernate to 6.5.3.Final in Prison API by temporarily adding:
ext["hibernate.version"] = "6.5.3.Final"
to build.gradle.kts.
- com.microsoft.azure:applicationinsights-agent [3.6.1 -> 3.6.2]
- com.fasterxml.jackson.module:jackson-module-kotlin [2.17.2 -> 2.18.1]
- net.javacrumbs.json-unit:json-unit-assertj:[3.4.1 -> 4.0.0]
From CVE-2024-47535:
From the CVE:
An unsafe reading of environment file could potentially cause a denial of service in Netty. When loaded on an Windows application, Netty attempts to load a file that does not exist. If an attacker creates such a large file, the Netty application crashes. This vulnerability is fixed in 4.1.115.
This includes an upgrade to Sprine Boot 3.3.5
This includes an upgrade to Kotlin 2.0.21
Suppression for https://spring.io/security/cve-2024-38819 as it only affects applications that use WebMvc.fn or WebFlux.fn.
- com.microsoft.azure:applicationinsights-agent [3.5.4 -> 3.6.1]
- io.opentelemetry:opentelemetry-api [1.40.0 -> 1.43.0]
- org.junit.jupiter:junit-jupiter [5.11.0 -> 5.11.3]
- org.junit.vintage:junit-vintage-engine [5.11.0 -> 5.11.3]
- org.mockito:mockito-junit-jupiter [5.13.0 -> 5.14.2]
This includes an upgrade to Spring Boot 3.3.4
Suppression for https://spring.io/security/cve-2024-38816 as it only affects applications where both the following are true:
- the web application uses RouterFunctions to serve static resources
- resource handling is explicitly configured with a FileSystemResource location
- com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin [1.2.1 -> 1.3.0]
- org.eclipse.jgit:org.eclipse.jgit [6.10.0.202406032230-r -> 7.0.0.202409031743-r]
- Gradle: [8.10 -> 8.10.1]
- org.mockito:mockito-junit-jupiter [5.12.0 -> 5.13.0]
This includes an upgrade to Spring Boot 3.3.3
This includes an upgrade to Kotlin 2.0.20
Suppression for CVE-2024-38809 was removed as Spring Framework has now been upgraded.
When running gradle with incremental compilation the following message appears:
History based incremental compilation approach for JVM platform is deprecated and will be removed soon in favor of approach based on ABI snapshots.
Please remove 'kotlin.incremental.useClasspathSnapshot=false' from 'gradle.properties' file.
We have therefore followed the advice and removed that configuration from gradle.properties.
Suppression for https://spring.io/security/cve-2024-38809 as it only affects applications that parse ETags from "If-Match" or "If-None-Match" request headers.
This includes an upgrade to Kotlin 2.0.10
- com.microsoft.azure:applicationinsights-agent [3.5.3 -> 3.5.4]
- com.microsoft.azure:applicationinsights-core [3.5.3 -> 3.5.4]
- io.opentelemetry:opentelemetry-api [1.38.0 -> 1.40.0]
- org.junit.vintage:junit-vintage-engine [5.10.2 -> 5.11.0]
- org.junit.jupiter:junit-jupiter [5.10.3 -> 5.11.0]
If this upgrade starts breaking tests with error:
java.lang.NullPointerException: Cannot invoke "org.springframework.http.HttpStatusCode.is1xxInformational()" because "this.statusCode" is null
then the likely cause is unit test setup that something like this:
doThrow(WebClientResponseException.BadGateway::class).whenever(someService).someMethod(anyString())
The problem is that Mockito doesn't set the status code in the exception but Spring has changed to assume the status code is not null.
To workaround this issue, you can change the test to:
doThrow(WebClientResponseException.create(HttpStatus.BAD_GATEWAY, "error", HttpHeaders.EMPTY, ByteArray(0), null, null)).whenever(someService).someMethod(anyString())
This includes an upgrade to Spring Boot 3.3.2
- org.springframework.boot:spring-boot-gradle-plugin [3.3.1 -> 3.3.2]
- io.spring.dependency-management:io.spring.dependency-management.gradle.plugin:[1.1.5 -> 1.1.6]
- org.owasp:dependency-check-core:[8.4.2 -> 8.4.3]
- org.owasp:dependency-check-gradle:[8.4.2 -> 8.4.3]
- com.fasterxml.jackson.module:jackson-module-kotlin [2.16.1 -> 2.17.2 ]
- org.mockito.kotlin:mockito-kotlin [5.3.1 -> 5.4.0]
- org.junit.jupiter:junit-jupiter:[5.10.2 - > 5.10.3]
- org.assertj:assertj-core:[3.26.0 -> 3.26.3]
- net.javacrumbs.json-unit:json-unit-assertj:[3.2.7 -> 3.4.1]
Please ensure that opentelemetry versions are matched with the application insights 3.5.3 and aren't bumped to the latest versions. The following error was discovered when opentelemetry was upgrade to 1.39 and annotations to 2.5:
{"status":500,"userMessage":"Unexpected error: Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class reactor.netty.http.client.HttpClientSecure","developerMessage":"Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class reactor.netty.http.client.HttpClientSecure"}
Please note that this plugin automatically includes the correct version of opentelemetry-api so this should not be included as a dependency in your project.
The only opentelemetry implementation dependency you therefore need is:
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:2.4.0")
For testing you can also add
testImplementation("io.opentelemetry:opentelemetry-sdk-testing:1.38.0")
This includes an upgrade to Spring Boot 3.3.1
- org.springframework.boot:spring-boot-gradle-plugin [3.3.0 -> 3.3.1]
- org.eclipse.jgit:org.eclipse.jgit [:6.9.0.202403050737-r -> 6.10.0.202406032230-r]
- com.microsoft.azure:applicationinsights-core [3.5.2 -> 3.5.3]
- com.microsoft.azure:applicationinsights-agent [3.5.2 -> 3.5.3]
- opentelemetry.version [1.37 -> 1.38]
The spring boot release includes upgrades Flyway to 10.0, which includes a breaking change for nearly all database users.
Database support has been moved to separate database packages rather than being included in the flyway-core
package. The relevant package then needs to be included as well e.g.
runtimeOnly("org.flywaydb:flyway-database-postgresql")
Please see upgrading from Spring Boot 3.2 for more information.
Potential errors similar to the following may occur in the build process:
Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement ... Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement ...
These may potentially be resolved by ensuring hibernate is configured to know that H2 rather than postgres is used in the test environment
data:
jdbc:
dialect: postgresql
jpa:
database-platform: org.hibernate.dialect.H2Dialect
data:
jdbc:
dialect: h2
This is the first release of the plugin to target Java 21 instead of Java 17.
This includes an upgrade to Spring Boot 3.3.0
This includes an upgrade to Kotlin 2.0.0
This upgrade causes a warning to appear in some projects:
'kotlinOptions(KotlinJvmOptionsDeprecated /* = KotlinJvmOptions */.() -> Unit): Unit' is deprecated. Please migrate to the compilerOptions DSL. More details are here: https://kotl.in/u1r8ln
To fix the warning change the existing code in build.gradle.kts
:
kotlinOptions {
jvmTarget = JavaVersion.VERSION_21.toString()
}
to
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21
at the top of the file.
- com.google.code.gson:gson [2.10.1 -> 2.11.0]
- com.gorylenko.gradle-git-properties:com.gorylenko.gradle-git-properties.gradle.plugin [2.4.1 -> 2.4.2]
- io.spring.dependency-management:io.spring.dependency-management.gradle.plugin [1.1.4 -> 1.1.5]
- org.jlleitschuh.gradle.ktlint:org.jlleitschuh.gradle.ktlint.gradle.plugin [12.1.0 -> 12.1.1]
- com.microsoft.azure:applicationinsights-agent [3.5.1 -> 3.5.2]
- com.microsoft.azure:applicationinsights-core [3.5.1 -> 3.5.2]
- io.opentelemetry:opentelemetry-api [1.35.0 -> 1.37.0]
- org.assertj:assertj-core [3.25.3 -> 3.26.0]
- org.mockito:mockito-junit-jupiter [5.11.0 -> 5.12.0]
- org.mockito.kotlin:mockito-kotlin [5.2.1 -> 5.3.1]