diff --git a/patchpanel/BUILD.gn b/patchpanel/BUILD.gn
index b3d6b4f..524a520 100644
--- a/patchpanel/BUILD.gn
+++ b/patchpanel/BUILD.gn
@@ -13,6 +13,7 @@
   ]
   if (use.fuzzer) {
     deps += [
+      ":counters_service_fuzzer",
       ":datapath_fuzzer",
       ":firewall_fuzzer",
       ":multicast_forwarder_fuzzer",
@@ -182,6 +183,16 @@
     sources = [ "firewall_fuzzer.cc" ]
     deps = [ ":libpatchpanel" ]
   }
+
+  executable("counters_service_fuzzer") {
+    configs += [
+      "//common-mk/common_fuzzer",
+      ":target_defaults",
+      ":fuzzing_config",
+    ]
+    sources = [ "counters_service_fuzzer.cc" ]
+    deps = [ ":libpatchpanel" ]
+  }
 }
 
 if (use.test) {
diff --git a/patchpanel/counters_service_fuzzer.cc b/patchpanel/counters_service_fuzzer.cc
new file mode 100644
index 0000000..b2a2188
--- /dev/null
+++ b/patchpanel/counters_service_fuzzer.cc
@@ -0,0 +1,63 @@
+// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <base/at_exit.h>
+#include <base/logging.h>
+#include <fuzzer/FuzzedDataProvider.h>
+
+#include "patchpanel/counters_service.h"
+#include "patchpanel/datapath.h"
+#include "patchpanel/firewall.h"
+#include "patchpanel/minijailed_process_runner.h"
+
+namespace patchpanel {
+namespace {
+
+class Environment {
+ public:
+  Environment() {
+    logging::SetMinLogLevel(logging::LOGGING_FATAL);  // <- DISABLE LOGGING.
+  }
+  base::AtExitManager at_exit;
+};
+
+class RandomProcessRunner : public MinijailedProcessRunner {
+ public:
+  explicit RandomProcessRunner(FuzzedDataProvider* data_provider)
+      : data_provider_{data_provider} {}
+  RandomProcessRunner(const RandomProcessRunner&) = delete;
+  RandomProcessRunner& operator=(const RandomProcessRunner&) = delete;
+  ~RandomProcessRunner() = default;
+
+  int RunSync(const std::vector<std::string>& argv,
+              bool log_failures,
+              std::string* output) override {
+    if (output) {
+      *output = data_provider_->ConsumeRandomLengthString(10000);
+    }
+    return data_provider_->ConsumeBool();
+  }
+
+ private:
+  FuzzedDataProvider* data_provider_;
+};
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  static Environment env;
+
+  FuzzedDataProvider provider(data, size);
+  RandomProcessRunner runner(&provider);
+  Firewall firewall;
+  Datapath datapath(&runner, &firewall);
+  CountersService counters_svc(&datapath, &runner);
+
+  while (provider.remaining_bytes() > 0) {
+    counters_svc.GetCounters({});
+  }
+
+  return 0;
+}
+
+}  // namespace
+}  // namespace patchpanel
