The vulnerability lies in the deserialization of untrusted data within the Apache Seata Fury serializer module. The root cause, as revealed by the patch in commit d2a18aef82c08535e4134642070c39d98654f0f6, is an inadequate security check in the FurySerializerFactory. This factory configured the Fury serializer instance with a weak class whitelisting mechanism that used String.contains() for validation. This is a flawed approach, as it can be easily bypassed by an attacker crafting a malicious class name that includes a whitelisted class name as a substring.
The actual exploitation of this vulnerability occurs when the deserialize method of the FurySerializer class is invoked with a malicious byte stream. This method, relying on the insecurely configured Fury instance from the factory, would then proceed to deserialize an arbitrary, untrusted object, which could lead to remote code execution.
Therefore, while the coding mistake is in the FurySerializerFactory, the function that would appear in a runtime profiler during an exploit is org.apache.seata.serializer.fury.FurySerializer.deserialize. This is the function that directly processes the untrusted input and triggers the deserialization process.