diff --git a/SECURITY.md b/SECURITY.md
index 4f6aca17bce..54e610a8879 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -387,7 +387,7 @@ If you are running in a runtime environment that also uses Netty (e.g., Hadoop,
Below are known to work version combinations:
grpc-netty version | netty-handler version | netty-tcnative-boringssl-static version
------------------- | --------------------- | ---------------------------------------
+------------------ |-----------------------| ---------------------------------------
1.0.0-1.0.1 | 4.1.3.Final | 1.1.33.Fork19
1.0.2-1.0.3 | 4.1.6.Final | 1.1.33.Fork23
1.1.x-1.3.x | 4.1.8.Final | 1.1.33.Fork26
@@ -412,7 +412,8 @@ grpc-netty version | netty-handler version | netty-tcnative-boringssl-static ver
1.42.x-1.43.x | 4.1.63.Final | 2.0.38.Final
1.44.x-1.47.x | 4.1.72.Final | 2.0.46.Final
1.48.x-1.49.x | 4.1.77.Final | 2.0.53.Final
-1.50.x- | 4.1.79.Final | 2.0.54.Final
+1.50.x-1.53.x | 4.1.79.Final | 2.0.54.Final
+1.54.x- | 4.1.87.Final | 2.0.56.Final
_(grpc-netty-shaded avoids issues with keeping these versions in sync.)_
diff --git a/examples/example-tls/pom.xml b/examples/example-tls/pom.xml
index fcc3988362e..cd744a636cf 100644
--- a/examples/example-tls/pom.xml
+++ b/examples/example-tls/pom.xml
@@ -14,7 +14,7 @@
UTF-8
1.54.0-SNAPSHOT
3.21.7
- 2.0.54.Final
+ 2.0.56.Final
1.7
1.7
diff --git a/examples/example-xds/build.gradle b/examples/example-xds/build.gradle
index d2c9999e919..72dc30d191f 100644
--- a/examples/example-xds/build.gradle
+++ b/examples/example-xds/build.gradle
@@ -23,7 +23,7 @@ targetCompatibility = 1.8
// Feel free to delete the comment at the next line. It is just for safely
// updating the version in our release process.
def grpcVersion = '1.54.0-SNAPSHOT' // CURRENT_GRPC_VERSION
-def nettyTcNativeVersion = '2.0.31.Final'
+def nettyTcNativeVersion = '2.0.56.Final'
def protocVersion = '3.21.7'
dependencies {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 6e377bb4c3a..ab7d5edca8d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -5,8 +5,8 @@ autovalue = "1.9"
checkstyle = "8.28"
googleauth = "1.4.0"
guava = "31.1-android"
-netty = '4.1.79.Final'
-nettytcnative = '2.0.54.Final'
+netty = '4.1.87.Final'
+nettytcnative = '2.0.56.Final'
opencensus = "0.31.0"
protobuf = "3.21.7"
diff --git a/netty/shaded/src/testShadow/java/io/grpc/netty/shaded/ShadingTest.java b/netty/shaded/src/testShadow/java/io/grpc/netty/shaded/ShadingTest.java
index e1f46720e05..b39a5448244 100644
--- a/netty/shaded/src/testShadow/java/io/grpc/netty/shaded/ShadingTest.java
+++ b/netty/shaded/src/testShadow/java/io/grpc/netty/shaded/ShadingTest.java
@@ -78,7 +78,8 @@ public void noNormalNetty() throws Exception {
public void nettyResourcesUpdated() throws IOException {
InputStream inputStream = NettyChannelBuilder.class.getClassLoader()
.getResourceAsStream(
- "META-INF/native-image/io.grpc.netty.shaded.io.netty/transport/reflection-config.json");
+ "META-INF/native-image/io.grpc.netty.shaded.io.netty/netty-transport/"
+ + "reflection-config.json");
assertThat(inputStream).isNotNull();
Scanner s = new Scanner(inputStream, StandardCharsets.UTF_8.name()).useDelimiter("\\A");
diff --git a/repositories.bzl b/repositories.bzl
index c7c9cf736c3..6c586a69d26 100644
--- a/repositories.bzl
+++ b/repositories.bzl
@@ -26,20 +26,20 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [
"com.google.truth:truth:1.0.1",
"com.squareup.okhttp:okhttp:2.7.5",
"com.squareup.okio:okio:1.17.5",
- "io.netty:netty-buffer:4.1.79.Final",
- "io.netty:netty-codec-http2:4.1.79.Final",
- "io.netty:netty-codec-http:4.1.79.Final",
- "io.netty:netty-codec-socks:4.1.79.Final",
- "io.netty:netty-codec:4.1.79.Final",
- "io.netty:netty-common:4.1.79.Final",
- "io.netty:netty-handler-proxy:4.1.79.Final",
- "io.netty:netty-handler:4.1.79.Final",
- "io.netty:netty-resolver:4.1.79.Final",
- "io.netty:netty-tcnative-boringssl-static:2.0.54.Final",
- "io.netty:netty-tcnative-classes:2.0.54.Final",
- "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.79.Final",
- "io.netty:netty-transport-native-unix-common:4.1.79.Final",
- "io.netty:netty-transport:4.1.79.Final",
+ "io.netty:netty-buffer:4.1.87.Final",
+ "io.netty:netty-codec-http2:4.1.87.Final",
+ "io.netty:netty-codec-http:4.1.87.Final",
+ "io.netty:netty-codec-socks:4.1.87.Final",
+ "io.netty:netty-codec:4.1.87.Final",
+ "io.netty:netty-common:4.1.87.Final",
+ "io.netty:netty-handler-proxy:4.1.87.Final",
+ "io.netty:netty-handler:4.1.87.Final",
+ "io.netty:netty-resolver:4.1.87.Final",
+ "io.netty:netty-tcnative-boringssl-static:2.0.56.Final",
+ "io.netty:netty-tcnative-classes:2.0.56.Final",
+ "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.87.Final",
+ "io.netty:netty-transport-native-unix-common:4.1.87.Final",
+ "io.netty:netty-transport:4.1.87.Final",
"io.opencensus:opencensus-api:0.24.0",
"io.opencensus:opencensus-contrib-grpc-metrics:0.24.0",
"io.perfmark:perfmark-api:0.25.0",