Bump up the versions of dependencies and fix Bazel load statements.

Rules like sh_binary, sh_test, etc. are no longer native build rules, but have
to be explicitly loaded in BUILD and bzl files.

This is not yet well documented in the docs, but it manifests as build errors,
currently when built with `--incompatible_autoload_externally=` (as is the case
for the presubmit builds in the Bazel Central Repository):

```
(18:40:42) ERROR: /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/d28ce01f3592792e668bafb0f1b9f459/external/fuzztest+/centipede/BUILD:98:1: name 'cc_proto_library' is not defined (did you mean 'proto_library'?)
(18:40:42) ERROR: /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/d28ce01f3592792e668bafb0f1b9f459/external/fuzztest+/centipede/BUILD:1245:1: name 'sh_library' is not defined (did you mean 'cc_library'?)
(18:40:42) ERROR: /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/d28ce01f3592792e668bafb0f1b9f459/external/fuzztest+/centipede/BUILD:1250:1: name 'sh_library' is not defined (did you mean 'cc_library'?)
(18:40:42) ERROR: /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/d28ce01f3592792e668bafb0f1b9f459/external/fuzztest+/centipede/BUILD:1932:1: name 'sh_test' is not defined (did you mean 'cc_test'?)
```

PiperOrigin-RevId: 872487267
diff --git a/MODULE.bazel b/MODULE.bazel
index ea81e22..7e7fa33 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -21,27 +21,51 @@
 
 bazel_dep(
     name = "rules_cc",
-    version = "0.2.2",
+    version = "0.2.17",
+)
+bazel_dep(
+    name = "rules_shell",
+    version = "0.6.1",
 )
 bazel_dep(
     name = "abseil-cpp",
-    version = "20250814.1",
+    version = "20260107.1",
 )
 bazel_dep(
     name = "re2",
-    version = "2024-07-02.bcr.1",
+    version = "2025-11-05.bcr.1",
 )
 bazel_dep(
     name = "bazel_skylib",
-    version = "1.7.1",
+    version = "1.9.0",
 )
 bazel_dep(
     name = "platforms",
-    version = "0.0.10",
+    version = "1.0.0",
 )
 bazel_dep(
     name = "flatbuffers",
-    version = "25.2.10",
+    # When updating, check if we still need to override the versions of
+    # rules_foreign_cc and aspect_bazel_lib below.
+    version = "25.12.19",
+)
+
+# Needed to override problematic versions of the modules transitively inherited
+# from flatbuffers. To check if this is still needed, comment out the overrides
+# and run:
+#
+#   bazel mod all_paths rules_foreign_cc aspect_bazel_lib
+#
+# Verify that the version of rules_foreign_cc in the output is at least 0.13.0,
+# and that the version of aspect_bazel_lib in the output is at least 2.19.1.
+single_version_override(
+    module_name = "rules_foreign_cc",
+    version = "0.15.1",
+)
+
+single_version_override(
+    module_name = "aspect_bazel_lib",
+    version = "2.22.5",
 )
 
 # GoogleTest is not a dev dependency, because it's needed when FuzzTest is used
@@ -49,22 +73,19 @@
 # framework can be used without GoogleTest integration as well.
 bazel_dep(
     name = "googletest",
-    version = "1.16.0",
+    version = "1.17.0.bcr.2",
 )
 
-# TODO(lszekeres): Make this a dev dependency, as the protobuf library is only
-# required for testing.
+# Protobuf is not a dev dependency; it is needed for Bazel BUILD rules:
+# https://github.com/protocolbuffers/protobuf/blob/main/bazel/proto_library.bzl
+# https://github.com/protocolbuffers/protobuf/blob/main/bazel/cc_proto_library.bzl
 bazel_dep(
     name = "protobuf",
-    version = "31.1",
-)
-bazel_dep(
-    name = "rules_proto",
-    version = "7.1.0",
+    version = "33.5",
 )
 bazel_dep(
     name = "riegeli",
-    version = "0.0.0-20250706-c4d1f27",
+    version = "0.0.0-20250822-9f2744d",
     repo_name = "com_google_riegeli",
 )
 
@@ -73,12 +94,12 @@
 # module (https://bazel.build/rules/lib/globals/module#bazel_dep).
 bazel_dep(
     name = "nlohmann_json",
-    version = "3.11.3",
+    version = "3.12.0.bcr.1",
     dev_dependency = True,
 )
 bazel_dep(
     name = "antlr4-cpp-runtime",
-    version = "4.12.0",
+    version = "4.13.2",
     dev_dependency = True,
     repo_name = "antlr_cpp",
 )
diff --git a/centipede/BUILD b/centipede/BUILD
index db31345..4e1de94 100644
--- a/centipede/BUILD
+++ b/centipede/BUILD
@@ -15,11 +15,14 @@
 # Description:
 #   Centipede: an experimental distributed fuzzing engine.
 
-load("@rules_proto//proto:defs.bzl", "proto_library")
 load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
 load("@rules_cc//cc:cc_library.bzl", "cc_library")
 load("@rules_cc//cc:cc_static_library.bzl", "cc_static_library")
 load("@rules_cc//cc:cc_test.bzl", "cc_test")
+load("@rules_shell//shell:sh_library.bzl", "sh_library")
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
+load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
+load("@protobuf//bazel:proto_library.bzl", "proto_library")
 load(":instrument.bzl", "cc_uninstrumented_binary")
 
 DEFAULT_VISIBILITY = ["//visibility:public"]
diff --git a/centipede/dso_example/BUILD b/centipede/dso_example/BUILD
index 1a2effe..f789a6c 100644
--- a/centipede/dso_example/BUILD
+++ b/centipede/dso_example/BUILD
@@ -15,6 +15,11 @@
 # Build file for the dso_example
 
 load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
+
+package(default_visibility = ["//visibility:private"])
+
+licenses(["notice"])
 
 # Shared library that we want to fuzz, built with (some) coverage instrumentation.
 # It has unresolved instrumentation symbol(s) which will be resolved dynamically.
diff --git a/centipede/puzzles/puzzle.bzl b/centipede/puzzles/puzzle.bzl
index 9b26d57..a446b96 100644
--- a/centipede/puzzles/puzzle.bzl
+++ b/centipede/puzzles/puzzle.bzl
@@ -14,6 +14,7 @@
 
 """BUILD rule for Centipede puzzles"""
 
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
 load("@com_google_fuzztest//centipede/testing:build_defs.bzl", "centipede_fuzz_target")
 
 def puzzle(name):
@@ -35,7 +36,7 @@
     # repeatability. Each sh_test performs a single run with a single seed, so
     # that the log is minimal.
     for seed in ["1", "2"]:
-        native.sh_test(
+        sh_test(
             name = "run_" + seed + "_" + name,
             srcs = ["run_puzzle.sh"],
             data = [
diff --git a/centipede/testing/BUILD b/centipede/testing/BUILD
index ffffb60..e127773 100644
--- a/centipede/testing/BUILD
+++ b/centipede/testing/BUILD
@@ -15,6 +15,8 @@
 load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
 load("@rules_cc//cc:cc_library.bzl", "cc_library")
 load("@rules_cc//cc:cc_shared_library.bzl", "cc_shared_library")
+load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
 load(":build_defs.bzl", "centipede_fuzz_target")
 
 package(default_visibility = [
diff --git a/centipede/testing/build_defs.bzl b/centipede/testing/build_defs.bzl
index b96efe0..495eefc 100644
--- a/centipede/testing/build_defs.bzl
+++ b/centipede/testing/build_defs.bzl
@@ -20,6 +20,8 @@
 affect all its transitive dependencies as well.
 """
 
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+
 # Change the flags from the default ones to sancov:
 # https://clang.llvm.org/docs/SanitizerCoverage.html.
 def _sancov_transition_impl(settings, attr):
@@ -165,7 +167,7 @@
         # A dummy binary that is going to be wrapped by sancov.
         # __sancov_fuzz_target() below uses the dependencies here
         # to rebuild an instrumented binary using transition.
-        native.cc_binary(
+        cc_binary(
             name = fuzz_target,
             srcs = srcs or [name + ".cc"],
             deps = deps + ["@com_google_fuzztest//centipede:centipede_runner"],
diff --git a/centipede/tools/BUILD b/centipede/tools/BUILD
index 2546bb6..069f0fd 100644
--- a/centipede/tools/BUILD
+++ b/centipede/tools/BUILD
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+
 package(default_compatible_with = ["//buildenv/target:non_prod"])
 
 licenses(["notice"])
diff --git a/cmake/BuildDependencies.cmake b/cmake/BuildDependencies.cmake
index 520a065..25696b8 100644
--- a/cmake/BuildDependencies.cmake
+++ b/cmake/BuildDependencies.cmake
@@ -17,26 +17,26 @@
 include(FetchContent)
 
 set(absl_URL https://github.com/abseil/abseil-cpp.git)
-set(absl_TAG 20250814.1)
+set(absl_TAG 20260107.1)
 
 set(re2_URL https://github.com/google/re2.git)
-set(re2_TAG 2024-07-02)
+set(re2_TAG 2025-11-05)
 
 set(gtest_URL https://github.com/google/googletest.git)
-set(gtest_TAG v1.16.0)
+set(gtest_TAG v1.17.0)
 
 # From https://www.antlr.org/download.html
-set(antlr_cpp_URL https://www.antlr.org/download/antlr4-cpp-runtime-4.12.0-source.zip)
-set(antlr_cpp_MD5 acf7371bd7562188712751266d8a7b90)
+set(antlr_cpp_URL https://www.antlr.org/download/antlr4-cpp-runtime-4.13.2-source.zip)
+set(antlr_cpp_MD5 bac8aef215ffd7b23a1dde2fcfe3c842)
 
 set(proto_URL https://github.com/protocolbuffers/protobuf.git)
-set(proto_TAG v30.2)
+set(proto_TAG v33.5)
 
 set(nlohmann_json_URL https://github.com/nlohmann/json.git)
-set(nlohmann_json_TAG v3.11.3)
+set(nlohmann_json_TAG v3.12.0)
 
 set(flatbuffers_URL https://github.com/google/flatbuffers.git)
-set(flatbuffers_TAG v25.2.10)
+set(flatbuffers_TAG v25.12.19)
 
 if(POLICY CMP0135)
 	cmake_policy(SET CMP0135 NEW)
diff --git a/domain_tests/BUILD b/domain_tests/BUILD
index 623ca0f..df77b1f 100644
--- a/domain_tests/BUILD
+++ b/domain_tests/BUILD
@@ -64,6 +64,7 @@
     tags = ["cpu:4"],
     deps = [
         ":domain_testing",
+        "@protobuf//:differencer",
         "@abseil-cpp//absl/container:flat_hash_set",
         "@abseil-cpp//absl/random",
         "@abseil-cpp//absl/random:bit_gen_ref",
@@ -144,6 +145,7 @@
     hdrs = ["domain_testing.h"],
     visibility = ["@com_google_fuzztest//:__subpackages__"],
     deps = [
+        "@protobuf//:differencer",
         "@abseil-cpp//absl/container:flat_hash_set",
         "@abseil-cpp//absl/hash",
         "@abseil-cpp//absl/random",
@@ -157,7 +159,6 @@
         "@com_google_fuzztest//fuzztest/internal:test_protobuf_cc_proto",
         "@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
         "@googletest//:gtest",
-        "@protobuf",
     ],
 )
 
diff --git a/fuzztest/BUILD b/fuzztest/BUILD
index ad8e66d..c3bd226 100644
--- a/fuzztest/BUILD
+++ b/fuzztest/BUILD
@@ -15,6 +15,7 @@
 # FuzzTest: a coverage-guided fuzzing / property-based testing framework.
 
 load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
 load("@rules_cc//cc:cc_test.bzl", "cc_test")
 
 package(default_visibility = ["//visibility:public"])
diff --git a/fuzztest/internal/BUILD b/fuzztest/internal/BUILD
index abb0a3f..0ea46b8 100644
--- a/fuzztest/internal/BUILD
+++ b/fuzztest/internal/BUILD
@@ -15,7 +15,8 @@
 load("@flatbuffers//:build_defs.bzl", "flatbuffer_library_public")
 load("@rules_cc//cc:cc_library.bzl", "cc_library")
 load("@rules_cc//cc:cc_test.bzl", "cc_test")
-load("@rules_proto//proto:defs.bzl", "proto_library")
+load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
+load("@protobuf//bazel:proto_library.bzl", "proto_library")
 
 package(default_visibility = ["@com_google_fuzztest//:__subpackages__"])
 
@@ -468,6 +469,7 @@
     deps = [
         ":serialization",
         ":test_protobuf_cc_proto",
+        "@protobuf//:differencer",
         "@googletest//:gtest_main",
         "@protobuf",
     ],
diff --git a/fuzztest/internal/domains/BUILD b/fuzztest/internal/domains/BUILD
index dc4c9a4..8434788 100644
--- a/fuzztest/internal/domains/BUILD
+++ b/fuzztest/internal/domains/BUILD
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
 package(default_visibility = ["@com_google_fuzztest//:__subpackages__"])
 
 licenses(["notice"])
diff --git a/tools/BUILD b/tools/BUILD
index 9c3e6be..663b9d6 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -15,6 +15,7 @@
 # Tools.
 
 load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
 
 package(default_visibility = ["//visibility:public"])