diff --git a/docstore-metrics/build.gradle.kts b/docstore-metrics/build.gradle.kts index e7e1f67..9942cfe 100644 --- a/docstore-metrics/build.gradle.kts +++ b/docstore-metrics/build.gradle.kts @@ -11,5 +11,6 @@ dependencies { api(libs.hypertrace.documentStore) api(project(":service-framework-spi")) + api(platform("com.fasterxml.jackson:jackson-bom:2.16.0")) implementation(project(":platform-metrics")) } diff --git a/owasp-suppressions.xml b/owasp-suppressions.xml index 313ecab..e806632 100644 --- a/owasp-suppressions.xml +++ b/owasp-suppressions.xml @@ -8,14 +8,7 @@ cpe:/a:grpc:grpc cpe:/a:utils_project:utils - - - ^pkg:maven/com\.fasterxml\.jackson\.core/jackson\-databind@.*$ - CVE-2023-35116 - - + ^pkg:maven/org\.eclipse\.jetty/jetty\-servlets@9.4.53\..*$ CVE-2023-36479 + + + ^pkg:maven/io\.grpc/grpc\-.*@.*$ + CVE-2023-44487 + + + + ^pkg:maven/io\.netty/netty.*@.*$ + CVE-2023-4586 + \ No newline at end of file diff --git a/platform-grpc-service-framework/build.gradle.kts b/platform-grpc-service-framework/build.gradle.kts index 23a9891..9061f16 100644 --- a/platform-grpc-service-framework/build.gradle.kts +++ b/platform-grpc-service-framework/build.gradle.kts @@ -7,10 +7,10 @@ plugins { dependencies { api(project(":platform-service-framework")) - api(platform("io.grpc:grpc-bom:1.57.2")) + api(platform("io.grpc:grpc-bom:1.59.1")) api("io.grpc:grpc-api") api("io.grpc:grpc-services") - api("org.hypertrace.core.grpcutils:grpc-client-utils:0.12.6") + api("org.hypertrace.core.grpcutils:grpc-client-utils:0.12.7") api("com.typesafe:config:1.4.2") api(project(":service-framework-spi")) @@ -18,6 +18,8 @@ dependencies { compileOnly("org.projectlombok:lombok:1.18.24") implementation(project(":platform-metrics")) + implementation("io.grpc:grpc-inprocess") + implementation("io.grpc:grpc-netty") implementation("org.slf4j:slf4j-api:1.7.36") - implementation("org.hypertrace.core.grpcutils:grpc-server-utils:0.12.6") + implementation("org.hypertrace.core.grpcutils:grpc-server-utils:0.12.7") } diff --git a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java index f08d614..5b77dda 100644 --- a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java +++ b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java @@ -3,16 +3,20 @@ import io.grpc.ServerInterceptor; import java.util.Collection; import java.util.List; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Singular; import lombok.Value; @Value +@AllArgsConstructor(access = AccessLevel.PRIVATE) @Builder public class GrpcPlatformServerDefinition { String name; int port; int maxInboundMessageSize; + @Builder.Default int maxRstPerMinute = 500; @Singular Collection serviceFactories; @Singular List serverInterceptors; } diff --git a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java index de0670e..54a8309 100644 --- a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java +++ b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java @@ -11,6 +11,7 @@ import io.grpc.health.v1.HealthGrpc; import io.grpc.health.v1.HealthGrpc.HealthBlockingStub; import io.grpc.inprocess.InProcessServerBuilder; +import io.grpc.netty.NettyServerBuilder; import io.grpc.protobuf.services.HealthStatusManager; import io.micrometer.core.instrument.binder.grpc.MetricCollectingClientInterceptor; import io.micrometer.core.instrument.binder.grpc.MetricCollectingServerInterceptor; @@ -233,11 +234,14 @@ protected abstract GrpcServiceContainerEnvironment buildContainerEnvironment( InProcessGrpcChannelRegistry channelRegistry, HealthStatusManager healthStatusManager); private ServerBuilder initializeBuilder(GrpcPlatformServerDefinition serverDefinition) { - ServerBuilder builder = ServerBuilder.forPort(serverDefinition.getPort()); + NettyServerBuilder builder = NettyServerBuilder.forPort(serverDefinition.getPort()); if (serverDefinition.getMaxInboundMessageSize() > 0) { builder.maxInboundMessageSize(serverDefinition.getMaxInboundMessageSize()); } + if (serverDefinition.getMaxRstPerMinute() > 0) { + builder.maxRstFramesPerWindow(serverDefinition.getMaxRstPerMinute(), 60); + } // add micrometer-grpc interceptor to collect server metrics. builder.intercept( new MetricCollectingServerInterceptor(PlatformMetricsRegistry.getMeterRegistry())); @@ -248,6 +252,7 @@ private ServerBuilder initializeBuilder(GrpcPlatformServerDefinition serverDe @Value private static class ConstructedServer { + String name; Server server; } diff --git a/platform-http-service-framework/build.gradle.kts b/platform-http-service-framework/build.gradle.kts index 3736869..679bab9 100644 --- a/platform-http-service-framework/build.gradle.kts +++ b/platform-http-service-framework/build.gradle.kts @@ -5,7 +5,7 @@ plugins { dependencies { api(project(":platform-service-framework")) - api("org.hypertrace.core.grpcutils:grpc-client-utils:0.12.6") + api("org.hypertrace.core.grpcutils:grpc-client-utils:0.12.7") api("com.typesafe:config:1.4.2") api("javax.servlet:javax.servlet-api:4.0.1") api("com.google.inject:guice:5.1.0") diff --git a/platform-service-framework/build.gradle.kts b/platform-service-framework/build.gradle.kts index bc811b4..ca663f3 100644 --- a/platform-service-framework/build.gradle.kts +++ b/platform-service-framework/build.gradle.kts @@ -11,6 +11,7 @@ tasks.test { dependencies { api(project(":service-framework-spi")) + api(platform("com.fasterxml.jackson:jackson-bom:2.16.0")) implementation(project(":platform-metrics")) api("org.slf4j:slf4j-api:1.7.36") @@ -18,9 +19,6 @@ dependencies { // Use for thread dump servlet implementation("io.dropwizard.metrics:metrics-servlets:4.2.16") - constraints { - implementation("com.fasterxml.jackson.core:jackson-databind:2.15.2") - } implementation("org.eclipse.jetty:jetty-servlet:9.4.53.v20231009") // Use for metrics servlet