Safeguard
Vulnerability Analysis•

CVE-2023-51389: Critical YAML Deserialization in Apache HertzBeat

CVE-2023-51389 is a critical SnakeYAML deserialization flaw in Apache HertzBeat before 1.4.1, reachable at /define/yml. Upgrade to 1.4.1 or later.

Safeguard Security Team
3 min read

CVE-2023-51389 is a critical severity (CVSS 9.8) YAML deserialization flaw in Apache HertzBeat before 1.4.1. The /define/yml interface parses YAML with SnakeYAML and no security configuration. Upgrade to 1.4.1 or later, and keep untrusted input away from the YAML loader.

What's affected

The GitHub advisory, titled SnakeYaml Deser RCE, lists HertzBeat versions before 1.4.1 as affected and 1.4.1 as patched. At the /define/yml interface, SnakeYAML parses YAML content without safe configuration, resulting in a deserialization vulnerability.

The sources differ on severity. NVD scores it 9.8 (Critical), while the GitHub advisory labels it High. Treat it as critical until you have patched.

CVSS for this entry is 9.8 (Critical) with vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.

How to check if you're exposed

Find the HertzBeat version in the console or the container image tag.

docker ps --format '{{.Names}} {{.Image}}'

Any version before 1.4.1 is affected. Check whether the web service is reachable from untrusted networks, and review access logs for requests to the /define/yml path.

What to do now

  1. Find every HertzBeat deployment and its version.
  2. Upgrade to 1.4.1 or later.
  3. For your own code that uses SnakeYAML, follow the advisory's guidance: do not let attacker-controlled input reach yaml.load, and construct the parser with a SafeConstructor.
  4. Restrict network access to the console and review logs for the /define/yml path.
  5. Rotate credentials held by the monitoring system if you find suspicious requests.
  6. Run the free in-browser dependency scan at gold.safeguard.sh/scan against your manifests, and look the entry up in the Safeguard Gold directory to see how it is tracked.

Why it matters

CWE-502 is deserialization of untrusted data. A parser that can build arbitrary objects from input lets the sender influence which classes are created. The fix is to restrict the parser to a safe set of types, or to avoid deserializing untrusted content.

CWE-502 is deserialization of untrusted data. A parser that can build arbitrary objects from input lets the sender influence which classes are created, and some classes on a typical Java classpath do harmful things when constructed. The advisory points to the SafeConstructor allowlist of types as the way to restrict this.

The NVD vector needs no privileges and no interaction. The record does not mark it as exploited in the wild, and I read no source that says so. It shares its fix with CVE-2023-51388.

The record does not mark this CVE as listed in the CISA Known Exploited Vulnerabilities catalog, and no source I read reports exploitation in the wild.

Quick check

What is the safest way to parse YAML in Java?

The advisory recommends constructing the parser with a SafeConstructor and keeping attacker-controlled input away from yaml.load.

Which version fixes it?

HertzBeat 1.4.1.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

We email you a link to confirm, and only then add you to the list. Unsubscribe in one click. Privacy

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.