The vulnerability, CVE-2026-81515, describes a Denial of Service (DoS) in Steeltoe's Eureka discovery client where malformed enum, boolean, or timestamp fields in the Eureka registry response can cause the entire deserialization process to fail. This leads to an empty or stale instance list for all connected Steeltoe applications.
The provided commit bc1c3763aacc1fee82ef9932f338ec08dcb00432 directly addresses this issue. Analysis of the commit reveals changes in three key deserialization converter files:
BoolStringJsonConverter.cs: The Read method was vulnerable because it used bool.Parse directly on string values. If a non-boolean string was encountered, it would throw an exception, halting deserialization.
LongStringJsonConverter.cs: Similarly, the Read method here used long.Parse directly on string values. An invalid numeric string would cause an exception and deserialization failure.
JsonInstanceInfoConverter.cs: This file contained the most significant vulnerability. Its Read method attempted to deserialize an entire list of JsonInstanceInfo objects as a single unit. If any instance within this list contained a malformed field (which would trigger exceptions in converters like BoolStringJsonConverter or LongStringJsonConverter), the entire list deserialization would fail. The patch introduces a TryDeserializeInstance helper and iterates through each instance, deserializing them individually within a try-catch block. This ensures that a single malformed instance does not prevent other valid instances from being processed.
When the vulnerability is exploited, a malicious or malformed entry in the Eureka registry would cause these Read methods to throw exceptions during the deserialization of the registry response. A profiler would show these specific Read methods at the top of the stack trace when the deserialization failure occurs, as they are the points where the invalid data is encountered and the exceptions are thrown, leading to the DoS condition.